--- /dev/null
+#!/usr/bin/perl -w
+
+use v5.42;
+
+my @coords = map { [ /\d+/g ] } <>;
+
+my $max;
+for my $i (0 .. $#coords-1) {
+ for my $j ($i+1 .. $#coords) {
+ my $area = (1+abs($coords[$i][0]-$coords[$j][0]))
+ * (1+abs($coords[$i][1]-$coords[$j][1]));
+ $max = $area if !defined $max || $area > $max;
+ }
+}
+say $max;
--- /dev/null
+#!/usr/bin/perl -w
+
+use v5.42;
+use List::Util qw(max min);
+
+my @coords = map { [ /\d+/g ] } <>;
+my @lines;
+for my $i (0 .. $#coords) {
+ my $j = $i+1;
+ $j = 0 if $j > $#coords;
+ push @lines, [ @{ $coords[$i] }, @{ $coords[$j] } ];
+}
+
+my $max;
+for my $i (0 .. $#coords-1) {
+ RECT:
+ for my $j ($i+1 .. $#coords) {
+ my ($x0, $y0, $x1, $y1) = (
+ min ($coords[$i][0], $coords[$j][0]),
+ min ($coords[$i][1], $coords[$j][1]),
+ max ($coords[$i][0], $coords[$j][0]),
+ max ($coords[$i][1], $coords[$j][1]),
+ );
+ for my $k (0 .. $#coords) {
+ next if $k == $i || $k == $j;
+ my ($xk, $yk) = @{ $coords[$k] };
+ next RECT if $xk > $x0 && $xk < $x1
+ && $yk > $y0 && $yk < $y1;
+ }
+ for my $k (0 .. $#lines) {
+ my ($lx0, $ly0, $lx1, $ly1) = @{ $lines[$k] };
+ ($lx0, $lx1) = ($lx1, $lx0) if $lx1 < $lx0;
+ ($ly0, $ly1) = ($ly1, $ly0) if $ly1 < $ly0;
+ if ($lx0 == $lx1) {
+ next if $lx0 <= $x0 || $lx0 >= $x1;
+ next RECT if $ly0 <= $y0 && $ly1 >= $y1;
+ } else {
+ next if $ly0 <= $y0 || $ly0 >= $y1;
+ next RECT if $lx0 <= $x0 && $lx1 >= $x1;
+ }
+ }
+ my $area = (1+abs($coords[$i][0]-$coords[$j][0]))
+ * (1+abs($coords[$i][1]-$coords[$j][1]));
+ $max = $area if !defined $max || $area > $max;
+ }
+}
+say $max;