Execute HQ9+/Ruby: Difference between revisions

m
Fixed syntax highlighting.
m (Categorization now in master page)
m (Fixed syntax highlighting.)
 
(2 intermediate revisions by 2 users not shown)
Line 1:
{{implementation|HQ9+}}{{collection|RCHQ9+}}
This [[Ruby]] program implements an [[HQ9+]] interpreter.
<langsyntaxhighlight lang="ruby">class HQ9plus
dispatchDispatch = Hash.new(:unknown).merge({
dispatch[ 'h'] => :hello,
dispatch[ 'q'] => :quine,
dispatch[ '9'] => :beer,
dispatch[ '+'] => :accumulate
})
 
def initialize(opts={})
@program = if opts[:program] then opts[:program]
elsif opts[:filename] then File.read(opts[:filename])
else ''
end
@accumulator = 0
end
Line 12 ⟶ 19:
 
def run
@program.downcase.each_char do {|char| self.send Dispatch[char]}
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
 
Line 46 ⟶ 45:
hq9 = HQ9plus.new(:program => '+qhp;+9Q')
hq9.run
puts hq9.accumulator</langsyntaxhighlight>
 
Output:
9,476

edits