Skip to content

Instantly share code, notes, and snippets.

@sh4869
Last active August 29, 2015 14:04
Show Gist options
  • Save sh4869/24facd3496a6d9614f3e to your computer and use it in GitHub Desktop.
Save sh4869/24facd3496a6d9614f3e to your computer and use it in GitHub Desktop.
ジンジャエールハッカーソンでの進捗
#coding:utf-8
class BrainFuck
def set(src)
@mark = 0
@source = src
@point = 0
@mem = Array.new(3000,0)
end
def compile
str = @source[@mark]
case str
when ">"
@point += 1
when "<"
@point -= 1
when "+"
@mem[@point] += 1
when "-"
@mem[@point] -= 1
when "."
print @mem[@point].chr
when "["
if @mem[@point] == 0
flag = 1
while flag > 0
@mark += 1
case @source[@mark]
when "["
flag += 1
when "]"
flag -= 1
end
end
end
when "]"
if @mem[@point] != 0
flag = 1
while flag > 0
@mark -= 1
case @source[@mark]
when "["
flag -= 1
when "]"
flag += 1
end
end
end
end
@mark += 1
end
def bfdo
while @mark < @source.length
compile
end
end
end
brainfuck = BrainFuck.new
line = gets
brainfuck.set(line)
brainfuck.bfdo
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment