37 lines
729 B
Perl
37 lines
729 B
Perl
|
use 5.20.0;
|
||
|
|
||
|
use lib '.';
|
||
|
use hash;
|
||
|
my $key = 'stpzcrnm';
|
||
|
|
||
|
use List::AllUtils qw/ sum /;
|
||
|
|
||
|
my @grid =
|
||
|
map { [ map { $_ ? '#' : ' ' } map { split '', sprintf "%04b", hex } split '' ] }
|
||
|
map { knot_hash( join '-', $key, $_) } 0..127;
|
||
|
|
||
|
my $clusters;
|
||
|
for my $x ( 0..127 ) {
|
||
|
for my $y ( 0..127 ) {
|
||
|
$clusters+= eradicate(\@grid,$x,$y);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
say $clusters;
|
||
|
|
||
|
use experimental qw/ signatures /;
|
||
|
sub eradicate($grid,$i,$j) {
|
||
|
return 0 if $grid->[$i][$j] ne '#';
|
||
|
$grid->[$i][$j] = ' ';
|
||
|
eradicate($grid,$i-1,$j) if $i > 0;
|
||
|
eradicate($grid,$i,$j-1) if $j > 0;
|
||
|
eradicate($grid,$i+1,$j);
|
||
|
eradicate($grid,$i,$j+1);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
|
||
|
sub print_g {
|
||
|
say @$_ for @grid;
|
||
|
}
|