Pull to refresh

Comments 12

И все-таки самый лучше всего квайн выглядит на HQ9+
мне больше лисп нравится:
(let ((let '`(let ((let ',let)) ,let))) `(let ((let ',let)) ,let))
А мне на перл нравится, хотя чисто технически, это чит:

open+0;print<0>
Скромное обаяние буржуазии bash:

echo $BASH_COMMAND
Скорее уж тогда cat $0 :)
Тоже верно.

cat $0 — для скриптов
echo $BASH_COMMAND — для приглашения командной строки
У топикстартера тоже чит, т.к. он использует препроцессор, сущность внешнюю для языка, пусть даже препроцессор и описан в самом стандарте.
Осталось написать вирус, который будет заражать этим препроцессоры компилляторов.
Эту программу я встретил в книге «100 задач по программированию» (Автор — Дагене). Потом спустя 2 года после прочтения оригинала с некоторыми коррективами набрал по памяти, и еще через 10 лет вот оно:

program autoprint;
var i:byte;c:array[1..11]of string;
begin
c[1]:='program autoprint;';
c[2]:='var i:byte;c:array[1..13]of string;';
c[3]:='begin';
c[4]:=' for i:=1 to 3 do writeln(c[i]);';
c[5]:=' for i:=1 to 10 do writeln(c[11,8],c[11,8],c[11,1],c[11,2],i,';
c[6]:=' copy(c[11],3,4),c[i],c[11,6],c[11,7]);';
c[7]:=' writeln(c[11,8],c[11,8],c[11,1],c[11,2],11,copy(c[11],3,4),';
c[8]:=' copy(c[11],1,6),copy(c[11],6,3),c[11,6],c[11,7]);';
c[9]:=' for i:=4 to 10 do writeln(c[i]);readln;';
c[10]:='end.';
c[11]:='c[]:=''; ';
for i:=1 to 3 do writeln(c[i]);
for i:=1 to 10 do writeln(c[11,8],c[11,8],c[11,1],c[11,2],i,
copy(c[11],3,4),c[i],c[11,6],c[11,7]);
writeln(c[11,8],c[11,8],c[11,1],c[11,2],11,copy(c[11],3,4),
copy(c[11],1,6),copy(c[11],6,3),c[11,6],c[11,7]);
for i:=4 to 10 do writeln(c[i]);readln;
end.


Когда-то был еще вариант, который писал свой код в другие Pascal-программы в текущем каталоге, но что-то я не могу его найти.
Если мы хотим получить UNICODE-строку на выходе, что актуальнее:
#define REPEAT(...) L#__VA_ARGS__;__VA_ARGS__
Sign up to leave a comment.

Articles