Загрузка...

brainfuck interpreter in python

Thread in Python created by FSUGEE Nov 28, 2021. (bumped Jan 1, 2025) 346 views

  1. FSUGEE
    FSUGEE Topic starter Nov 28, 2021 БОМБЕР https://zelenka.guru/threads/5264136 :omg: 11,308 Jun 21, 2020
    Python
    def block(code):
    opened = []
    blocks = {}
    for i in range(len(code)):
    if code[i] == '[':
    opened.append(i)
    elif code[i] == ']':
    blocks[i] = opened[-1]
    blocks[opened.pop()] = i
    return blocks

    def parse(code):
    return ''.join(c for c in code if c in '><+-.,[]')

    def run(code):
    code = parse(code)
    x = i = 0
    bf = {0: 0}
    blocks = block(code)
    l = len(code)
    while i < l:
    sym = code[i]
    if sym == '>':
    x += 1
    bf.setdefault(x, 0)
    elif sym == '<':
    x -= 1
    elif sym == '+':
    bf[x] += 1
    elif sym == '-':
    bf[x] -= 1
    elif sym == '.':
    print(chr(bf[x]), end='')
    elif sym == ',':
    bf[x] = int(input('Input: '))
    elif sym == '[':
    if not bf[x]: i = blocks[i]
    elif sym == ']':
    if bf[x]: i = blocks[i]
    i += 1

    code = input()
    run(code)
    > — сдвинуть указатель на следующую ячейку.
    < — сдвинуть указатель на предыдущую ячейку.
    + — увеличить значение текущей ячейки на 1.
    — — уменьшить значение текущей ячейки на 1.
    . — вывести значение текущей ячейки.
    , — записать значение в текущую ячейку(=input).
    [ — начало цикла, который выполняется пока значение текущей ячейки не ноль.
    ] — конец цикла. Если значение текущей ячейки ноль, то цикл прекращается, иначе — выполняется от предыдущего знака [.

    Пример работы:

    ++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

    [IMG]
     
  2. lleryX
    lleryX Nov 29, 2021 22 Oct 26, 2021
    Ебать бы мощный
     
    1. lleryX
      lleryX, Этож надо ж было такое в голову придти
    2. FSUGEE Topic starter
      lleryX, ++++++++++[>++++++++>+++++++++++>++++++++++>+++++++++++>++++++++++>++++++++++>+++++++++++>++++<<<<<<<<-]>+++.>++.>---.>+++++.>+++++.>--.>+.>+.
    3. 3dsboy08
      lleryX, так это код с гитхаба :finger_up:
  3. vtlstolyarov
    Код
    >++++[>++++[<<++++>>-]<-]<+.
    должен вывести букву A, а твой интерпретатор выводит что-то другое
     
    1. FSUGEE Topic starter
      vtlstolyarov, [IMG]
      не знаю в чем у тебя проблема, у меня всё работает
    2. vtlstolyarov
      FSUGEE, да, действительно, сорри, видимо что-то неправильно скопировал
Top
Loading...