Что не так с моей программой для начинающих Brainfuck?
Я работал над этой проблемой программирования: http://www.codeabbey.com/index/task_view/summing-up
Который в основном заявляет:
Input data has two values A and B in the single line.
Output should have the sum A+B printed into it.
Additionally after the stop the program should have values A, B, A+B in the cells 0, 1 and 2 respectively.
Например, ввод будет выглядеть так:
9 26
Теперь, я думаю, что я неправильно понимаю проблему или решение, потому что я считаю, что решение должно быть 9 26 35
где 9, 26 и 35 находятся в своих собственных клетках.
Мое решение возвращается 9 26 35
и я верю в правильные ячейки (0,1 и 2 с уважением), но я получаю неправильный ответ. Может кто-нибудь, пожалуйста, посмотрите на проблему и мой код и скажите мне, где я иду не так?
Код:
;:>;:><[-<+>]<:
2 ответа
Похоже, что выход должен иметь только A+B
напечатано, а не A
, B
, а также A+B
, как вы делаете с :
,
И ваш результат, кажется, будет иметь A+B
в ячейке 0 и 0 в ячейке 1 (по сути, то же самое, что и пример кода).
><
просто отменяется.
Я попытался подключить это к паре онлайн-переводчиков. Здесь есть один:
и еще один здесь:
http://esoteric.sange.fi/brainfuck/impl/interp/i.html
В обоих случаях мне нужно было немного изменить свой набор символов ->: становится. а также; становится,
Выход из обоих был
9 Y
Обратите внимание, что 35 - 9 = 24, а Y - 24-я буква алфавита. Я думаю, что вы выводите число "35" и интерпретируете его как букву.
Я бы попробовал изменить программу так, чтобы вы выводили буквально однозначные цифры ответа - т.е. выведите 3, затем выведите 5 вместо числового "35" (но оставьте числовое значение в ячейке 2 в конце). Другими словами, ваш текстовый вывод должен быть отформатированной версией значений в памяти, а не просто выводить числовые значения напрямую.