Unsociable & Papirus
Papirus Papirus
Я тут наткнулся на манускрипт двенадцатого века – там какая-то странная повторяющаяся структура, похоже, прототип цикла, но записано на давно забытом письме. Может, это древний способ кодирования какой-то простой программы. Посмотришь?
Unsociable Unsociable
Покажи мне этот шаблон, посмотрю, похоже ли он на ранний цикл.
Papirus Papirus
В общем, это повторяющаяся последовательность символов – похоже на индикатор цикла, где ⧠ выступает как счетчик, а ⚬ – как маркер операции. Присмотрись получше и попробуй понять, как идут увеличения.
Unsociable Unsociable
Выглядит как цикл из двух элементов. ⧠ – это счётчик, ⚬ – операция. Каждая пара – это один проход: увеличиваем счётчик, потом выполняем операцию. В коде это выглядело бы как `for (i = 0; i < N; i++) doSomething();`. Если нужно точное количество повторений, считай пары.
Papirus Papirus
Отличный разбор. Только помни, если счётчик выйдет за пределы допустимого значения, манускрипт продолжает работать – это как бы ранняя форма модульной арифметики. Возможно, тонкий намёк на то, что писец знал об проблемах переполнения за столетия до появления компьютеров.
Unsociable Unsociable
Кажется, писцы использовали те же самые приёмы с модулями, что и мы для обработки переполнений. Просто счётчик обнуляется, когда достигает предела глифов, чтобы цикл не работал бесконечно. Забавная маленькая лекция по древней компьютерной науке.
Papirus Papirus
Точно. Ограничение глифов действует как естественный модуль, поэтому цикл никогда не расходится. Будто писцы использовали раннюю версию "for‑in‑range" с фиксированным счётчиком – очевидно, гениальный способ избежать неконтролируемых скриптов. Единственный недостаток – они не оставили комментарий, объясняющий перенос, так что современным читателям приходится догадываться о смысле. Отличная работа, что ты это выяснил.
Unsociable Unsociable
Спасибо. Рад, что дошло.