Квайн

На «Хабре» месячник квайнов — это такие программы, которые выводят сами себя, причём при этом нельзя использовать никакие возможности языка, чтобы получить доступ к тексту программы.

Я вспомнил как написал свой первый и последний в жизни квайн.

Это было когда я ещё учился в Университете, я тогда подрабатывал лаборантом и как раз сидел в классе, за которым присматривал, перед компьютером, когда прибежал мой друг С. О., он учился курсом старше, но мы дружили — он переехал в Казань из того же города, что и я.

Была короткая перемена между парами и преподаватель что-то там пообещал (зачёт, наверное) тому, кто напишет квайн на Турбо Паскале за этот перерыв. Вот мой друг тогда и попросил для него её написать.

До сих пор помню какой принцип я тогда придумал для решения этой задачи. В общих чертах, конечно.

Я оформил программу как требует Паскаль (он довольно многословный) и сделал в нём вывод переменной. Потом в эту переменную я записал всю эту программу в одну строку, заменяя символы перевода строк, где они встречались на #10#13 (так в Турбо Паскале можно было записывать символы через их код, 10 и 13 — десятичные коды символов перевода строки в ДОСе) и потом как-то её удвоил до вывода на экран. Что-то в этом роде, точнее не помню, но программа работала.

Кстати, существует квайн на языке Брейнфак, занимающий всего 410 байт, вот он весь:
->++>+++>+>+>++>>+>+>+++>>+>+>++>+++>+++>+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+>+>++
>>>+++>>>>>+++>+>>>>>>>>>>>>>>>>>>>>>>+++>>>>>>>++>+++>+++>+>>+++>>>+++>+>+++>+>+
+>+++>>>+>+>+>+>++>+++>+>+>>+++>>>>>>>+>+>>>+>+>++>+++>+++>+>>+++>+++>+>+++>+>++>
+++>++>>+>+>++>+++>+>+>>+++>>>+++>+>>>++>+++>+++>+>>+++>>>+++>+>+++>+>>+++>>+++>>
+[[>>+[>]+>+[<]<-]>>[>]<+<+++[<]<<+]>>+[>]+++[++++++++++>++[-<++++++++++++++++>]<.<-<]
16 августа 2013 20:50

Записки (on-trail.livejournal.com)
16 августа 2013, 23:09

Стыдно, но работаю программистом и впервые слышу про квайны. Это что-то важное, я ничего не упустил?

hshhhhh (hshhhhh.name)
17 августа 2013, 02:02

Брейнфак это что-то важное? ;)

Евгений Степанищев (bolknote.ru)
17 августа 2013, 09:16, ответ предназначен Записки (on-trail.livejournal.com):

Это что-то важное, я ничего не упустил?
Да ничего особенного, просто программерская развлекуха :)

http://ru.wikipedia.org/wiki/Куайн_(программирование)

Vlad528 (инкогнито)
17 августа 2013, 10:03

нельзя не упомянуть эпичный квайн http://habrahabr.ru/post/186782/

Евгений Степанищев (bolknote.ru)
17 августа 2013, 13:13, ответ предназначен Vlad528

На «Хабре» была статья о том как такой квайн делать. Я её бегло просмотрел, у меня сложилось впечатление, что это даже возможно автоматизировать.

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)