RosettaCodeData/Task/Execute-Brain-/Lua/execute-brain-.lua
2026-04-30 12:34:36 -04:00

22 lines
547 B
Lua

local repl = {
['>'] = 'ptr = ptr + 1',
['<'] = 'ptr = ptr - 1',
['+'] = 'mem[ptr] = mem[ptr] + 1',
['-'] = 'mem[ptr] = mem[ptr] - 1',
['['] = 'while mem[ptr] ~= 0 do',
[']'] = 'end',
['.'] = 'io.write(string.char(mem[ptr]))',
[','] = 'mem[ptr] = (io.read(1) or "\\0"):byte()',
}
local prog = {[[
local mem = setmetatable({}, { __index = function() return 0 end})
local ptr = 1
]]}
local source, i = io.read('*all'), 1
for char in source:gmatch"[<>+.,%[%]%-]" do
i, prog[i] = i+1, repl[char]
end
load( table.concat(prog, " ") )()