gifts2017

Мультиквайн на 1С. Курица и яйцо

Опубликовал Александр (kg_am) в раздел Программирование - Практика программирования

Мультиквайн - программа, выдающая текст другой программы, которая, в свою очередь, выдаёт текст первой. Теперь и на 1С.

Квайны – программы, выдающие свой собственный текст. Весьма популярное упражнение для начинающих программистов. Пока не понял, как такое делается, задача кажется какой-то запредельной мистикой, но, конечно, ничего сверхсложного в ней нет. Пишут такие штуки и на 1С. В частности, на Инфостарте тоже есть несколько экземплярчиков: здесь, здесь и здесь,

Мультиквайн – задачка немножко поинтереснее. Ещё интереснее сделать мультиквайн с сюжетом. Берём классику жанра – курицу и яйцо. Пусть курица несёт яйца, а из яйца получается курица. Но кто сказал, что выдача текстов - это единственное, чем может заниматься мультиквайн? Туда, вовнутрь, кроме текстов ещё много чего может поместиться. Пусть курица умеет находить пищу, а яйцо пусть выглядит как яйцо и для «срабатывания» требует некоторого высиживания.

К статье прикреплены два файла (в формате 8.2), но скачивать оба нет никакого смысла. Второй получается из первого, а первый из второго.

Возьмём для начала, например, курицу. Запускаем. Можно поиграть с курицей. Порисовать лабиринт и посмотреть, как курица находит кратчайший путь к еде:

Размер лабиринта ограничен трудолюбием и здравым смыслом. По нажатию на кнопку «Отложить яйцо» выдаётся текст модуля управляемой формы для обработки «Яйцо»:

По инструкции в комментариях делаем и запускаем яйцо:

После "высиживания" (10 секунд, чтобы никого не мучить) получаем текст курицы:

Если есть желание, можно сравнить с текстом исходной обработки и убедиться в том, что этот двойственный объект смог породить сам себя.

Для интересующихся классическим вопросом про курицу и яйцо

1. Курица не может появиться раньше яйца, потому что все куры вылупляются из яиц.

2. Куриное яйцо не может ни откуда взяться, кроме как из курицы.

Оба утверждения – правда. Имеем ситуацию, известную как антиномия. Взаимоисключающие альтернативы, каждая из которых железобетонно обоснована. Взрыв мозга. Но не всё так плохо. Появление антиномии – признак того, что ошибка спрятана в самой постановке вопроса.

В данном случае ошибка в том, что, по-видимому, никогда не было никакой первой курицы и первого куриного яйца. Есть сведения, что десятки миллионов тому назад на Земле обитали существа, которых даже при очень богатом воображении не получилось бы назвать курами. И несли они яйца, которые товаровед супермаркета не согласился бы принять как куриные даже за крупную взятку. А сейчас есть и куры, и яйца. Между «тогда» и «сейчас» – десятки миллионов поколений существ, всё больше и больше похожих на кур, несущих яйца, всё больше и больше похожие на куриные. Провести чёткую границу, до которой нет кур, а после которой есть – без шансов. Нечёткая логика чёткой границы не предполагает.

З.Ы. Шедевр мультиквайностроения – это, конечно, чудовище «Уроборос» глубоко за этот подвиг уважаемого Yusuke Endoh. Цепочка из 100 программ на разных языках, включая самые экзотические.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Обработка "Курица" (8.2)
.epf 12,59Kb
07.09.16
0
.epf 12,59Kb 0 Скачать
Обработка "Яйцо" (8.2)
.epf 11,85Kb
07.09.16
0
.epf 11,85Kb 0 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Максим Кузнецов (Makushimo) 08.09.16 09:53
етить-колотить ))))
so-quest; pbahushevich; dour-dead; kg_am; kraynev-navi; Alias; wbazil; ValeriTim; Разумов; ya.Avoronov; +10 Ответить
2. bulpi bulpi (bulpi) 09.09.16 12:22
Читая такие публикации, я завидую авторам белой завистью : ну до чего ж людям делать нечего!
3. Александр (kg_am) 09.09.16 17:31
(2) bulpi,
К сожалению (или всё же к радости?) всё строго наоборот. Делать определённо есть что, но иногда душа настойчиво просит помимо большого, тяжёлого и долгоиграющего сделать по-быстрому что-нибудь маленькое, элегантное и от начала до конца не серьёзное.

Или примем за догму, что 1С - это исключительно активы, пассивы, печатные формы, НДСы, бизнес-процессы и прочая подобная нуднятина?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа