- or download this
#!/usr/bin/perl
use warnings;
use strict;
- or download this
my $life = new life : 20;
- or download this
loop { $life.display() }
- or download this
class life
{
- or download this
has Int $.count;
has Int $.dimension;
has Array of Bit @.grid;
- or download this
method BUILD(Int $dimension)
{
$.count = 0;
$.max = $dimension - 1;
- or download this
my Array of Bit @.grid is dim($dimension,$dimension)
is default(0);
- or download this
@grid[$dimension / 2 - 1][$dimension / 2] = 1;
@grid[$dimension / 2 - 1][$dimension / 2 + 1] = 1;
@grid[$dimension / 2][$dimension / 2] = 1;
@grid[$dimension / 2][$dimension / 2 - 1] = 1;
@grid[$dimension / 2 + 1][$dimension / 2] = 1;
- or download this
@.grid = @grid;
}
- or download this
sub iterate (&block)
{
- or download this
for 0..$.max -> $x
{
...
}
}
- or download this
method calculate() is private
{
my @newgrid;
iterate
{
- or download this
my $live = sum(@.grid[$^x-1..$^x+1][$^y-1..$^y+1]);
@newgrid[$^x][$^y] = $live==2 && @.grid[$^x][$^y]
...
print "\n" if $^x == $.max;
}
print "\n";
- or download this
print "Turn $(++$.count), press enter to continue or ctl-c to quit
+;
- or download this
<$*IN>;
- or download this
.calculate();
}
}