Спасибо Мартину за 6 байтов!
1="/}.!+/M8;
Expanded:
1 = "
/ } . !
+ / M 8 ;
. . . .
. . .
Попробуйте онлайн
Старый, ответь. Это остается, потому что изображения и пояснения могут быть полезны для новых пользователей Hexagony.
!).={!/"*10;$.[+{]
Expanded:
! ) .
= { ! /
" * 1 0 ;
$ . [ +
{ ] .
Это печатает последовательность Фибоначчи, разделенную символами новой строки.
Попробуйте онлайн! Но будьте осторожны, онлайн-переводчику не очень нравится бесконечный вывод.
объяснение
Эта программа содержит две «подпрограммы», каждая из которых запускается одним из двух используемых IP-адресов. Первая подпрограмма печатает новые строки, а вторая выполняет вычисление и вывод Фибоначчи.
Первая подпрограмма начинается с первой строки и перемещается слева направо все время. Сначала он печатает значение в указателе памяти (инициализируется в ноль), а затем увеличивает значение в указателе памяти на 1
. После отсутствия операции IP переходит на третью строку, которая сначала переключается на другую ячейку памяти, а затем печатает новую строку. Поскольку символ новой строки имеет положительное значение (его значение равно 10), код всегда будет переходить к пятой строке, следующей. Пятая строка возвращает указатель памяти на наше число Фибоначчи, а затем переключается на другую подпрограмму. Когда мы вернемся из этой подпрограммы, IP вернется к третьей строке после выполнения no-op.
Вторая подпрограмма начинается в верхнем правом углу и начинает движение на юго-восток. После бездействия мы вынуждены отправиться на запад вдоль второй линии. Эта строка печатает текущее число Фибоначчи, прежде чем перемещать указатель памяти в следующее место. Затем IP переходит на четвертую строку, где вычисляет следующее число Фибоначчи, используя два предыдущих. Затем он возвращает управление первой подпрограмме, но когда он восстанавливает контроль над программой, он продолжается до тех пор, пока не встретит скачок, где он отскакивает от зеркала, которое первоначально использовалось, чтобы указать его на запад, когда он возвращается ко второй строке.
Предварительные красивые картинки!
Левая сторона изображения - это программа, правая часть - память. Синее поле - это первый IP-адрес, и оба IP-адреса указывают на следующую команду, которая должна быть выполнена.
Примечание. Рисунки могут показаться красивыми только тем, у кого такие же ограниченные навыки в программах для редактирования изображений: PI добавит как минимум еще 2 итерации, чтобы использование *
оператора стало более понятным.
Примечание 2: Я видел ответ алефальфы только после того, как написал большую часть этого, я полагал, что он все еще был ценным из-за разделения, но фактические части наших программ Фибоначчи очень похожи. Кроме того, это самая маленькая программа Hexagony, в которой я видел использование более одного IP, поэтому я подумал, что в любом случае было бы неплохо сохранить: P
^2
замене0,1
. +1