В качестве отладчика/тестовой программы для моей реализации brainf*ck я создал следующий счетный цикл:
+[[>+]+]
С однобайтными, оберточными клетками и 30k клетками с оберточной оберткой, это создает бесконечный счетный цикл. Он устанавливает каждую ячейку в 1, затем каждую ячейку в 2 и т.д..
Проблема в том, что при достижении 255 внутренний цикл увеличивает ячейку до 0, а затем внешний цикл сразу же увеличивает ее до 1. Это действует как "двойной шаг", когда он переполняется, а не как одиночный шаг. Это единственный способ заставить цикл бесконечно продолжать с таким напряжением программы.
Счетчик для каждой ячейки идет 0 -> 1 -> 2 ... 254 -> 255 -> 1 ...
Хотелось бы, чтобы он проходил 0 -> 1 -> 2 ... 254 -> 255 -> 0 -> 1 ...
Просто трудно продолжать цикл, когда текущая ячейка равна нулю. Я играл с вариациями на одну и ту же тему, но ни одна из них не получается правильной.
Эта конкретная программа - всего лишь тривиальная счетная программа для тестирования, но что действительно поможет мне с будущими программами, так это знание того, как инвертировать петлю, как мне нужно для того, чтобы этот счетный цикл заработал.