2013-05-24 2 views
1

Я пишу интерпретатор Brainfuck в Python, и я в настоящее время тестирую этот код:Brainf * интерпретация входа ска

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

с этим входом:

43 

Польского Википедия говорит, результат должен быть 7 , но что-то здесь не так. Как я должен рассматривать ввод? Как 4 и 3, так и «4» и «3» (52 и 51)? Если я обрабатываю входные символы как целые числа, тогда результат равен -41, потому что после первого цикла [0] есть -44 и [1] равно 0, тогда [1] становится 3, и мы добавляем, что от 3 до -44, что приводит к - 41.

С другой стороны, если я обрабатываю входные символы как коды ASCII, то после первого цикла [0] равно 4, а [1] равно 0, тогда [1] становится 51, и мы добавляем, что от 51 до 4, что приводит к 55. (этот интерпретатор JavaScript также дает результат 55: https://www.nayuki.io/page/brainfuck-interpreter-javascript)

Однако я загрузил некоторый интерпретатор, написанный на C, и он дает результат 7, то же, что и в Википедии ... так что я смущен. Существует такой переводчик: http://pastebin.com/aasxLppa, также этот интерпретатор дает результат 7: brainfuck.tk -.-

ответ

7

Входы: 4 и 3, в виде байтов. Вход берется в качестве ASCII символов, значения, таким образом, 52 и 51.

  • первый вход уменьшается на 8, 6 раз, так что 52 - 48 = 4.

  • второй вход добавлено к первому входу, поэтому 4 плюс 51 = 55.

  • 55 записывается на выход, и это ASCII 7.

Программа суммирует две цифры ASCII.

Полноправный переводчик JavaScript. Вы просматривали первый регистр, который содержит значение байта 55, но в поле показан 7, символ ASCII.

Смежные вопросы