6 my @pts = map { [ /(\d+)/g ] } <>;
8 my ($minx, $miny, $maxx, $maxy);
10 $minx = $pt->[0] if !defined $minx || $minx > $pt->[0];
11 $maxx = $pt->[0] if !defined $maxx || $maxx < $pt->[0];
12 $miny = $pt->[1] if !defined $miny || $miny > $pt->[1];
13 $maxy = $pt->[1] if !defined $maxy || $maxy < $pt->[1];
17 for my $x ($minx .. $maxx) {
18 for my $y ($miny .. $maxy) {
19 my ($minpt, $mindist);
20 for my $i (0 .. $#pts) {
22 my $dist = abs($x-$pt->[0]) + abs($y-$pt->[1]);
23 if (!defined $mindist || $mindist > $dist) {
26 } elsif (defined $mindist && $mindist == $dist) {
30 next if !defined $minpt;
31 say "$x,$y closest to $minpt at $mindist";
32 if ($y == $miny || $y == $maxy || $x == $minx || $x == $maxx) {
34 say "$minpt is infinite";
41 for my $i (0 .. $#pts) {
43 $maxarea = $count{$i} if !$maxarea || $maxarea < $count{$i};