Бесконечный цикл подсчета в Brainfuck

В качестве отладчика/тестовой программы для моей реализации brainf*ck я создал следующий счетный цикл:

+[[>+]+]

С однобайтными, оберточными клетками и 30k клетками с оберточной оберткой, это создает бесконечный счетный цикл. Он устанавливает каждую ячейку в 1, затем каждую ячейку в 2 и т.д..

Проблема в том, что при достижении 255 внутренний цикл увеличивает ячейку до 0, а затем внешний цикл сразу же увеличивает ее до 1. Это действует как "двойной шаг", когда он переполняется, а не как одиночный шаг. Это единственный способ заставить цикл бесконечно продолжать с таким напряжением программы.

Счетчик для каждой ячейки идет 0 -> 1 -> 2 ... 254 -> 255 -> 1 ...

Хотелось бы, чтобы он проходил 0 -> 1 -> 2 ... 254 -> 255 -> 0 -> 1 ...

Просто трудно продолжать цикл, когда текущая ячейка равна нулю. Я играл с вариациями на одну и ту же тему, но ни одна из них не получается правильной.

Эта конкретная программа - всего лишь тривиальная счетная программа для тестирования, но что действительно поможет мне с будущими программами, так это знание того, как инвертировать петлю, как мне нужно для того, чтобы этот счетный цикл заработал.

6
задан bgrag 7 September 2011 в 22:54
поделиться