# i -- raising an HelloWorldError
class HelloWorldError < StandardError
def to_s
"Hello, World!"
end
end
module Kernel
def raise(e)
puts e
end
end
raise HelloWorldError.new
# ii -- a lost and found HelloWorld
class HelloWorld
def to_s
"Hello, World!"
end
end
HelloWorld.new
ObjectSpace.each_object { |o| puts o if o.is_a?(HelloWorld) }
# iii -- a little curry
hello = lambda { |a| "Hello, #{a.call}"}
world = lambda { "World!" }
puts hello.call(world)
# iv -- in only one line but to ruby instances
puts `ruby -e 'puts "Hello, World!"'`
# v -- and finally a probabilistic approach
# beware this one is not tested yet!
# which means the the test is still running and at
# least it didn't raise any errors so far ;)
goal = "Hello, World!\n"
bytes = goal.split(//).map { |e| e[0] }.uniq
seed = 0
until false
srand(seed)
i = 0
while i < goal.size
c = rand(bytes.size)
break if bytes[c] != goal[i]
i += 1
end
break if i == goal.size
seed += 1
end
goal.size.times { print bytes[rand(bytes.size)].chr }
g phil