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;
}