Skip to content

Instantly share code, notes, and snippets.

@mikeebert
mikeebert / gist:3808852
Created October 1, 2012 00:44
Minimax Clojure (no optimizations)
(defn minimax-score [player opponent board depth]
(or (value board player opponent depth)
(let [values (map #(minimax-score opponent player
(place-move % (:piece opponent) board) (inc depth))
(available-spaces board))]
(best-score opponent values))))
(defn minimax-move [maxplayer minplayer board]
(let [values (map #(minimax-score maxplayer minplayer
(place-move % (:piece maxplayer) board) 1)
@mikeebert
mikeebert / gist:3808840
Created October 1, 2012 00:41
Minimax Ruby
def get_minimax_move(board,max_symbol,min_symbol)
set_min_and_max_players(max_symbol, min_symbol)
best_score_for_max = @max.starting_score
alpha = -100
beta = 100
depth = 0
board.available_spaces.each do |space|
test_board = copy(board)
test_board.place_move(@max.symbol, space)
@mikeebert
mikeebert / gist:3102381
Created July 13, 2012 02:48
Warden + Sinatra Setup (complete)
require 'sinatra'
require 'warden'
class YourApp < Sinatra::Application
get "/" do
erb 'index'.to_sym
end
get "/protected_pages" do
@mikeebert
mikeebert / gist:3102311
Created July 13, 2012 02:22
Warden & Sinatra Routes
get "/login" do
erb '/login'.to_sym
end
post "/session" do
warden_handler.authenticate!
if warden_handler.authenticated?
redirect "/users/#{warden_handler.user.id}"
else
redirect "/"
@mikeebert
mikeebert / gist:3102301
Created July 13, 2012 02:17
Warden and Sinatra Example 2 (still not complete)
require 'sinatra'
require 'warden'
class YourApp < Sinatra::Application
use Rack::Session::Cookie
use Warden::Manager do |manager|
manager.default_strategies :password
manager.failure_app = YourApp
manager.serialize_into_session {|user| user.id}
@mikeebert
mikeebert / gist:3102275
Created July 13, 2012 02:05
A Warden Strategy
Warden::Strategies.add(:password) do
def valid?
params["email"] || params["password"]
end
def authenticate!
user = Datastore.for(:user).find_by_email(params["email"])
if user && user.authenticate(params["password"])
success!(user)
else
@mikeebert
mikeebert / gist:3102271
Created July 13, 2012 02:03
Setting up the Warden Manager
use Warden::Manager do |manager|
manager.default_strategies :password
manager.failure_app = YourApp
manager.serialize_into_session {|user| user.id}
manager.serialize_from_session {|id| Datastore.for(:user).find_by_id(id)}
end
Warden::Manager.before_failure do |env,opts|
env['REQUEST_METHOD'] = 'POST'
end
@mikeebert
mikeebert / gist:3102199
Created July 13, 2012 01:35
Start of Sinatra-Warden
require 'sinatra'
require 'warden'
class YourApp < Sinatra::Application
use Rack::Session::Cookie
get "/" do
erb 'index'.to_sym
end
datastore = {:users => {1 => {:name => "Mike", :email =>"[email protected]"},
2 => {:name => "John", :email => "[email protected]"}},
:tasks => {1 => {:description => "First task"},
2 => {:description => "Second task"}}}
@mikeebert
mikeebert / gist:2960172
Created June 20, 2012 14:30
Sinatra Controller Type RSpec test
describe "Foundry" do
def app
@app ||= Foundry
end
#...some other tests...
it "should send the form values to a new User Interactor and create a user" do
params = {"name" => "Test", "email" => "[email protected]"}