Penguin

Differences between version 9 and predecessor to the previous major change of PolyGlot.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 9 Last edited on Thursday, November 18, 2004 3:44:41 pm by JohnMcPherson Revert
Older page: version 8 Last edited on Wednesday, September 11, 2002 12:08:53 pm by JohnMcPherson Revert
@@ -1,88 +1,92 @@
+!!! PolyGlot #1  
 The following code is valid in at least 7 languages. 
  
  
- (*O/*_/  
- Cu #%* )pop mark/CuG 4 def/# 2 def____ %%____ %%@@P[ [TX---P\P_SXPY!Ex(mx2ex("SX!Ex4P)Ex=  
- CuG #%* *+Ex=  
- CuG #%*------------------------------------------------------------------*+Ex=  
- CuG #%* POLYGLOT - a program in seven languages 15 February 1991 *+Ex=  
- CuG #%* *+Ex=  
- CuG #%* Written by Kevin Bungard, Peter Lisle, and Chris Tham *+Ex=  
- CuG #%* *+Ex=  
- CuG #%* We have successfully run this program using the following: *+Ex=  
- CuG #%* ANSI COBOL: ! MicroFocus COBOL85 (not COBOL74) *+Ex=  
- CuG #%* ISO Pascal: Turbo Pascal (DOS & Mac), Unix PC, *+Ex=  
- CuG #%* AIX VS Pascal *+Ex=  
- CuG #%* ANSI Fortran: Unix f77, AIX VS Fortran *+Ex=  
- CuG #%* ANSI C (lint free): Microsoft C, Unix CC, GCC, Turbo C++, *+Ex=  
- CuG #%* Think C (Mac) *+Ex=  
- CuG #%* ! PostScript: ! GoScript, HP/Adobe cartridge, *+Ex=  
- CuG #%* Apple ! LaserWriter *+Ex=  
- CuG #%* Shell script: gnu bash, sh (SysV, BSD, MKS), ksh *+Ex=  
- CuG #%* 8086 machine language: MS-DOS 2.00, 3.03, 4.01, 5.00 beta *+Ex=  
- CuG #%* VPix & DOS Merge (under unix) *+Ex=  
- CuG #%* SoftPC (on a Mac), MKS shell *+Ex=  
- CuG #%* *+Ex=  
- CuG #%* Usage: *+Ex=  
- CuG #%* 1. Rename this file to polyglot.[ [cob|pas|f77|c|ps|sh|com] *+Ex=  
- CuG #%* 2. Compile and/or run with appropriate compiler and *+Ex=  
- CuG #%* operating system *+Ex=  
- CuG #%* *+Ex=  
- CuG #%* Notes: *+Ex=  
- CuG #%* 1. We have attempted to use only standard language features. *+Ex=  
- CuG #%* Without the -traditional flag gcc will issue a warning. *+Ex=  
- CuG #%* *+Ex=  
- CuG #%* 2. This text is a comment block in all seven languages. *+Ex=  
- CuG #%* *+Ex=  
- CuG #%* 3. When run as a .COM file with MS-DOS it makes certain *+Ex=  
- CuG #%* (not unreasonable) assumptions about the contents of *+Ex=  
- CuG #%* the registers. *+Ex=  
- CuG #%* *+Ex=  
- CuG #%* 4. When transfering from Unix to DOS make sure that a LF *+Ex=  
- CuG #%* is correctly translated into a CR/LF. *+Ex=  
- CuG #%* *+Ex=  
- CuG #%* Please mail any comments, corrections or additions to *+Ex=  
- CuG #%* peril@extro.ucc.su.oz.au *+Ex=  
- CuG #%* *+Ex=  
- CuG #%*------------------------------------------------------------------*QuZ=  
- CuG #%* *+Ex=  
- CuG #%*!Mx)ExQX4ZPZ4SP5n#5X!)Ex+ExPQXH,B+ExP[-9Z-9Z)GA(W@'UTTER_XYZZY'CPK*+  
- CuG #(* *(  
- C # */); /*(  
- C # *) program polyglot (output); (*+  
- C # identification division.  
- C # program-id. polyglot.  
- C #  
- C # data division.  
- C # procedure division.  
- C #  
- C # * ))cleartomark /Bookman-Demi findfont 36 scalefont setfont (  
- C # * (  
- C #  
- C # * hello polyglots$  
- C # main.  
- C # perform  
- C * ) 2>_$$; echo "hello polyglots"; rm _$$; exit  
- print  
- C stop run.  
- -*, 'hello polyglots'  
- C  
- C print.  
- C display "hello polyglots". (  
- C */ int i; /*  
- C */ main () { /*  
- C */ i=printf ("hello polyglots\n"); O= &i; return *O; /*  
- C *) (*  
- C *) begin (*  
- C *) writeln ('hello polyglots'); (*  
- C *) (* )  
- C * ) pop 60 360 (  
- C * ) pop moveto (hello polyglots) show (  
- C * ) pop showpage ((  
- C *)  
- end .(* )  
- C)pop% program polyglot. *){*/} 
+<verbatim>  
+ (*O/*_/  
+Cu #%* )pop mark/CuG 4 def/# 2 def%%%%@@P[TX---P\P_SXPY!Ex(mx2ex("SX!Ex4P)Ex=  
+CuG #%* *+Ex=  
+CuG #%*------------------------------------------------------------------*+Ex=  
+CuG #%* POLYGLOT - a program in seven languages 15 February 1991 *+Ex=  
+CuG #%* *+Ex=  
+CuG #%* Written by Kevin Bungard, Peter Lisle, and Chris Tham *+Ex=  
+CuG #%* *+Ex=  
+CuG #%* We have successfully run this program using the following: *+Ex=  
+CuG #%* ANSI COBOL: MicroFocus COBOL85 (not COBOL74) *+Ex=  
+CuG #%* ISO Pascal: Turbo Pascal (DOS & Mac), Unix PC, *+Ex=  
+CuG #%* AIX VS Pascal *+Ex=  
+CuG #%* ANSI Fortran: Unix f77, AIX VS Fortran *+Ex=  
+CuG #%* ANSI C (lint free): Microsoft C, Unix CC, GCC, Turbo C++, *+Ex=  
+CuG #%* Think C (Mac) *+Ex=  
+CuG #%* PostScript: GoScript, HP/Adobe cartridge, *+Ex=  
+CuG #%* Apple LaserWriter *+Ex=  
+CuG #%* Shell script: gnu bash, sh (SysV, BSD, MKS), ksh *+Ex=  
+CuG #%* 8086 machine language: MS-DOS 2.00, 3.03, 4.01, 5.00 beta *+Ex=  
+CuG #%* VPix & DOS Merge (under unix) *+Ex=  
+CuG #%* SoftPC (on a Mac), MKS shell *+Ex=  
+CuG #%* *+Ex=  
+CuG #%* Usage: *+Ex=  
+CuG #%* 1. Rename this file to polyglot.[cob|pas|f77|c|ps|sh|com] *+Ex=  
+CuG #%* 2. Compile and/or run with appropriate compiler and *+Ex=  
+CuG #%* operating system *+Ex=  
+CuG #%* *+Ex=  
+CuG #%* Notes: *+Ex=  
+CuG #%* 1. We have attempted to use only standard language features. *+Ex=  
+CuG #%* Without the -traditional flag gcc will issue a warning. *+Ex=  
+CuG #%* *+Ex=  
+CuG #%* 2. This text is a comment block in all seven languages. *+Ex=  
+CuG #%* *+Ex=  
+CuG #%* 3. When run as a .COM file with MS-DOS it makes certain *+Ex=  
+CuG #%* (not unreasonable) assumptions about the contents of *+Ex=  
+CuG #%* the registers. *+Ex=  
+CuG #%* *+Ex=  
+CuG #%* 4. When transfering from Unix to DOS make sure that a LF *+Ex=  
+CuG #%* is correctly translated into a CR/LF. *+Ex=  
+CuG #%* *+Ex=  
+CuG #%* Please mail any comments, corrections or additions to *+Ex=  
+CuG #%* peril@extro.ucc.su.oz.au *+Ex=  
+CuG #%* *+Ex=  
+CuG #%*------------------------------------------------------------------*QuZ=  
+CuG #%* *+Ex=  
+CuG #%*!Mx)ExQX4ZPZ4SP5n#5X!)Ex+ExPQXH,B+ExP[-9Z-9Z)GA(W@'UTTER_XYZZY'CPK*+  
+CuG #(* *(  
+C # */); /*(  
+C # *) program polyglot (output); (*+  
+C # identification division.  
+C # program-id. polyglot.  
+C #  
+C # data division.  
+C # procedure division.  
+C #  
+C # * ))cleartomark /Bookman-Demi findfont 36 scalefont setfont (  
+C # * (  
+C #  
+C # * hello polyglots$  
+C # main.  
+C # perform  
+C * ) 2>_$$; echo "hello polyglots"; rm _$$; exit  
+ print  
+C stop run.  
+ -*, 'hello polyglots'  
+C  
+C print.  
+C display "hello polyglots". (  
+C */ int i; /*  
+C */ main () { /*  
+C */ i=printf ("hello polyglots\n"); O= &i; return *O; /*  
+C *) (*  
+C *) begin (*  
+C *) writeln ('hello polyglots'); (*  
+C *) (* )  
+C * ) pop 60 360 (  
+C * ) pop moveto (hello polyglots) show (  
+C * ) pop showpage ((  
+C *)  
+ end .(* )  
+C)pop% program polyglot. *){*/}  
+</verbatim>  
+  
  
 To compile (as C code) and run on linux: 
  $ gcc -xc polyglot.src -o polyglot && ./polyglot 
 (The -xc switch forces the language to be c). 
@@ -95,4 +99,19 @@
 or: 
  $ chmod +x polyglot.src ; ./polyglot.src 
  
 I think you get the idea... 
+  
+----  
+!!! PolyGlot #2  
+The following is a polyglotic quine. (A quine is a program that prints its own source code out when run, without cheating by using open(2) on itself)  
+  
+polyglotC++PerlPythonC.c:  
+  
+<verbatim>  
+#include <stdio.h>  
+#define q(a,...) a  
+#define substr q  
+#define eval(a) main(){char c[]=a,n=10;c[419]=0;printf(c+4,n,n,n,n,34,34,n,34,39,c+4,39,34,n);}/* Copyright (C) Thomas Schumm <phong@phong.org>  
+exec("from sys import*;substr=q=lambda y:exit(stdout.write(y[4:-46]%((10,)*4+(34,34,10,34,39,y[4:-46],39,34,10))))",None);#*/  
+eval(substr(q("$p='#include <stdio.h>%c#define q(a,...) a%c#define substr q%c#define eval(a) main(){char c[]=a,n=10;c[419]=0;printf(c+4,n,n,n,n,34,34,n,34,39,c+4,39,34,n);}/* Copyright (C) Thomas Schumm <phong@phong.org>%cexec(%cfrom sys import*;substr=q=lambda y:exit(stdout.write(y[4:-46]%%((10,)*4+(34,34,10,34,39,y[4:-46],39,34,10))))%c,None);#*/%ceval(substr(q(%c$p=%c%s%c;printf($p,(10)x4,34,34,10,34,39,$p,39,34,10)%c),1,-1))%c';printf($p,(10)x4,34,34,10,34,39,$p,39,34,10)"),1,-1))  
+</verbatim>