mirror of
https://github.com/Open-Argon/argon-v3.git
synced 2025-12-06 00:46:07 +00:00
45 lines
1.4 KiB
Plaintext
45 lines
1.4 KiB
Plaintext
let brainfuck(INPUT) = do
|
|
memory = [0] * 30*1000
|
|
pointer = 0
|
|
output = ""
|
|
i = 0
|
|
while (i < INPUT.length) do
|
|
if (INPUT[i] == ">") do
|
|
pointer += 1
|
|
else if (INPUT[i] == "<") do
|
|
pointer -= 1
|
|
else if (INPUT[i] == "+") do
|
|
memory[pointer] += 1
|
|
else if (INPUT[i] == "-") do
|
|
memory[pointer] -= 1
|
|
else if (INPUT[i] == ".") do
|
|
output += chr(memory[pointer])
|
|
else if (INPUT[i] == ",") do
|
|
memory[pointer] = ord(input())
|
|
else if (INPUT[i] == "[") do
|
|
if (memory[pointer] == 0) do
|
|
count = 1
|
|
while (count > 0) do
|
|
i += 1
|
|
if (INPUT[i] == "[") do
|
|
count += 1
|
|
else if (INPUT[i] == "]") do
|
|
count -= 1
|
|
else if (INPUT[i] == "]") do
|
|
if (memory[pointer] != 0) do
|
|
count = 1
|
|
while (count > 0) do
|
|
i -= 1
|
|
if (INPUT[i] == "]") do
|
|
count += 1
|
|
else if (INPUT[i] == "[") do
|
|
count -= 1
|
|
else do
|
|
pass
|
|
i += 1
|
|
term.print(memory)
|
|
return output
|
|
|
|
term.time("brainfuck")
|
|
term.plain.oneLine(brainfuck(input()))
|
|
term.timeEnd("brainfuck") |