The language designer said to the programmer: “Thank you for freeing me from my prejudices. I understand now that a language must not try to force the programmers to follow any single paradigm, but should instead offer all the features the programmer may want to use. As a reward, you may wish for any three features and I will add them to the language.”
The programmer replied: “I'd like a powerful domain-specific language for blowing up binary strings to small parts.”
The language designer granted the programmer's wish, and the programmer promptly tried it, saying
#!perl use warnings; use strict; use 5.010; use Time::HiRes "sleep"; our $DELAY = 0.05; # determine size of terminal my $w = pack "S4", 24, 79; ioctl STDIN, $_, $w for 0x40087468, 0x5413; our($R, $C) = unpack "S2", $w; $R--; our $b; if (rand 3 < 1) { # glider gun pattern $b = pack "(A$C)[Lx$R]", ("")x3, split /^/, " 1 1 1 11 11 11 1 1 11 11 11 1 1 11 11 1 1 11 1 1 1 1 1 1 1 11 "; } else { # generate random bitmap as starting state $b = pack "(A)*", map { rand 3 < 1 } 0 .. 2*$R*$C; } system qw"tput clear"; while () { # display game board system qw"tput home"; say for unpack "xx$C(a$C)$R", $b; sleep $DELAY; # game of life evolution step no warnings "numeric"; $b = pack "xx$C(A)*xx$C", unpack "(x7a/(x13)X4Ax!18)[(A$R)$C]", pack "((a*)17xx!18)*x3", unpack "((AAAX3AAA\@$C AXAAAXAx$C (X3AAA)2\@)$C)$R", $b; } __END__
The programmer watched the pretty patterns appearing in his terminal.
After a while, the language designer asked “And your other wishes?”
The programmer's reply was “Why would I need other wishes?”
Remarks.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Game of life ran by unpack function
by Lotus1 (Vicar) on Dec 11, 2012 at 20:59 UTC | |
Re: Game of life ran by unpack function
by dbuckhal (Hermit) on Dec 17, 2012 at 17:34 UTC | |
Re: Game of life ran by unpack function
by ambrus (Abbot) on Feb 03, 2019 at 00:16 UTC | |
Re: Game of life ran by unpack function
by roboticus (Chancellor) on Sep 11, 2019 at 15:08 UTC |