Skip to content

Instantly share code, notes, and snippets.

@NeoCat
Created April 21, 2014 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NeoCat/11144857 to your computer and use it in GitHub Desktop.
Save NeoCat/11144857 to your computer and use it in GitHub Desktop.
12 language polyglot which adds 2 numbers from stdin. Runnable in Bash/Brainf**k/C/CLIPS/INTERCAL/Perl/Perl 6/Python/Ruby/Pike/Prolog (swi)/Whitespace, tested in Ideone.com http://ideone.com/JmXx4l .
#define x /* ++[>[-]+>>++++++++++[>++++++[>++++++<-]>++<<<<[[-]>+>>>>,----------<<<<<]>[<+>-]>>>>[>+>+<<-]<[>>-<<-]>>>>+<[[-]>-<]>[[-]<<[+]<<<<<<[-]>>[-]+<<>>>>>>>>]>>>>>>>>>>[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<<<<[>>>>+<<<<-]<<<<-]<<<[>>+>+<<<-]>>[<<+>>-]>-[[-]>>>>>>>+++++++++[>>>>>>>>>>>>>>>>>>>>[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<<-]<<<<<<<]<<<-]>>>>>>>>>>>>>>>>>>>>[>>>>>>>>>+<<<<<<<<<-]<[>>>>>>>>>+<<<<<<<<<-]<[>>>>>>>>>+<<<<<<<<<-]<[>>>>>>>>>+<<<<<<<<<-]<[>>>>>>>>>+<<<<<<<<<-]<[>>>>>>>>>+<<<<<<<<<-]<[>>>>>>>>>+<<<<<<<<<-]<[>>>>>>>>>+<<<<<<<<<-]<[>>>>>>>>>+<<<<<<<<<-]<++++++++[>>>>>>>>>>[<<<<<<<<+<+>>>>>>>>>-]<<<<<<<<[>>>>>>>>+<<<<<<<<-]+++++++++[<[[<<+>>-]<<->>]<<[>>+<<-]>>>-]<[[-]>>>>>>>>>---------->+<<<<<<<<<<][<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]>[<+>-]><<<<<<<<<<<<<<<<<<<-]>>>>>>>>>>>>+++++++++[<<[[->>>>+<<<<]>>>+<<<]>>>>[-<<<<+>>>>]<<<>>[[->>+<<]<<++++++[<++++++++>-]<.[-]>>>]>>[-<<+>>]<<<<<<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]<[>+<-]>>>>>>>>>>>-] [# Brainf**k
# :-set_prolog_flag(verbose,silent). :-prompt(_, ''). :-use_module(library(readutil)). main:-read_line_to_codes(current_input, C1),read_line_to_codes(current_input, C2),number_codes(X, C1),number_codes(Y, C2),Z is X+Y->writeln(Z);halt. :-main. :- # prolog
0 and nil and q <<2;
''' #'
2
eval 'read a;read b;echo $[a+b];exit;#' if !1; #bash
puts gets.to_i+gets.to_i; #Ruby
__END__
>;say get()+get();' #Perl 6
#>;print <>+<>,"\n"; __END__ #Perl
#CLIPS
(defrule readin ?f<-(initial-fact) => (assert (number1 (read)) (number2 (read))))
(defrule writeout ?f<-(number1 ?n)(number2 ?m) => (printout t (+ ?n ?m) crlf) (assert (initial-fact)))
(reset)
(run)
(exit)
DO (10) NEXT
DO :6 <- :7
DO (10) NEXT
DO :1 <- :7
DO :2 <- :6
DO (1500) NEXT
DO :6 <- :3
DO (20) NEXT
DO .3 <- #10
DO (8) NEXT
DO GIVE UP
(10)PLEASE NOTE THAT INPUT INTEGER :7
DO :7 <- #0
PLEASE (15) NEXT
(15)DO FORGET #1
(11)PLEASE DO (7) NEXT
DO .32 <- .1
DO .2 <- #65488
DO (1009) NEXT
DO (12) NEXT
DO .1 <- .32
DO .2 <- #48
DO (1010) NEXT
PLEASE :1 <- :7
DO :2 <- #10
DO (1540) NEXT
DO :1 <- :3
DO :2 <- .3
DO (1500) NEXT
DO :7 <- :3
DO (15) NEXT
(13)DO RESUME .4
(12)DO (13) NEXT
DO RESUME #2
(7) PLEASE NOTE THAT INPUT 1CHAR .1
DO ,1 <- #1
DO WRITE IN ,1
DO .1 <- ,1 SUB #1
DO .2 <- .97
DO (1000) NEXT
DO .97 <- .3~#255
DO .1 <- .97
DO RESUME #1
(9) PLEASE NOTE THAT PRINT 1DIG NUM .1
DO .2 <- #48
DO (1000) NEXT
(8) PLEASE NOTE THAT OUTPUT 1CHAR .3
DO .2 <- .3~#1
DO .1 <- "#0$.3"~"#128$#254"
DO .4 <- #127
DO (5) NEXT
(5) PLEASE DO FORGET #1
DO (1) NEXT
DO .2 <- ".2$.1"~"#127$#1"
DO .1 <- "#0$.1"~"#128$#254"
DO .4 <- "#0$.4"~"#128$#254"
DO (5) NEXT
(1) DO .5 <- .4~#1
DO .5 <- ".4$#1"~#3
DO (2) NEXT
DO FORGET #1
DO (4) NEXT
(2) DO (3) NEXT
(3) DO RESUME .5
(4) PLEASE FORGET #1
DO .98 <- .2
DO .1 <- .99
DO .99 <- .98
PLEASE DO (1010) NEXT
DO .3 <- .3~#255
PLEASE DO ,1 <- #1
PLEASE DO ,1 SUB #1 <- .3
PLEASE READ OUT ,1
PLEASE RESUME #1
(20)PLEASE NOTE THAT OUTPUT INT :6
DO .95 <- #1
DO .96 <- #0
DO STASH .95+.96
PLEASE (21) NEXT
(21)DO FORGET #1
DO :1 <- :6
DO :2 <- #10
PLEASE (1550) NEXT
DO :5 <- :3
DO :1 <- :3
PLEASE (1540) NEXT
DO :1 <- :6
DO :2 <- :3
DO (1510) NEXT
DO .95 <- #2
DO .96 <- :3~#255
DO STASH .95+.96
DO :6 <- :5
DO :1 <- :6
DO :2 <- #65535$#65535
PLEASE (1509) NEXT
DO (23) NEXT
DO (21) NEXT
(23)PLEASE DO (24) NEXT
DO FORGET #1
DO (25) NEXT
(24)DO RESUME :4
(25)DO FORGET #1
PLEASE RETRIEVE .95+.96
PLEASE (26) NEXT
DO .1 <- .96
PLEASE (9) NEXT
DO (25) NEXT
(26)DO (27) NEXT
DO RESUME #2
(27)DO RESUME .95
PLEASE NOTE THAT THIS IS INTERCAL
*/
#if __PIKE__
int main() {write((int)Stdio.stdin->gets()+(int)Stdio.stdin->gets()+"\n");} //pike
#else
int main(){int a,b;scanf("%d%d",&a,&b);printf("%d\n",a+b);return 0;} //C
#endif
//'#]''';print int(raw_input())+int(raw_input()); #Python #Whitespace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment