Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TRICK

Jimmy Ngu
October 06, 2015

 TRICK

A showcase of the Transcendental Ruby Imbroglio Contest for RubyKaigi contest held in 2013

Jimmy Ngu

October 06, 2015
Tweet

More Decks by Jimmy Ngu

Other Decks in Programming

Transcript

  1. 8IBUJT53*$, w 5SBOTDFOEFOUBM㷧USBO㷧TFO㷦EFO U M  PGPSSFMBUJOHUPBTQJSJUVBMPSOPOQIZTJDBMSFBMN  VOXPSMEMZ w

    *NCSPHMJPJN㷦CS⒕MZ⒕  BOFYUSFNFMZDPOGVTFE DPNQMJDBUFE PSFNCBSSBTTJOHTJUVBUJPO
  2. (PBMPG53*$, w 8SJUFUIFNPTU5SBOTDFOEFOUBM *NCSPHMJP3VCZ1SPHSBN w 5PJMMVTUSBUFTPNFPGUIFTVCUMFUJFT BOEEFTJHOJTTVFT PG 3VCZ w

    5PTIPXUIFSPCVTUOFTTBOEQPSUBCJMJUZPG3VCZJOUFSQSFUFST w 5PTUBCJMJ[FUIFTQFDPG3VCZCZUIFQSFTFODFPGWBMVBCMFCVU VONBJOUBJOBCMFDPEF
  3. *0$$$8JOOFS JODMVEFTUEMJCI JODMVEFTUSJOHI JODMVEFVOJTUEI JODMVEFGDOUMI JODMVEFTZTTUBUI EFpOF"DBMMPD  TJ[FPG N

     EFpOF%N EFpOF- EFpOF1NBMMPD  EFpOF3 EFpOF4  EFpOF6GPS  EFpOF7JG  EFpOF8-J EFpOF9-B EFpOF:-C EFpOF;-D UZQFEFGTUSVDU5 @TUSVDU5\JOUU JDIBS B@ C D E F G^N Y ZTUSVDUTUBU[JOUVWPJE ) JOU, JOUD \SFUVSOTUSDIS aOaU D ^WPJE# @T @Q \T:SFBMMPD T: 4T8 TJ[FPG @ T:<T 8>Q^@$ DIBS E JOUM \@T"T9E E1 T8M E TUSMFO E MSFUVSOT^@& @T \@S "JOUJ6JT8 \6JT83, T9<J>  J4JOUKJ6KT83, T9<K>  K47KJ # 
  4. S $ T9 J KJ J4K^SFUVSOS^JOU' @B @C \SFUVSOB8C83NFNDNQ B9

    C9 B8 ^WPJE * @T DIBSD \DIBS E1  ED# T $ E   ^WPJE + DIBS E JOUM JOUP @W \@O$ E M @X6MM %E8 \X%E:<M4>7' X; O \7PX8 SFUVSOHPUP0^^ # %E X" X;O0X8PX-EW^JOU. @C JOUQ DIBS U JOU H \@G"G-F"G9UJOUIH J K OC 8DIBSD E PC96QO \UK G9 JOULQ@S)6QO \JOUM6QO3P<Q> \M4Q4^DP <Q4>7D?ccMccH \ED3J3HccD3H?7EccTUSDIS U D \S$ P L QLE M 7E3M \S9<S8>D?  DD^CSFBL^^D^7K # G-F S S$ P L OL  S "TXJUDI D \DBTFK4DBTFCSFBLDBTFHPUP0DBTFTXJUDI EP<Q4> \DBTF* G-F  E CSFBLEFGBVMU* S;" E HPUPPDBTFDBTFS-GGS-F"S9E? ^ GS^ CSFBLEFGBVMU7G-G \S;G-FGG-GPS-U4# G-F S ^FMTFHPUP0^JG-G3H HJ I^0YDG-FYUDSFUVSOQ^@/ @T \@P$ )  6JOUJJT8 \@QT:<J4> 7Q-U \@O/ Q; Q$ )  6JOUKK%E8 \@X%E:<K4>7' X; O \. X-E     Q/ YD CSFBL^^^P9SFBMMPD P9 P8 Q8 NFNDQZ P9 P8Q8 Q9 Q8 ^SFUVSOP^@0 @ U \6JOUJJ%F8 \@T%F:<J4>7' T; U SFUVSOT^@T"T;UT-E"T-U# % F T SFUVSOT^WPJE2 @T \@ET;7TUBU NFNDQZ DBMMPD  E8  E9 E8 [ T-U[TU@NUJNF 7T84 \VT-E83T-UJOUJ K LT-U@D) U6V3JT-E8 \@BT-E:<J4> 6KV3KB-E8 \2 U0 B-E:<K4> LcU-UccU-UT-U^7B;8 \DB;7B- E8 +     B-E: ^^6KV3D3L3KD8 \+ !   E T/ D:<K4> 6T83 TUSDIS !  T9  T94VTZTUFN T9 ^^^WPJE( @C \6C83, C9  \C94C8^^ JOUNBJO JOUJ DIBS B DIBS F \%E"%F"%D"DIBSQ<>/#-'a/CMGHKNGa RQ6 R  + Q   $ B4  6JJJ  \6 B \R B6 R3 R? R47 R + B R B J  $ R   FMTF7J # %D $ B  B4^BF^TUBU Q  [ J[TU@TJ[F@C$ )  D EC8SFBE PQFO Q   C91J J 6VJ \7C9<V>? \6VJ3, C9<V>  V4V. C V   ZY TXJUDI YU \DBTFV. C V   %GD"D-E& / YD D;"E& / ZD 6E8 # 0 E :4 -E D CSFBLDBTFV. C V   ( D/ YD ( E/ ZD 6E83, E9<E8>  + E9 4E8  D ^^FMTF\V. C 4V   * YD  # %G; YD ^^7%D83%F8 # %D %F:<> ; 6VV3%D8 2 0 %D:4 SFUVSOV^
  5. 53*$, w +VEHFT ‣ :VTVLF&OEPI !NBNFUUFS3VCZDPNNJUUFS*0$$$XJOOFS  ‣ ,PJDIJSP&UP !FUP.FEJB"SUJTU$IBJSNBOBU/JDP/JDP(BLLBJ#FUB

     ‣ 4IJOJDIJSP)BNBKJ !TIJOI5IFBENJOPGBOBSDIZHPMG*0$$$XJOOFS  ‣ :VUBLB)BSB !ZIBSB5IFBVUIPSPG+BQBOFTFFTPMBOHCPPL  ‣ :VLJIJSP.BUTVNPUP BLBNBU[!ZVLJIJSP@NBU[5IFDSFBUPSPG3VCZ  ‣ 4VO1BSL BLBMFPOJE5IFTUTVQFS3VCZHPMGFS  ‣ )JSPGVNJ8BUBOBCF !FCBO3VCZDPNNJUUFS5IFOETVQFS3VCZHPMGFS
  6. l.PTU$PNQFUJUJWFz            eval$s      

             =(%q(;eval((%w(Z="    \s"*2;V="1sj6w3u1i    kfyikb6y01xsjdceda              j4".to                _i(36);R=0..9;a,b=    [[*$s.lines],[*$<]    ].map{|s|n=0;1.ste              p(w=s.                map{|l|l.chomp.siz    e}.max,2+3*m=48/(w    -­‐70)){|x|n=n*10+R.   find{|n|R.al                l?{|i|                            V[n*15            +i]<1=    =Z<(s[            i/3*3+   1][i%3*m+x]|                |Z)}}}                            ;n};d=            10**((    b-­‐a)/4            e2);[[   STDOUT,a+d=d                *32/(d                            +1)],[            $stdou    t,b-­‐d]            ].map{              |o,n|;                s="eval$s=(%q("+$s    [/(.*?            ~){3}/    m];15.            times{              |y|l="                %d"%(n+0.5);l=(l.b    ytes.m            ap{|c|    (0..2)            .map{|              x|"x\s                "[V[c*15-­‐720+y/3*3    +x]]*(            24/l.s    ize)}*            "";}*Z              ).rstr                                        ip.gsu    b(?x){            s<<V.t    o_s(20            );s.sl              ice!(/                                        \S/)};    o.puts            (y<14?    l:l[0.            .-­‐4]+"              ~))")}                                        ;o.put    s})*""            ));;%~    7h7hhf            1j626e   0dh6392fa6b6b45iid    c59c7h7hhf1j626e0d    h6392fa6b6b45iidc5    9c7h7hhf1j626e0dh6   392fa6b6b45iidc59c    7h7hhf1j626e0dh639    2fa6b6b45iidc59c7h    7hhf1j626e0dh6392f   a6b6b45iidc59c7h7h    hf1j626e0dh6392fa6    b6b45iidc59c7h7hhf    1j626e0dh6392fa~))   CZ:VTVLF&OEPI
  7. ,FZ53*$,T&YQMPJUT w 2VJOF w GPSNBUUJOHDPEF w DIFBU0$3 w DBMDVMBUJOH&MP3BUJOH w

    BCVTFPGJ            eval$s                =(%q(;eval((%w(Z="    \s"*2;V="1sj6w3u1i    kfyikb6y01xsjdceda              j4".to                _i(36);R=0..9;a,b=    [[*$s.lines],[*$<]    ].map{|s|n=0;1.ste              p(w=s.                map{|l|l.chomp.siz    e}.max,2+3*m=48/(w    -­‐70)){|x|n=n*10+R.   find{|n|R.al                l?{|i|                            V[n*15            +i]<1=    =Z<(s[            i/3*3+   1][i%3*m+x]|                |Z)}}}                            ;n};d=            10**((    b-­‐a)/4            e2);[[   STDOUT,a+d=d                *32/(d                            +1)],[            $stdou    t,b-­‐d]            ].map{              |o,n|;                s="eval$s=(%q("+$s    [/(.*?            ~){3}/    m];15.            times{              |y|l="                %d"%(n+0.5);l=(l.b    ytes.m            ap{|c|    (0..2)            .map{|              x|"x\s                "[V[c*15-­‐720+y/3*3    +x]]*(            24/l.s    ize)}*            "";}*Z              ).rstr                                        ip.gsu    b(?x){            s<<V.t    o_s(20            );s.sl              ice!(/                                        \S/)};    o.puts            (y<14?    l:l[0.            .-­‐4]+"              ~))")}                                        ;o.put    s})*""            ));;%~    7h7hhf            1j626e   0dh6392fa6b6b45iid    c59c7h7hhf1j626e0d    h6392fa6b6b45iidc5    9c7h7hhf1j626e0dh6   392fa6b6b45iidc59c    7h7hhf1j626e0dh639    2fa6b6b45iidc59c7h    7hhf1j626e0dh6392f   a6b6b45iidc59c7h7h    hf1j626e0dh6392fa6    b6b45iidc59c7h7hhf    1j626e0dh6392fa~))  
  8.        %~          7h7hhf1j626e0dh6392fa6b6b45iidc59c  

           7h7hhf1j626e0dh6392fa6b6b45iidc59c          7h7hhf1j626e0dh6392fa6b6b45iidc59c          7h7hhf1j626e0dh6392fa6b6b45iidc59c          7h7hhf1j626e0dh6392fa6b6b45iidc59c          7h7hhf1j626e0dh6392fa6b6b45iidc59c          7h7hhf1j626e0dh6392fa~      )   )   eval$s=(%q(;eval   (      (          %w(              Z="\s"*2;V="1sj6w3u1ikfyikb6y01xsjdcedaj4".to_i(36);              R=0..9;              a,b=[[*$s.lines],[*$<]].map{|s|                  n=0;                  1.step(w=s.map{|l|l.chomp.size}.max,2+3*m=48/(w-­‐70)){|x|                      n=n*10+R.find{|n|                          R.all?{|i|                              V[n*15+i]<1==Z<(s[i/3*3+1][i%3*m+x]||Z)                          }                      }                  };                  n              };              d=10**((b-­‐a)/4e2);              [                  [STDOUT,a+d=d*32/(d+1)],                  [$stdout,b-­‐d]              ].map{|o,n|                      ;s="eval$s=(%q("+$s[/(.*?~){3}/m];                      15.times{|y|                          l="%d"%(n+0.5);                          l=(l.bytes.map{|c|                              (0..2).map{|x|                                  "x\s"[V[c*15-­‐720+y/3*3+x]]*(24/l.size)}*"";                              }*Z).rstrip.gsub(?x){s<<V.to_s(20);                          s.slice!(/\S/)                      };                      o.puts(y<14?l:l[0..-­‐4]+"~))")                  };                  o.puts})*""              )          );;   %JTTFDUJPO $BMDVMBUF&MP3BUJOH 0VUQVUDPEFUP0$3 'JMMFST
  9. l8PSTU"CVTFPG$POTUBOUTz def  _(&b)$><<-­‐>(x){x  ?  (String===x  ?x.upcase:   (Class===x  ?  x

     :  x.class).name[$a?0:($a=5)]):   "  "}[  begin  b[];rescue  Exception;$!;end  ]  end   _  {                                  return                                    }   _  {                        method(:p).unbind                        }   _  {                                eval  "{  "                                }   _  {                      Thread.current.join                      }   _  {                                      nil                                      }   _  {                                  select                                    }   _  {                                    ruby                                      }   _  {                              self.class                                }   _  {                    Thread.current.group                      }   _  {                                nil.to_h                                  }   _  {                    "\xFF".encode("big5")                    }   _  {                                    raise                                    }   _  {                                  [0][1]                                    }   _  {                      Regexp.compile  "*"                        }   _  {                      RUBY_COPYRIGHT[32]                        }   _  {                                  binding                                  }   _  {                        :s.class.name[1]                          }   _  {                                    warn                                      }   _  {                                [a:  :b][0]                              }   _  {                                  methods                                  }   _  {                                IO.class                                  }   _  {                              {}.fetch(0)                              }   _  {                                open  "  "                                  }   _  {                              1000000.chr                              }   CZ:VUBLB)BSB %JTIPOBSBCMF .FOUJPO
  10. ,FZ53*$,T&YQMPJUT w 3VCZ$POTUBOUT w  def  _(&b)$><<-­‐>(x){x  ?  (String===x  ?x.upcase:

      (Class===x  ?  x  :  x.class).name[$a?0:($a=5)]):   "  "}[  begin  b[];rescue  Exception;$!;end  ]  end   _  {                                  return                                    }   _  {                        method(:p).unbind                        }   _  {                                eval  "{  "                                }   _  {                      Thread.current.join                      }   _  {                                      nil                                      }   _  {                                  select                                    }   _  {                                    ruby                                      }   _  {                              self.class                                }   _  {                    Thread.current.group                      }   _  {                                nil.to_h                                  }   _  {                    "\xFF".encode("big5")                    }   _  {                                    raise                                    }   _  {                                  [0][1]                                    }   _  {                      Regexp.compile  "*"                        }   _  {                      RUBY_COPYRIGHT[32]                        }   _  {                                  binding                                  }   _  {                        :s.class.name[1]                          }   _  {                                    warn                                      }   _  {                                [a:  :b][0]                              }   _  {                                  methods                                  }   _  {                                IO.class                                  }   _  {                              {}.fetch(0)                              }   _  {                                open  "  "                                  }   _  {                              1000000.chr                              }  
  11. %JTTFDUJPO def  _(&b)      $><<        

       -­‐>(x){              x  ?  (String  ===  x  ?  x.upcase  :   (Class===x  ?  x  :  x.class).name[$a?0:($a=5)])  :  "   "            }[                begin                    b[]              rescue  Exception                  $!              end            ]     end   _  {                                  return                                    }   _  {                        method(:p).unbind                        }   _  {                                eval  "{  "                                }   _  {                      Thread.current.join                      }   _  {                                      nil                                      }   _  {                                  select                                    }   _  {                                    ruby                                      }   _  {                              self.class                                }   _  {                    Thread.current.group                      }   _  {                                nil.to_h                                  }   _  {                    "\xFF".encode("big5")                    }   _  {                                    raise                                    }   _  {                                  [0][1]                                    }   ... w UPSFQMBDFlQVUTz w  w <>UPFYFDVUFCMPDL w UPSFUVSO&YDFQUJPO
  12. l.PTU$MBTTJDz                  

                     eval$C=%q(at_exit{                                      IO.popen("./pl","wb"){|g|h=[0]*80                                      $><<"\s"*18+"eval$C=%q(#$C);S=%:"                                      (S<<m=58).lines{|l|s=[128]*n=20E2                                      t=0;                      h.map!{|v|d=?!==l[                                      t]?1                                                  :(l[                                      t]==                                                  ?#)?                                      0*v=                                                  6:03                                      (v<1                                                  ?[]:                                      0..n                                                  -­‐1).                                      each                                                  {|z|                                      s[z]                                                  +=2*                      M.sin(($*[0]                                                  ||1)                  .to_f*M.sin(y=                                  40*(z+m)*2**                  (t/12E0)/463)+                              y)*(v-­‐z*d/n)};                  t+=1;v-­‐d};m+=                                n;g.flush<<(s.                      pack"C*");                                  puts(l)}}};M=                                                                                Math);S=%:                                    Jesu,  Joy  of  Man's  Desiring                                          Johann  Sebastian  Bach                      #                      |                                              #                      |                                                  #                                              #            #        #      #                                              |            |        |            #                                              |            |      #          #                                        #                      #    #        #                                        |                      |    |                #                                        |                      |        #        #                              #                                      #      #    #                              |                                      |      |              #                              |                                      |  #                #                                        #                      #            #              #  
  13.                    

           |                                      |      |              #                              |                                      |  #                #                                        #                      #            #              #                                        |                      |            |    #                                        |                      |    #      #                                        #            #        #    #                                        |            |        |        #                                        |            |    #                #                          #                      #            #              #                          |                      |            |                  #                          |                      |                #                  #                              #                            #        #            #                              |                            |        |        #                              |                            |                #                                #                      #      #        #                                |                      |      |            #                                |                    #|            #                                    #            #    |          #                                    |            |    |            #                                    |                  |  #            #                                            #    #        #            #                                            |    |                #    |                                            |    |                  #  #                                    #                              #    #    #                                    |                              |    |  #                                    |                              |    #                                              #            #        #      #                                              |            |        #      |                                              |                    #    #  |                                        #    #                      #      #                                        |    |                      |            #                                        |    |                    #          #                                #                              #    #        #                                |                              |    |                #                                |                              |        #        #                              #                                      #      #    #                              |                                      |      |              #                              |                                      |  #                #                                        #                      #            #              #                                        |                      |            |    #                                        |                      |    #      #                                    #                #        #    #                                    |                |        |        #                                    |                |              #      #                                #                      #      #        #                                |                      |                |        #                                |                      |          #          #                                  #                            #    #      #                                  |                            |    |  #                                  |                            #    #                                    #            #        #  
  14.                    

                 |            |        |        #                                    |                  #  |      #                      #                              #    #        #                      |                              |    |        |                      |                              |    |        |                      |                              |    |        |                      |                              |    |        |                      |                              |    |        |                      |                              |    |        |                      |                              |    |        |                      |                              |    |        |                      |                              |    |        |                      |                              |    |        |                      |                              |    |        :   CZ:VTVLF&OEPI #30/;&
  15. l.PTU3FBEBCMFz begin  with  an  easy  program.   you  should  be

     able  to  write   a  program  unless  for  you,   program  in  ruby  language  is   too  difficult.  At  the  end   of  your  journey  towards  the   ultimate  program;  you  must   be  a  part  of  a  programming   language.  You  will  end  if   you  !=  program   CZ4IJOJDIJSP)BNBKJ 4*-7&3
  16. ,FZ53*$,T&YQMPJUT w CFHJOFOEJGGBMTF w GPSTUBUFNFOUGPSEFpOJOHWBSJBCMFT begin  with  an  easy  program.

      you  should  be  able  to  write   a  program  unless  for  you,   program  in  ruby  language  is   too  difficult.  At  the  end   of  your  journey  towards  the   ultimate  program;  you  must   be  a  part  of  a  programming   language.  You  will  end  if   you  !=  program  
  17. %JTTFDUJPO begin      with(an(easy(program.you(should(be(able(to(write))))))))      unless  (for  you,

     program  in  ruby(language(is))  do          too(difficult.At(the))      end)          a(program())      end      of(your(journey(towards(the))))      ultimate(program)      you(must)      be(a(part(of(a(programming)))))      language.You(will)   end  if  (you  !=  program) XIJUFRVBSLQBSTFS NCKVOQBSTFS "45 begin     with  an  easy  program.you   should  be  able  to  write   a  program  unless  for  you,   program  in  ruby  language  is   too  difficult.  At  the  end   of  your  journey  towards  the   ultimate  program;     you  must   be  a  part  of  a  programming   language.  You  will     end  if  you  !=  program  
  18. ,FZ53*$,T&YQMPJUT w $POUBJOT1SJOUT"4$**$IBSBDUFSGSPNY UPYFFYBDUMZPODF w Y    ʜ

     YF    w   !"#$%&'()*+,-./0123456789:;<a>?@AB CDEFGHIJKLMNOPQRSTUVWXYZ[\c^d
  19. !@THEqQUICKbBROWNfFXjJMPSvVLAZYDGgkyz&[%r{\"}mosx,4>6]|?'while(putc   3_0-­‐~$.+=9/2^5;)<18*7and:`# %JTTFDUJPO 3_0-­‐~$.+=9/2^5;)<18*7 while  ((putc(30  -­‐  (~($.  +=

     ((9  /  2)  ^  5))))  <  (18  *  7))  &&  :`)      ((!@THEqQUICKbBROWNfFXjJMPSvVLAZYDGgkyz)  &  [/"/mosx,  (4  >  6)])  |  "'"   end .PTU*OUFSFTUJOH1BSU SVCZHPMGFS`TCFTUGSJFOE