Загрузка...

Интерпретатор brainfuck на python

Тема в разделе Python создана пользователем FSUGEE 28 ноя 2021. (поднята 1 янв 2025) 341 просмотр

  1. FSUGEE
    FSUGEE Автор темы 28 ноя 2021 БОМБЕР https://zelenka.guru/threads/5264136 :omg: 11 308 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]
     
    28 ноя 2021 Изменено
  2. lleryX
    lleryX 29 ноя 2021 22 26 окт 2021
    Ебать бы мощный
     
    1. lleryX
      lleryX, Этож надо ж было такое в голову придти
    2. FSUGEE Автор темы
      lleryX, ++++++++++[>++++++++>+++++++++++>++++++++++>+++++++++++>++++++++++>++++++++++>+++++++++++>++++<<<<<<<<-]>+++.>++.>---.>+++++.>+++++.>--.>+.>+.
    3. 3dsboy08
      lleryX, так это код с гитхаба :finger_up:
  3. vtlstolyarov
    vtlstolyarov 19 май 2022 468 8 янв 2022
    Код
    >++++[>++++[<<++++>>-]<-]<+.
    должен вывести букву A, а твой интерпретатор выводит что-то другое
     
    1. FSUGEE Автор темы
      vtlstolyarov, [IMG]
      не знаю в чем у тебя проблема, у меня всё работает
    2. vtlstolyarov
      FSUGEE, да, действительно, сорри, видимо что-то неправильно скопировал
Top
Загрузка...