Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!cs.utexas.edu!asuvax!noao!arizona!arizona.edu!cerritos.edu!orion.oac.uci.edu!ucivax!ucla-cs!elroy.jpl.nasa.gov!decwrl! pacbell.com!att!news.cs.indiana.edu!ariel.unm.edu!cs.umn.edu!umn-cs!wieckows From: wieckows@cs.umn.edu (Zbigniew Wieckowski) Newsgroups: comp.misc Subject: Message-ID: <1991Apr21.171823.13705@cs.umn.edu> Date: 21 Apr 91 17:18:23 GMT Sender: news@cs.umn.edu (News administrator) Reply-To: wieckows@cs.umn.edu (Zbigniew Wieckowski) Organization: University of Minnesota, Minneapolis, CSci dept. Lines: 55 Nntp-Posting-Host: mega.cs.umn.edu I was once challenged by my Pascal course lecturer to write a self-replicable program. I was a freshman at the Warsaw Technical University. I made an effort to reconstruct the program now. Can anybody think of a sequence of procedure calls after 'begin' that could form an English language sentence? (by permutating procedures) Has anyone written such program in Cobol or Fortran? IMPORTANT: Copyright is granted after you send $1 (one dollar) to: Zbigniew Wieckowski 712 Osceola Ave. Apt#1 St.Paul, MN 55105 ------------------------------------------------- program Selfish(output); var procname: char; procedure a; begin write('program Selfish(output);') end; procedure b; begin writeln end; procedure c; begin write('var procname: char;') end; procedure d; begin write('procedure ') end; procedure e; begin procname:= 'a' end; procedure f; begin write(procname) end; procedure g; begin write('; begin write(') end; procedure h; begin write('''') end; procedure i; begin write(') end;') end; procedure j; begin procname:= chr(ord(procname)+1) end; procedure k; begin write('; begin writeln end;') end; procedure l; begin h;i;b;d;j;f end; procedure m; begin write('; begin procname:= ') end; procedure n; begin write('a') end; procedure o; begin write(' end;') end; procedure p; begin write('procname') end; procedure q; begin write('; begin procname:= chr(ord(procname)+1) end;') end; procedure r; begin write('; begin h;i;b;d;j;f end;') end; procedure s; begin write('begin a;b;c;b;d;e;f;g;h;a;h;i;b;d;j;f;k;b;d;j;') end; procedure t; begin write('f;g;h;c;l;g;h;d;l;m;h;n;h;o;b;d;j;f;g;p;i;b;d;') end; procedure u; begin write('j;f;g;h;g;l;g;h;h;h;l;g;h;i;l;q;b;d;j;f;g;h;k;') end; procedure v; begin write('l;r;b;d;j;f;g;h;m;l;g;h;n;l;g;h;o;l;g;h;p;l;g;') end; procedure w; begin write('h;q;l;g;h;r;l;g;h;s;l;g;h;t;l;g;h;u;l;g;h;v;l;') end; procedure x; begin write('g;h;w;l;g;h;x;l;g;h;y;l;g;h;z;h;i;b;s;b;t;b;u;') end; procedure y; begin write('b;v;b;w;b;x;b;y;b;z;b end.') end; procedure z; begin write('{ Copyright 1984,1991 by Zbigniew Wieckowski }') end; begin a;b;c;b;d;e;f;g;h;a;h;i;b;d;j;f;k;b;d;j; f;g;h;c;l;g;h;d;l;m;h;n;h;o;b;d;j;f;g;p;i;b;d; j;f;g;h;g;l;g;h;h;h;l;g;h;i;l;q;b;d;j;f;g;h;k; l;r;b;d;j;f;g;h;m;l;g;h;n;l;g;h;o;l;g;h;p;l;g; h;q;l;g;h;r;l;g;h;s;l;g;h;t;l;g;h;u;l;g;h;v;l; g;h;w;l;g;h;x;l;g;h;y;l;g;h;z;h;i;b;s;b;t;b;u; b;v;b;w;b;x;b;y;b;z;b end. { Copyright 1984,1991 by Zbigniew Wieckowski } -------------------------------------------------------