http://www.perlmonks.org?node_id=86859


in reply to (Golf) LED Sign

Here is a program that writes a file that has a 186-char subroutine which is my golf entry:

#!/usr/bin/perl open SEG, ">segment.pl" or die "Can't write seg.pl: $!\n"; binmode SEG; while(<DATA>){ s/::::::::/pack"H*",'1f10001100100111'/e; s/!!!!!!!!!!!!!!!/pack"H*",'fca88a04228f12420caacc30125084'/e; print SEG $_; } __END__ #!/usr/bin/perl sub d{ y/01/ #/for@p=unpack"b5"x8,"::::::::"; y/-./ab/for@n=split//,pop; @s=grep$_,split/(..)/,unpack"b*",'!!!!!!!!!!!!!!!'; map{$l=$_;join" ",map($p[$l<<2&4|3&$s[$l+5*hex$_]],@n),$/} 0,1,1,2,3,3,4 } print d("123-45"); print d("67.890");
So if you download this code into a file called, for example, "seg1.pl", then you could do the following:
$ perl seg1.pl
$ perl segment.pl
    # ##### #####       #   # #####
    #     #     #       #   # #
    #     #     #       #   # #
    # ##### ##### ##### ##### #####
    # #         #           #     #
    # #         #           #     #
    # ##### #####           # #####
##### #####       ##### ##### #####
#         #       #   # #   # #   #
#         #       #   # #   # #   #
#####     #       ##### ##### #   #
#   #     #       #   #     # #   #
#   #     #       #   #     # #   #
#####     #     # ##### ##### #####
$
The reason for the extra step is that I have two binary strings as part of my subroutine.

I suspect the sub can be golfed quite a bit still... Have fun. (:

        - tye (but my friends call me "Tye")