Pull to refresh

Comments 48

UFO just landed and posted this here
это называется Quine:
http://en.wikipedia.org/wiki/Quine_(computing)
так я что-то не понял, это исходники программы выглядят как спираль, или это и есть исходники, которые печатают сами себя?
Исходники, которые печатают сами себя. Имхо, интерпретатор бы долго плевался после "wh\nile".
видимо мне не понять всей красоты перла :(
Там в конце, заметили, есть скромный оператор s;\s;;g; который все разорванные слова как раз сливает перед выполнением.
тама пробелы и всё такое регуляркой заменяется... такое и на php можно сделать, и на jscript, и даже на каком-нибудь другом американском языке программирования.... а бы тока regex+eval работали
    ''=~(        '(?{'        .('`'        |'%')        .('['        ^'-')
.('`' |'!') .('`' |',') .'"'. '\\$'
.'==' .('[' ^'+') .('`' |'/') .('['
^'+') .'||' .(';' &'=') .(';' &'=')
.';-' .'-'. '\\$' .'=;' .('[' ^'(')
.('[' ^'.') .('`' |'"') .('!' ^'+')
.'_\\{' .'(\\$' .';=('. '\\$=|' ."\|".( '`'^'.'
).(('`')| '/').').' .'\\"'.+( '{'^'['). ('`'|'"') .('`'|'/'
).('['^'/') .('['^'/'). ('`'|',').( '`'|('%')). '\\".\\"'.( '['^('(')).
'\\"'.('['^ '#').'!!--' .'\\$=.\\"' .('{'^'['). ('`'|'/').( '`'|"\&").(
'{'^"\[").( '`'|"\"").( '`'|"\%").( '`'|"\%").( '['^(')')). '\\").\\"'.
('{'^'[').( '`'|"\/").( '`'|"\.").( '{'^"\[").( '['^"\/").( '`'|"\(").(
'`'|"\%").( '{'^"\[").( '['^"\,").( '`'|"\!").( '`'|"\,").( '`'|(',')).
'\\"\\}'.+( '['^"\+").( '['^"\)").( '`'|"\)").( '`'|"\.").( '['^('/')).
'+_,\\",'.( '{'^('[')). ('\\$;!').( '!'^"\+").( '{'^"\/").( '`'|"\!").(
'`'|"\+").( '`'|"\%").( '{'^"\[").( '`'|"\/").( '`'|"\.").( '`'|"\%").(
'{'^"\[").( '`'|"\$").( '`'|"\/").( '['^"\,").( '`'|('.')). ','.(('{')^
'[').("\["^ '+').("\`"| '!').("\["^ '(').("\["^ '(').("\{"^ '[').("\`"|
')').("\["^ '/').("\{"^ '[').("\`"| '!').("\["^ ')').("\`"| '/').("\["^
'.').("\`"| '.').("\`"| '$')."\,".( '!'^('+')). '\\",_,\\"' .'!'.("\!"^
'+').("\!"^ '+').'\\"'. ('['^',').( '`'|"\(").( '`'|"\)").( '`'|"\,").(
'`'|('%')). '++\\$="})' );$:=('.')^ '~';$~='@'| '(';$^=')'^ '[';$/='`';


Привет начальник!
Это программа, которая выводит вращающуюся спираль, своим исходным кодом
Дааа, перл это жесть :) Жаль что я его не люблю, но это все равно жесть :))
Там еще как-будто смайлик во второй строчке, вначале: $_=
Помню, на школьных олимпиадах по информатике была такая задача: написать программу, которая выводит свой код. Что-то похожее, но реализация была на паскале :)
несмотря на часто встречающиеся упоминания о такой задаче - я до сих пор не могу заглянуть хоть в одну из них,дабы оценить идею. Скажите в чем суть подобной программы? Кажется это так просто - открыть и прочитать себя... но скорее всего там наверняка это делается по-другому. Расскажите, как?
вот примерчик на паскале:
program SelfPrint(output);
var i: integer; ch, ch1: char;
s: array [0..9] of string[127];
begin ch:= chr(39); ch1:= chr(59);
s[0]:= 's[0]:= ';
s[1]:= 'program SelfPrint(output);';
s[2]:= ' var i: integer; ch, ch1: char;';
s[3]:= ' s: array [0..9] of string[127];';
s[4]:= 'begin ch:= chr(39); ch1:= chr(59);';
s[5]:= 'for i:= 1 to 4 do writeln(s[i]);';
s[6]:= 'for i:= 0 to 9 do';
s[7]:= ' begin s[0][3]:= chr(i+48); writeln(s[0],ch,s[i],ch,ch1) end;';
s[8]:= 'for i:= 5 to 9 do writeln(s[i]);';
s[9]:= 'end.';
for i:= 1 to 4 do writeln(s[i]);
for i:= 0 to 9 do
begin s[0][3]:= chr(i+48); writeln(s[0],ch,s[i],ch,ch1) end;
for i:= 5 to 9 do writeln(s[i]);
end.
неужто все настолько банально? это даже неинтересно...
На самом деле, это не так банально. Банально только тогда, когда перед глазами код, а в принципе - очень неплохая задача "для подумать".
банально - это вот как:
10 LIST

=)
UFO just landed and posted this here
в BASIC'е принята нумерация строк с интервалом в 10, начиная с 10. Это нужно для того, чтобы иметь возможность вставлять дополнительные строки без их перенумерации (возможность которой предусмотрена далеко не во всех версиях интерпретаторов).

и хотя в данном случае совершенно не имеет значения как именно будет пронумерованна строчка с оперетором LIST, для сохранения аутентичности кода следует использовать "10" как номер строки.
UFO just landed and posted this here
ойойой, а чего так мног? там можно обойтись чем-то около 100 байт
Саня, меня попросили пример - я показал. Я не занимался оптимизацией ;)
Хочешь, покажи пример покороче =)
я и не заметил что это был ты :)
Что ты открывать-то собрался? Есть скопилированный экзешник, откуда возьмутсы исходники, которые ты хочешь прочитать-то?
дизасемблировать. К томуже у нас далеко не все языки компилируются.
если всё так банально и просто, приведите, пожалуйста, свой пример такой программы, с дизассемблированием.
спасибо.
самый правильный язык - HQ9+, в нем это стандартная операция :)
Вот ещё пример такой программы:
>>+++++++>>++>>++++>>+++++++>>+>>++++>>+>>+++>>+>>+++++>>+>>++>>+
>>++++++>>++>>++++>>+++++++>>+>>+++++>>++>>+>>+>>++++>>+++++++>>+
>>+++++>>+>>+>>+>>++++>>+++++++>>+>>+++++>>++++++++++++++>>+>>+>>
++++>>+++++++>>+>>+++++>>++>>+>>+>>++++>>+++++++>>+>>+++++>>+++++
++++++++++++++++++++++++>>+>>+>>++++>>+++++++>>+>>+++++>>++>>+>>+
>>+++++>>+>>++++++>>+>>++>>+>>++++++>>+>>++>>+>>++++++>>+>>++>>+>
>++++++>>+>>++>>+>>++++++>>+>>++>>+>>++++++>>+>>++>>+>>++++++>>++
>>++++>>+++++++>>+>>+++++>>+++++++>>+>>+++++>>+>>+>>+>>++++>>+>>+
+>>+>>++++++>>+>>+++++>>+++++++>>+>>++++>>+>>+>>++>>+++++>>+>>+++
>>+>>++++>>+>>++>>+>>++++++>>+>>+++++>>+++++++++++++++++++>>++>>+
+>>+++>>++>>+>>++>>++++>>+++++++>>++>>+++++>>++++++++++>>+>>++>>+
+++>>+>>++>>+>>++++++>>++++++>>+>>+>>+++++>>+>>++++++>>++>>+++++>
>+++++++>>++>>++++>>+>>++++++[<<]>>[>++++++[-<<++++++++++>>]<<++.
.------------------->[-<.>>+<]>[-<+>]>]<<[-[-[-[-[-[-[>++>]<+++++
++++++++++++++++++++++++>]<++>]<++++++++++++++>]<+>]<++>]<<[->.<]<<]
Он самый)) Еще бы на Whitespace или COW написали))
это кажется какой-то из мертвый языков
Очень даже живой! Просто не у всех хватит терпения и мозгов на нем что-то написать. На брейнфаке даже принимают решения на некоторых acm-олимпиадах.
отличный пример того, за что любят и ненавидят лари уола ))
Пакет CPAN Acme::EyeDrops даёт возможность любую программу преобразовать в чудесные картинки, похожие на приведённую в посте.
Предыдущий коммент содержал ссылку на пакет на CPAN'е, однако отрицательная карма, оказывается, плохо влияет на ссылки... Даю плэйнтекстом: http://search.cpan.org/~asavige/Acme-EyeDrops-1.52/lib/Acme/EyeDrops.pm
во народ до чего дошел уже :)
посмотрел исходник модуля - писал мозг... никак не получается перестроиться с привычного РНР синтаксиса на перловский
Sign up to leave a comment.

Articles