self_print := proc() local i, s, str; s := array(1..600,[ ` `, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ````, ````, `\n`, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ` `, `]`, `)`, `;`, `\n`, `#`, ` `, `T`, `h`, `e`, ` `, `a`, `r`, `r`, `a`, `y`, ` `, `s`, ` `, `i`, `s`, ` `, `t`, `h`, `e`, ` `, `r`, `e`, `m`, `a`, `i`, `n`, `d`, `e`, `r`, ` `, `o`, `f`, ` `, `t`, `h`, `e`, ` `, `p`, `r`, `o`, `g`, `r`, `a`, `m`, `,`, ` `, `p`, `r`, `i`, `n`, `t`, `e`, `d`, ` `, `t`, `w`, `i`, `c`, `e`, `\n`, ` `, ` `, ` `, `l`, `p`, `r`, `i`, `n`, `t`, `(`, ````, `s`, `e`, `l`, `f`, `_`, `p`, `r`, `i`, `n`, `t`, ` `, `:`, `=`, ` `, `p`, `r`, `o`, `c`, `(`, `)`, `\\`, `n`, ` `, ` `, ` `, `l`, `o`, `c`, `a`, `l`, ` `, `s`, `,`, ` `, `s`, `t`, `r`, `;`, `\\`, `n`, ` `, ` `, ` `, `s`, ` `, `:`, `=`, ` `, `a`, `r`, `r`, `a`, `y`, `(`, `1`, `.`, `.`, `6`, `0`, `0`, `,`, `[`, ````, `)`, `;`, `\n`, ` `, ` `, ` `, `s`, `t`, `r`, ` `, `:`, `=`, ` `, ````, ````, `;`, `\n`, ` `, ` `, ` `, `f`, `o`, `r`, ` `, `i`, ` `, `f`, `r`, `o`, `m`, ` `, `1`, ` `, `b`, `y`, ` `, `1`, ` `, `w`, `h`, `i`, `l`, `e`, ` `, `s`, `[`, `i`, `]`, ` `, `<`, `>`, ` `, ````, ````, ` `, `d`, `o`, `\n`, ` `, ` `, ` `, ` `, ` `, ` `, ` `, `i`, `f`, ` `, `s`, `[`, `i`, `]`, ` `, `=`, ` `, ````, `\\`, `n`, ````, ` `, `t`, `h`, `e`, `n`, ` `, `l`, `p`, `r`, `i`, `n`, `t`, `(`, ````, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ````, ````, `\\`, `\\`, `n`, ````, ````, `,`, ````, `)`, `;`, `\n`, ` `, ` `, ` `, ` `, ` `, ` `, ` `, `e`, `l`, `s`, `e`, ` `, `i`, `f`, ` `, `s`, `[`, `i`, `]`, ` `, `=`, ` `, ````, ````, ````, ````, ` `, `t`, `h`, `e`, `n`, ` `, `l`, `p`, `r`, `i`, `n`, `t`, `(`, ````, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ````, ````, ````, ````, ````, ````, ````, ````, `,`, ````, `)`, `;`, `\n`, ` `, ` `, ` `, ` `, ` `, ` `, ` `, `e`, `l`, `s`, `e`, ` `, `i`, `f`, ` `, `s`, `[`, `i`, `]`, ` `, `=`, ` `, ````, `\\`, `\\`, ````, ` `, `t`, `h`, `e`, `n`, ` `, `l`, `p`, `r`, `i`, `n`, `t`, `(`, ````, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ````, ````, `\\`, `\\`, `\\`, `\\`, ````, ````, `,`, ````, `)`, `;`, `\n`, ` `, ` `, ` `, ` `, ` `, ` `, ` `, `e`, `l`, `s`, `e`, ` `, `l`, `p`, `r`, `i`, `n`, `t`, `(`, `c`, `a`, `t`, `(`, ````, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ` `, ````, ````, ````, ` `, `,`, ` `, `s`, `[`, `i`, `]`, ` `, `,`, ` `, ````, ````, ````, `,`, ````, `)`, `)`, `;`, `\n`, ` `, ` `, ` `, ` `, ` `, ` `, ` `, `f`, `i`, `;`, ` `, `f`, `i`, `;`, ` `, `f`, `i`, `;`, `\n`, ` `, ` `, ` `, ` `, ` `, ` `, ` `, `s`, `t`, `r`, ` `, `:`, `=`, ` `, `c`, `a`, `t`, `(`, `s`, `t`, `r`, `,`, ` `, `s`, `[`, `i`, `]`, `)`, `;`, `\n`, ` `, ` `, ` `, `o`, `d`, `;`, `\n`, ` `, ` `, ` `, `l`, `p`, `r`, `i`, `n`, `t`, `(`, `s`, `t`, `r`, `)`, `;`, `\n`, `e`, `n`, `d`, `;`, `\n`, `` ]); # The array s is the remainder of the program, printed twice lprint(`self_print := proc()\n local s, str;\n s := array(1..600,[`); str := ``; for i from 1 by 1 while s[i] <> `` do if s[i] = `\n` then lprint(` ``\\n``,`); else if s[i] = ```` then lprint(` ````````,`); else if s[i] = `\\` then lprint(` ``\\\\``,`); else lprint(cat(` ``` , s[i] , ```,`)); fi; fi; fi; str := cat(str, s[i]); od; lprint(str); end;