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