2009-04-20

polyglot: conclusion

reminder: this article is part of a serie.

well that's it... the best things do have an end, and this polyglot exercise is no exception. i hope you learnt quite a few things during this trip in troubled programming water - and most of all, i hope you enjoyed it. i did, anyway! :-)

our polyglot program now supports the following languages:
  • perl
  • c and c++
  • pascal
  • bash (and also ksh and ksh-like shells)
  • fortran
  • befunge
  • brainfuck and ook
  • html/javascript


that's not bad. here's the compacted program:


(*foo /*bar#[^" Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. "
*1337#) 2>/dev/null;i=0; a=1; b=1;echo $a;while test $i -lt 9;do c=$((a+b));a=$b;b=$c;echo $a;i=$((i+1));done;exit; Ook. Ook.
*0) if 0; sub C () {} # Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook! Ook. Ook. */ );
#include <stdio.h> /* Ook. Ook. Ook. Ook. Ook. Ook. */
#include <stdlib.h> /* Ook. Ook. Ook. Ook. Ook. Ook. */
#define C /* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? */
#define $ /* Ook. Ook. Ook. Ook? Ook. Ook. Ook? Ook.
C ; " Ook? Ook. Ook! Ook? Ook! Ook! Ook. Ook? Ook! Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook? Ook. Ook. Ook. Ook? Ook. Ook. */
C ; main () { /*"; { # Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? */ int $ i, $ n1, $ n2, $ n3;
C ; $ i = 0; $ n1 = 1; $ n2 = 1; printf( "%d\n", $ n1 ); while ( $ i < 9 ) {
C ; $ n3 = $ n1 + $ n2; $ n1 = $ n2; $ n2 = $ n3; printf( "%d\n", $ n1 ); $ i++; }}
#define foo /* Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook?
C ; __END__ Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook. Ook? Ook. Ook?
*) program foo; var i, n1, n2, n3 : integer; begin i := 0; n1 := 1; n2 := 1; writeln(n1); while i < 9 do begin (* Ook! Ook?
*) n3 := n1 + n2; n1 := n2; n2 := n3; writeln(n1); i := i + 1; end; end. (* Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook?
integer i, n1, n2, n3 ; n1 = 1 ; n2 = 1 ; print '(I0)', n1 Ook. Ook? Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
do 10 i = 1, 9 Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
n3 = n1 + n2 ; n1 = n2 ; n2 = n3 ; print '(I0)', n1 Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
10 continue ; end ]++++++++++>[-]++++++++++>+>+<<[->[>>+>+>+<<<<-]>[<+>>>>+<<
* <-]>>>[<<<+>>>-]<>+++++++++<[>>>+<<[>+>[-]<<-]>[<+>-]>[<<++++++++++>>>+<-]<<-<-]>>>>[<<<<+>>>>-]<<<<>[-]<[+++++++++++++++++++++++
* +++++++++++++++++++++++++.------------------------------------------------[<---------->-]]<++++++++++++++++++++++++++++++++++++++
* ++++++++++.------------------------------------------------<<<<.>>>>[-]<<<][ Ook? Ook. Ook! Ook? Ook. Ook? Ook. Ook? Ook. Ook?
* Ook. Ook. Ook? Ook. Ook? Ook. Ook! Ook? Ook. Ook? Ook. Ook. Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook? Ook. Ook! Ook!
* Ook? Ook! Ook. Ook? Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook. Ook? Ook! Ook? Ook? Ook. Ook? Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook.
* Ook? Ook. Ook! Ook! Ook? Ook! Ook? Ook. Ook? Ook. Ook! Ook! Ook? Ook. Ook! Ook! Ook? Ook! Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook?
* Ook! Ook? Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.
* Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
* Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
* Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
* Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
* Ook! Ook! Ook! Ook! Ook! Ook? Ook? Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
* Ook! Ook! Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook.
* Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
* Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
* Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook!
* <html><script language="javascript">function foo_it(){var foo;var i=0;var n1=1;var n2=1;document.writeln(n1); foo // Ook! Ook!
*= 2;while(i<9){n3=n1+n2;n1=n2;n2=n3;document.write("<br>",n1);i++}}</script><body onload="foo_it()"></body></html> // Ook! Ook!
*n 1:86*+,a,86*+,a,11884pv Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! Ook! > " Ook! Ook! Ook! Ook! Ook! Ook! "
*$ +,>a,94g\84g1-:84p!#@_>:94p+:a`#v_:'0 ; Ook! Ook! Ook? Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook! Ook. ; ::
* Ook. Ook? ^ ,+*68-*+55/+55::,+*+338/+55:< Ook. Ook? Ook. Ook? Ook. Ook? Ook! Ook? Ook! Ook! Ook? Ook! Ook? Ook. */
#define fubar Ook? Ook. Ook? Ook. Ook? Ook! ]*)



that's not to say that we cannot add other languages. out of my mind, i guess one could fit cobol, postscript, and maybe ruby... (note: i don't think python can be added since pascal renders it too difficult. removing pascal would allow it - i have some working polyglot with python).

but now it's your turn to work, and continue this serie! clone the git repository, send me your patches, and i'll post them in this blog...

enjoy! :-)

1 comment:

  1. What a great series this was!

    Although I prefer to think of polyglot programs in a more purist fashion, in which there can be no repeated code inside the program, it restricts a lot the multi-language possibilities. Another series, perhaps? :)

    Anyway, nice job!

    ReplyDelete