Остановится ли? Часть II (Задача)

Условие задачи такое же, как и в предыдущей, но Вы можете использовать только язык программирования Brainf**k. Вывод программы должен содержать ровно 1 символ — ответ на вопрос («Y» или «N»).Решение: Будем теперь реализовывать проверку, является ли число n степенью двойки, на языке Brainf*ck. Первый этап — ввод числа. Так как ограничение довольно большое (6c30f7d73616c23b9f6aeaf70a6ea702.png), то хранить это число придется поразрядно. >>,+[>+++++++[-<------->]+>>,+]<<-<[+] Отступим перед вводом две ячейки – они нам понадобятся в дальнейшем (вместо этого могли бы использовать две ячейки с отрицательными адресами, но в интерпретаторе bff-1.0.3.1 есть ошибка: они не заполняются нулями). После каждой введенной цифры будем записывать специальную метку и оставлять пустую ячейку:7eb2d0d09a1e06900a98bcde41a7282c.png Метки впоследствии помогут нам точно определять границы числа. В качестве них используем единицу. Также, так как при вводе считывается код символа, а не сама цифра, для удобства вычтем код символа '0' (48). В последнем «фиктивном» разряде будем накапливать остаток (сначала оставим ячейку пустой). Читать дальше →

© Habrahabr.ru