use v5.36;
use strict;
-use experimental 'multidimensional';
local $/ = "\n\n";
my ($l, $r) = map { eval $_ } split /\n/;
$sum += $. if compare($l,$r) == 1;
-
}
say $sum;
sub compare($l, $r) {
my $i = 0;
- my $rv = 0;
- while (1) {
+ my $res = 0;
+ while (!$res) {
my $lv = $l->[$i];
my $rv = $r->[$i];
- my $comp;
if (!defined $lv && defined $rv) {
- return 1;
+ $res = 1;
} elsif (defined $lv && !defined $rv) {
- return -1;
+ $res = -1;
} elsif (!defined $lv && !defined $rv) {
- return undef;
+ $res = 0;
+ last;
} elsif (ref $lv && ref $rv) {
- $comp = compare($lv, $rv);
+ $res = compare($lv, $rv);
} elsif (ref $lv && !ref $rv) {
- $comp = compare($lv, [$rv]);
+ $res = compare($lv, [$rv]);
} elsif (!ref $lv && ref $rv) {
- $comp = compare([$lv], $rv);
- } elsif (!ref $lv && !ref $rv) {
- $comp = $rv <=> $lv if $lv != $rv;
+ $res = compare([$lv], $rv);
} else {
- die "$lv $rv";
+ $res = $rv <=> $lv;
}
-
- return $comp if defined $comp;
$i++;
}
+ return $res;
}
-
-
-