У меня проблема с кибер-клубом, который просит вас напечатать:
ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
Использование Brainf ** k в 29 байтах или менее без использования символа «,».
У меня есть рабочий код:
++++++++++[>++++++>+++++++++<<-]>-->.<[>-.<-]
Однако мой цикл слишком длинный, отправив мне 16 байтов сверх лимита.
Есть ли более эффективный способ установить вторую и третью ячейки 58 и 90, чтобы я мог запустить свой второй цикл? Или есть лучший способ сделать это все вместе, которого я просто не вижу?
-.
на.-
сбрасывая>.<
.+[--->++<]>++++[.-]
19 байтов, но он также печатает контрольные символы ...Ответы:
2724 байтаПотратил целый день на то, чтобы написать брутфорсера и наблюдать за результатами. Теперь я могу вернуться к выполнению какой-то реальной работы ...Еще один день грубого принуждения позже ...Попробуйте онлайн!
Компонент
++[<++[++<]>>>+]
инициализирует лентукоторый просто идеально подходит для того, что нам нужно!
источник
+[[>++<<]>->+>+]<[-<-.>]
30 байтов
Попробуйте онлайн!
85 и 171 довольно просто генерировать в мозговом потоке (модульные инверсии 3 и -3 ). 85 довольно близко к 90 , а 171 довольно близко к 177 ( 59 · 3 ), который используется здесь. С некоторой долей хакерства я могу вместо этого производить 88 и 176 .
Тем не менее, на один байт меньше цели.
Другие предложения
В общем, итерация по списку короче, умножается на константу, а не наоборот. Это особенно верно для 3 или более значений. Например, это:
можно записать как:
Внутренних ценностей было всего два, так что в этом случае улучшение не сильно. На самом деле, просто рефакторинг на один байт короче:
Умножение 30 на 2 и 3 , а не 10 на 6 и 9 . По предложению Мартина Бюттнера, это уже до 38 байт, без особых изменений в оригинале:
источник
34 байта
Вы сэкономили 11 байтов, но все еще 5 байтов слишком длинны ...
Я уже часами, надеюсь, кто-то может улучшить это.
источник