M = 256 i = p = s = 0 h = Hash.new(0) m = [0] * M while i < str.length case str[i] when ?+ then m[p] += 1 when ?- then m[p] -= 1 when ?[ then h[s += 1] = i when ?] then m[p].zero? ? s -= 1 : i = h[s] when ?> then p += 1 when ?< then p -= 1 when ?. then $><<m[p].chr when ?, then m[p] += $<.getc.ord end i += 1 end