Skip to content

Instantly share code, notes, and snippets.

module Kernel
alias :_require :require
def require(feature)
_require feature
rescue LoadError
f = open(feature) rescue open(feature+'.rb')
eval f.read.gsub(/\be(n{2,})d\b/) { 'end;'*$1.size }
end
end
# fib plugin
Earthquake.init do
fibo = ->m,a=1,b=1 { Enumerator.new { |y| loop{ y << a; a,b = b,a+b } }.take m }
command :fib do |m|
puts "%d".c(rand(6).+31) % fibo[m[1].to_i].pop
end
command :fibs do |m|
fibs = fibo[m[1].to_i].map { |n| n.to_s.c(rand(6)+31) }
@melborne
melborne / rotate.coffee
Created September 3, 2011 09:52
Processing in CoffeeScript
numbers = [13.4, 14.5, 15.0, 23.2, 30.9, 31.3, 32.9, 35.1, 34.3];
drawing = (p) ->
p.setup = ->
p.size(500,500,p.P3D)
p.background(0)
p.draw = ->
p.background(0)
p.lights()
@melborne
melborne / snippet.rb
Created November 19, 2011 06:26
em-http
require "em-http"
require "pp"
$stdout.sync = true
class KeyboardHandler < EM::Connection
include EM::Protocols::LineText2
def post_init
print "> "
end
def signature(word)
word.downcase.chars.sort.join.intern
end
def build_anagrams(words)
words.map { |word| [signature(word), word] }
.inject({}) { |h, (sign, word)| h[sign] ||= []; h[sign] << word; h }
.select { |sign, words| words.size > 1 }
end
@melborne
melborne / exclamation.rb
Created December 5, 2011 14:00
Exclamation Factorial
require "mathn"
class Integer
def !
(1..self).inject(:*)
end
end
f1 = ->a,b,c{ a - b / c }
f2 = ->a,b,c{ (a - b) / c }
@melborne
melborne / uniq_words_for_wordle.rb
Created December 10, 2011 06:09
Class for building a word dictionary
require_relative "word_dictionary"
texts = %w(alices_adventures_in_wonderland.txt
pride_and_prejudice.txt
the_adventures_of_sherlock_holmes.txt
frankenstein.txt
hamlet.txt
peter_pan.txt)
bases = %w(english_literature.txt analyze_people_on_sight.txt)
@melborne
melborne / graph_anagram.rb
Created December 11, 2011 10:21
Visualize most anagrams set with GraphAz
require "graphaz"
require_relative "anagram"
mosts = Anagram.new.most(:size => 5, :sign => true)
ga = GraphAz.new("Anagram", :use => "neato")
ga.gnode[:shape] = "circle"
mosts.each do |sign, words|
words.each { |word| ga.add "#{sign} => #{word}" }
end
@melborne
melborne / image_util.rb
Created December 13, 2011 09:56
get resized image pixel data
require "RMagick"
include Magick
class Integer
def to_hex
self.to_s(16)[/^../]
end
end
class ImageUtil
@melborne
melborne / gun.rb
Created December 17, 2011 14:39
Revolver for Russian Roulette
class Gun
class ChamberError < StandardError; end
attr_reader :chamber
def initialize
@chamber = []
end
def set_cartridge
raise ChamberError, 'The chamber is full' unless @chamber.empty?