Хочу порешать Unknown Language Round 4, но наткнулся на странное поведение оператора #
в конце строки.
Так как код тороидален, то следующий код циклится на печати единицы:
1.
Между тем, мы можем практически выяснить, что pop
из пустого стека выдавливает ноль:
1..@
И следующий код теоретически должен напечатать единицу, а потом зациклиться на нуле, потому что #
реализует пропуск push(1)
:
1.#
Но увы, циклится печать единицы. Потому что в интерпретаторе codeforces #
не работает через границу. В Википедии, правда, это поведение не регламентировано, ровно как и на Esolang, но мне кажется, что это косяк.
Ссылки на саппорт на сайте не нашел, поэтому пишу сюда. Может быть, кому-нибудь еще захочется высказаться.
Цитата из документации по Funge-98
намекает, что прыжок не должен считать перевод строки за ячейку. Однако
но не совсем понятно, что делается в случае двухбайтового (виндового) перевода.
Скорее всего, программа просто считается тором 80x25, и всё, что не написано, заполняется noop-ами. Так что прыжок происходит не через единицу, а через четвёртую, не написанную, клетку первой строки.
Например, здесь явно написано про размеры 80x25.