11 my @l = map { ord } split //, $line;
12 push @l, 17, 31, 73, 47, 23;
16 # my @nodes = (0 .. 4);
17 my @nodes = (0 .. 255);
24 # say "pos=$pos skip $skip i=$i ", join(',', @nodes);
26 push @to_rev, splice @nodes, $pos;
27 push @to_rev, splice @nodes, 0, $end - $n;
28 @to_rev = reverse @to_rev;
29 # say "to_rev = ", join(',', @to_rev);
30 unshift @nodes, splice @to_rev, @to_rev-($end-$n);
33 push @to_rev, splice @nodes, $pos, $i;
34 splice @nodes, $pos, 0, reverse @to_rev;
37 $pos -= $n while $pos >= $n;
42 while (my @s = splice (@nodes, 0, 16)) {
45 $hash .= sprintf("%08b", $x);
53 for my $row (0 .. 127) {
54 my $h = knot("$in-$row");
55 my @line = split //, $h;
57 for my $x (0 .. 127) {
58 next if $line[$x] == '0';
62 } elsif ($x && $nl[$x-1]) {
69 if ($x && $nl[$x-1] && $nl[$x-1] != $nl[$x]) {
71 delete $regions{$old};
73 $nl[$_] = $nl[$x] if $nl[$_] == $old;
74 $prev[$_] = $nl[$x] if $prev[$_] == $old;
81 say scalar keys %regions;