e-mail: bbi-math@narod.ru, site: http://bbi-math.narod.ru/ В сети имеется много материалов посвященых самовоспроизведению, много цитируется Нейман, Гедель, Бертран Рассел. Мне хотелось посмотреть пример самовоспроизведения, я такого примера не нашел. Поэтому решил выложить эту программку. Можно над ней поразмышлять: при чем тут теория типов Рассела? при чем тут Гедель? Текст программы var s,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14:string;i:integer; procedure w(s:string);begin writeln(s)end; procedure n(i:integer;s7,s:string);begin writeln(s,i,char(58)+ char(61)+char(39)+s7+char(39)+char(59));end; procedure e;begin writeln(char(115)+char(58)+char(61)+char(99)+ char(104)+char(97)+char(114)+char(40),115,char(41)+char(59))end; begin s1:='var s,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14:string;i:integer;'; s2:='procedure w(s:string);begin writeln(s)end;'; s3:='procedure n(i:integer;s7,s:string);begin writeln(s,i,char(58)+'; s4:='char(61)+char(39)+s7+char(39)+char(59));end;'; s5:='procedure e;begin writeln(char(115)+char(58)+char(61)+char(99)+'; s6:='char(104)+char(97)+char(114)+char(40),115,char(41)+char(59))end;'; s7:='begin'; s8:='w(s1);w(s2);w(s3);w(s4);w(s5);w(s6);w(s7);'; s9:='n(1,s1,s);n(2,s2,s);n(3,s3,s);n(4,s4,s);n(5,s5,s);n(6,s6,s);n(7,s7,s);'; s10:='n(8,s8,s);n(9,s9,s);n(10,s10,s);n(11,s11,s);n(12,s12,s);e;'; s11:='w(s8);w(s9);w(s10);w(s11);w(s12);'; s12:='randomize;for i:=1 to 1000 do write(char(random(255)));readln;end.'; s:=char(115); w(s1);w(s2);w(s3);w(s4);w(s5);w(s6);w(s7); n(1,s1,s);n(2,s2,s);n(3,s3,s);n(4,s4,s);n(5,s5,s);n(6,s6,s);n(7,s7,s); n(8,s8,s);n(9,s9,s);n(10,s10,s);n(11,s11,s);n(12,s12,s);e; w(s8);w(s9);w(s10);w(s11);w(s12); randomize;for i:=1 to 1000 do write(char(random(255)));readln;end. Ниже находится результат работы программы, т.е. то, что она вывела на экран; набор символов после слова end. - это результат работы цикла for i:=1 to 1000 do write(char(random(255))); (хотелось, чтобы программа не просто выводила свой текст, но и еще добавила что-то от себя;если дать ей поработать достаточно долго, может она сонет Шекспира напишет? Шутка.) Результат работы программы var s,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14:string;i:integer; procedure w(s:string);begin writeln(s)end; procedure n(i:integer;s7,s:string);begin writeln(s,i,char(58)+ char(61)+char(39)+s7+char(39)+char(59));end; procedure e;begin writeln(char(115)+char(58)+char(61)+char(99)+ char(104)+char(97)+char(114)+char(40),115,char(41)+char(59))end; begin s1:='var s,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14:string;i:integer;'; s2:='procedure w(s:string);begin writeln(s)end;'; s3:='procedure n(i:integer;s7,s:string);begin writeln(s,i,char(58)+'; s4:='char(61)+char(39)+s7+char(39)+char(59));end;'; s5:='procedure e;begin writeln(char(115)+char(58)+char(61)+char(99)+'; s6:='char(104)+char(97)+char(114)+char(40),115,char(41)+char(59))end;'; s7:='begin'; s8:='w(s1);w(s2);w(s3);w(s4);w(s5);w(s6);w(s7);'; s9:='n(1,s1,s);n(2,s2,s);n(3,s3,s);n(4,s4,s);n(5,s5,s);n(6,s6,s);n(7,s7,s);'; s10:='n(8,s8,s);n(9,s9,s);n(10,s10,s);n(11,s11,s);n(12,s12,s);e;'; s11:='w(s8);w(s9);w(s10);w(s11);w(s12);'; s12:='randomize;for i:=1 to 1000 do write(char(random(255)));readln;end.'; s:=char(115); w(s1);w(s2);w(s3);w(s4);w(s5);w(s6);w(s7); n(1,s1,s);n(2,s2,s);n(3,s3,s);n(4,s4,s);n(5,s5,s);n(6,s6,s);n(7,s7,s); n(8,s8,s);n(9,s9,s);n(10,s10,s);n(11,s11,s);n(12,s12,s);e; w(s8);w(s9);w(s10);w(s11);w(s12); randomize;for i:=1 to 1000 do write(char(random(255)));readln;end. b禦J¬3З¦+^L+¦-Бъ¦¦Ъv@4°}+mц¦^¦vA+°B>-_L¦}-¦J/2-ЬO-vcц-¦¦ Cнl^NZЄаg-Ф+жъ;-.с¦Ч+N¦П-о§°Э¦О<¦-+p /Є= г+ў^(-¦-Р+ЁГxйgv3ьVp/L0А/0!Г&aRР-L^v-`z;аT-%¦f-^p/%#;М:(FА¦Oд}0 ¦УЛ¦TqЁя5ч+¬Nd8ЪМ--5жоO-cn-/S§н¤о¦ ¦9lа¦п@KTыОыАTqd/F¦Я*дсЦkэр+я¦Е¦Х$жk5г?Lяиjоь !Фу0lъdDSk{П>00-о+йW6LЫд\¤сlз^F§(OвRAг-?Oq¦¬+^3-1(q* T<>¦шХЪ~щ%б¦тd+Ч4~М |