Ваша задача состоит в том, чтобы написать кусок кода , который нули текущей ячейки в варианте Brainfuck , что каждая ячейка может содержать подписанное целое сколь угодно большой величину, вместо нормальных 0 до 255.
Вы можете предположить, что слева находятся l ячеек и r ячеек справа от текущей ячейки, которые изначально равны нулю. Ваша программа может получить доступ только к этим ячейкам l + r +1. После того, как ваш код заканчивается, он должен оставить ноль дополнительных ячеек l + r и указатель на текущую ячейку в исходной позиции.
Вы не можете использовать любой ввод / вывод.
Код с наименьшим l + r выигрывает. Если есть связь, выигрывает самый короткий код. Рекомендуется также указать временную сложность вашей программы для справки, где n - абсолютное значение исходного целого числа в текущей ячейке.
Полезные инструменты
Вы можете протестировать программу Brainfuck в этом варианте, используя этот интерпретатор на TIO от mbomb007 .
Вы также можете использовать переводчика в этом ответе по будке (другие ответы Python, вероятно, также работают, но я не проверял).
источник
Ответы:
l + r = 0 + 2 = 2,
555351 байтl + r = 1 + 2 = 3,
4644 байтаМой собственный алгоритм. Указатель должен начинаться с номера, который нужно обнулить. Временная сложность O (n ^ 2).
Как это работает:
n
.n+1
.n+1-2 = n-1
n-1+3 = n+2
.n+2-4 = n-2
.Мы повторяем этот процесс, увеличивая / уменьшая каждый шаг, пока не получим ноль.
источник
l + r = 0 + 2 = 2; 58 байт
Сложность O (n ^ 2).
Ниже приведен мой генератор тестовой программы, так что вы можете видеть, что я действительно пытался протестировать его на случай, если он не сработает ...
источник