Execute HQ9+/Ruby: Difference between revisions
Content added Content deleted
(add Ruby) |
m (formatting) |
||
Line 2: | Line 2: | ||
<lang ruby>class HQ9plus |
<lang ruby>class HQ9plus |
||
def initialize(opts={}) |
def initialize(opts={}) |
||
@program = if opts[:program] then opts[:program] |
@program = if opts[:program] then opts[:program] |
||
elsif opts[:filename] then File.read(opts[:filename]) |
elsif opts[:filename] then File.read(opts[:filename]) |
||
else '' |
else '' |
||
Line 11: | Line 11: | ||
def run |
def run |
||
dispatch = Hash.new(:unknown) |
|||
dispatch['h'] = :hello |
|||
dispatch['q'] = :quine |
|||
dispatch['9'] = :beer |
|||
dispatch['+'] = :accumulate |
|||
@program.downcase.each_char do |char| |
@program.downcase.each_char do |char| |
||
send |
self.send dispatch[char] |
||
end |
end |
||
end |
end |
Revision as of 17:50, 21 July 2009
Execute HQ9+/Ruby is part of RCHQ9+. You may find other members of RCHQ9+ at Category:RCHQ9+.
<lang ruby>class HQ9plus
def initialize(opts={}) @program = if opts[:program] then opts[:program] elsif opts[:filename] then File.read(opts[:filename]) else end @accumulator = 0 end attr_reader :accumulator
def run dispatch = Hash.new(:unknown) dispatch['h'] = :hello dispatch['q'] = :quine dispatch['9'] = :beer dispatch['+'] = :accumulate
@program.downcase.each_char do |char| self.send dispatch[char] end end
def hello puts "Hello, world!" end
def quine puts @program end
def beer puts '99 bottles here ...' end
def accumulate @accumulator += 1 end
def unknown # do nothing end
end
hq9 = HQ9plus.new(:program => '+qhp;+9Q') hq9.run puts hq9.accumulator</lang>
Output:
+qhp;+9Q Hello, world! 99 bottles here ... +qhp;+9Q 2