Квайны – программы, выдающие свой собственный текст. Весьма популярное упражнение для начинающих программистов. Пока не понял, как такое делается, задача кажется какой-то запредельной мистикой, но, конечно, ничего сверхсложного в ней нет. Пишут такие штуки и на 1С. В частности, на Инфостарте тоже есть несколько экземплярчиков: здесь, здесь и здесь,
Мультиквайн – задачка немножко поинтереснее. Ещё интереснее сделать мультиквайн с сюжетом. Берём классику жанра – курицу и яйцо. Пусть курица несёт яйца, а из яйца получается курица. Но кто сказал, что выдача текстов - это единственное, чем может заниматься мультиквайн? Туда, вовнутрь, кроме текстов ещё много чего может поместиться. Пусть курица умеет находить пищу, а яйцо пусть выглядит как яйцо и для «срабатывания» требует некоторого высиживания.
К статье прикреплены два файла (в формате 8.2), но скачивать оба нет никакого смысла. Второй получается из первого, а первый из второго.
Возьмём для начала, например, курицу. Запускаем. Можно поиграть с курицей. Порисовать лабиринт и посмотреть, как курица находит кратчайший путь к еде:
Размер лабиринта ограничен трудолюбием и здравым смыслом. По нажатию на кнопку «Отложить яйцо» выдаётся текст модуля управляемой формы для обработки «Яйцо»:
По инструкции в комментариях делаем и запускаем яйцо:
После "высиживания" (10 секунд, чтобы никого не мучить) получаем текст курицы:
Если есть желание, можно сравнить с текстом исходной обработки и убедиться в том, что этот двойственный объект смог породить сам себя.
Для интересующихся классическим вопросом про курицу и яйцо
1. Курица не может появиться раньше яйца, потому что все куры вылупляются из яиц.
2. Куриное яйцо не может ни откуда взяться, кроме как из курицы.
Оба утверждения – правда. Имеем ситуацию, известную как антиномия. Взаимоисключающие альтернативы, каждая из которых железобетонно обоснована. Взрыв мозга. Но не всё так плохо. Появление антиномии – признак того, что ошибка спрятана в самой постановке вопроса.
В данном случае ошибка в том, что, по-видимому, никогда не было никакой первой курицы и первого куриного яйца. Есть сведения, что десятки миллионов тому назад на Земле обитали существа, которых даже при очень богатом воображении не получилось бы назвать курами. И несли они яйца, которые товаровед супермаркета не согласился бы принять как куриные даже за крупную взятку. А сейчас есть и куры, и яйца. Между «тогда» и «сейчас» – десятки миллионов поколений существ, всё больше и больше похожих на кур, несущих яйца, всё больше и больше похожие на куриные. Провести чёткую границу, до которой нет кур, а после которой есть – без шансов. Нечёткая логика чёткой границы не предполагает.
З.Ы. Шедевр мультиквайностроения – это, конечно, чудовище «Уроборос» глубоко за этот подвиг уважаемого Yusuke Endoh. Цепочка из 100 программ на разных языках, включая самые экзотические.