#!/usr/bin/perl -- my $linesize=80; $maxlines=100; sub randchar { if (rand(10)<5) { return " "; } return "#"; } sub getchar { my ($str,$charnum)=@_; if (($charnum<0)||($charnum>=length($str))) { return randchar(); } return substr($str,$charnum,1); } sub applyrule { my ($patt)=@_; # The original rule 30: if ($patt eq " ") { return " "; } if ($patt eq " #") { return "#"; } if ($patt eq " # ") { return "#"; } if ($patt eq " ##") { return "#"; } if ($patt eq "# ") { return "#"; } if ($patt eq "# #") { return " "; } if ($patt eq "## ") { return " "; } if ($patt eq "###") { return " "; } # Rule 60: # if ($patt eq " ") { return " "; } # if ($patt eq " #") { return " "; } # if ($patt eq " # ") { return "#"; } # if ($patt eq " ##") { return "#"; } # if ($patt eq "# ") { return "#"; } # if ($patt eq "# #") { return "#"; } # if ($patt eq "## ") { return " "; } # if ($patt eq "###") { return " "; } # Rule 120: # if ($patt eq " ") { return " "; } # if ($patt eq " #") { return " "; } # if ($patt eq " # ") { return " "; } # if ($patt eq " ##") { return "#"; } # if ($patt eq "# ") { return "#"; } # if ($patt eq "# #") { return "#"; } # if ($patt eq "## ") { return "#"; } # if ($patt eq "###") { return " "; } } $line=""; #for ($i=0;$i<($linesize/2);$i++) { $line.=" "; } $line.="#"; for ($i=0;$i<($linesize);$i++) { $line.=randchar(); } while ($maxlines>0) { $maxlines--; print $line."\n"; $nextline=""; for ($i=0;$i<$linesize;$i++) { $nextline.=applyrule( getchar($line,$i-1).getchar($line,$i).getchar($line,$i+1)); } $line=$nextline; }