Merry Christmas

in #christmaslast year

Merry Christmas
tree.gif

The above was generated by this perl code, which generates awk code, which draws the tree:

                                                                             $
                                                                             e=
                                                                           '\033'.
                                                                         '[';$clr=
                                                                       '\033[2J';$gg
                                                                     ='\033[1;1H';$gr
                                                                  ='\033[32m';$re='\033'.
                                                              '[31m';$p='print';$P='printf';
                                                            $n='\n';$w='system("sleep 0.02")';
                                                          $rd='rand()';$i='int';sub f {($F,$A)=
                                                        @_;$A||='';return "function $F($A)"} sub
                                                    r {return "return @_"} sub v {($R,$L)=@_; return
                                                  "$R = $L"} sub l {($M)=@_;return "for (i = 0; i < $M;".
                                                 " ++i)"} sub go {($X,$Y,$T)=@_;$H='H';return qq/$P("$e$Y;/.
                                                qq/$X$H$T")/} sub co {($C)=@_;$M='m';return qq/$P("$e$C$M")/}
                                               print "${\f('sgn', 'v')}".qq@ {\n\tif (v < 0) {${\r(-1)}}\n\tif@.
                                             qq@ (v > 0)@.  " {${\r(1)}}\n\t".qq@${\r(0)}\n}\n\n${\f('min', 'a, b')}@
                                           .qq@ {\n\t${\r('a < b ? a : b')}\n}\n\n${\f('f')}@.qq@ {\n\t${\v('n', 30)}@
                                         .qq@\n\t${\v('s', q/"*"/)}\n\t$P("$clr$gg") # clear entire [email protected]@ and goto@
                                       .qq@ (1,1)\n\t$p("@.qq@$gr") # green\n\t${\l('n')} {\n\t\t$P("%*s%s$n", n-i, "", s)@.
                                     qq@\n\t\ts = s "**"\n\t\t$w@.qq@\n\t}\n\t$p(s)\n\t$P("$re") # red\n\t$P("%*s$n", n+1, "||"@
                                  .qq@)\n\t$P("%*s$n", n+1, "||")\n\t${\l(128)} {\n\t\ty = min@.qq@(n+2, 2 + $i(n - $rd * (n-i/4)))@
                                 .qq@\n\t\tx = 31 + $i($rd * (y - 2)) * @.qq@sgn(2 * $rd - 1)\n\t\t${\co(qq/"(33 + $i($rd * 5))"/)}@.
                               qq@ # color\n\t\t${\go(q/"x"/, q/"y"/, "o")} # goto (x,y)\n\t\t$w\n\t}\n\t${\go(q/"1"/, q/"(n+5)"/, '')}@.
                                                                        " # goto ".
                                                                        "(x,y)\n}".
                                                                        "\n\nBEGIN ".
                                                                        "{\n\tsrand".
                                                                        "()\n\t"."f".
                                                                        "()\n}\n" ;