# coding: utf-8 @eip = 0 @before_bracket = 0 @is_skip = false @memory = Array.new(30000) { 0 } @pointer = 0 code = "+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-. ------------.<++++++++.--------.+++.------.--------.>+." def get_elem @memory[@pointer] end def brainfuck command if @is_skip if command == "]" @is_skip = false end return end case command when "." print get_elem.chr when "+" @memory[@pointer] += 1 when "-" @memory[@pointer] -= 1 when ">" @pointer += 1 when "<" @pointer -= 1 when "[" if get_elem == 0 @is_skip = true else @before_bracket = @eip end when "]" if get_elem != 0 @eip = @before_bracket end end end while @eip < code.length ch = code[@eip] brainfuck(ch) @eip += 1 end