-for my $y (0 .. $ymax-1) {
-for my $x (0 .. $xmax-1) {
- my $n = $map[$y][$x];
- next if $n !~ /\d/ || $seen{$x,$y}++;
- my $dx = 1;
- while ($x+$dx < $xmax && $map[$y][$x+$dx] =~ /\d/) {
- $n*=10; $n+= $map[$y][$x+$dx];
- $seen{$x+$dx,$y} = 1;
- $dx++;
- say "$n at $x..", $x+$dx, ", $y";
- }
- my $sym;
- for my $x1 (-1 .. $dx) {
- test_sym(\$sym, $x, $y, $x1, -1, $x1, 0, $x1, +1);
- }
- if (defined $sym) {
- my ($sx, $sy) = @$sym;
- push @{ $gear{$sx,$sy} }, $n;
- say "Star at $sx, $sy";
- }
-} }
-
-
-for my $k (keys %gear) {
- my @coords = @{ $gear{$k} };
- next if @coords != 2;
- $sum += $coords[0] * $coords[1];