Skip to content

Instantly share code, notes, and snippets.

@skatenerd
skatenerd / gist:3928714
Created October 21, 2012 22:18
binary search
(ns search.core
(:use clojure.test))
(defn truncated-half-count [items]
(int (/ (count items) 2)))
(defn middle-index [items]
(truncated-half-count items))
(defn middle-item [items]
1.9.3-p125 :001 > require 'fog'
=> true
1.9.3-p125 :002 > Fog::Compute::AWS
=> Fog::Compute::AWS
1.9.3-p125 :003 > Fog::Compute::AWS::SecurityGroup
NameError: uninitialized constant Fog::Compute::AWS::SecurityGroup
from (irb):3
from /Users/8thlight/.rvm/rubies/ruby-1.9.3-p125/bin/irb:16:in `<main>'
1.9.3-p125 :004 > c = Fog::Compute.new({:provider => "AWS", :aws_access_key_id => "a", :aws_secret_access_key => "abc"})
=> #<Fog::Compute::AWS::Real:70315738224820 @use_iam_profile=nil @aws_access_key_id="a" @aws_credentials_expire_at=nil @connection_options={} @region="us-east-1" @instrumentor=nil @instrumentor_name="fog.aws.compute" @version="2012-07-20" @endpoint=nil @host="ec2.us-east-1.amazonaws.com" @path="/" @persistent=false @port=443 @scheme="https" @connection=#<Fog::Connection:0x007fe751330cd0 @excon=#<Excon::Connection:0x007fe751330c80 @connection={:chunk_size=>1048576, :connect_timeout=>60, :headers=>{}, :instrumentor_name=>"excon", :mock=>false, :nonblock=>true, :read_timeout=>60
@skatenerd
skatenerd / gist:4047998
Created November 9, 2012 20:23
Coinfactorizer
class Coinfactorizer
def self.change(target, domain)
answer = {}
answer_data = domain.elements(target).reduce({target: target, answer: {}}) do |aggregator, domain_element|
new_target, quantity_of_element = domain.destroy_domain_element_from_total(aggregator[:target], domain_element)
old_answer = aggregator[:answer]
new_answer = assoc(old_answer, domain_element, quantity_of_element) if quantity_of_element > 0
new_answer ||= old_answer
{target: new_target, answer: new_answer}
end
@skatenerd
skatenerd / gist:4048003
Created November 9, 2012 20:24
Coinfactorizer Spec
require 'coinfactorizer'
describe Coinfactorizer do
context "coins" do
it "changes 0" do
Coinfactorizer.change(0, Coins).should == {}
end
it "changes 1" do
Coinfactorizer.change(1, Coins).should == {1 => 1}
end
@skatenerd
skatenerd / gist:4050185
Created November 10, 2012 06:32
Coercion
1.9.3-p194 :001 > [1,2,3,4]["hello"]
TypeError: can't convert String into Integer
from (irb):1:in `[]'
from (irb):1
@skatenerd
skatenerd / gist:4116286
Created November 20, 2012 05:52
rspec and pokemon
require 'rspec'
class ExceptionSad
def self.run(thing)
thing.hello
thing.wtf
rescue Exception => e
end
end
@skatenerd
skatenerd / trollchanger.clj
Last active December 12, 2015 01:48
Coin changer with minimal complexity
(ns trollchanger.core)
(def change-hash
{
1 [1]
2 [1 1]
3 [1 1 1]
4 [1 1 1 1]
5 [5]
6 [5 1]
@skatenerd
skatenerd / thread-local-bindings.clj
Last active December 14, 2015 03:59
wtf, var wtf, pmap?
(ns parallel-clojure.core-test
(:use clojure.test
parallel-clojure.core))
(def ^:dynamic set-me 1)
(deftest varset-test
(testing "value does not go into new thread"
(binding [set-me 99]
(let [thread (Thread. (fn [] (is (= set-me 1))))]
class Foo < Hash
def initialize(input_hash)
self.class[input_hash]
end
end
Foo[{h: 22}]
# => {:h=>22}
Foo.new({h: 22})
1.9.3p194 :001 > def biz
1.9.3p194 :002?> 22
1.9.3p194 :003?> end
=> nil
1.9.3p194 :004 > biz = biz
=> nil
1.9.3p194 :005 > biz
=> nil