X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=2022%2F25.pl;h=72b65536bcea77b2831aa4db6074de544050a5c4;hb=2401385de499606a2488ce78393063a68d58d209;hp=f68c61f76400f9af4d9ff5910762527fda2b542a;hpb=4524faa21cb3a4bb30ae8ebfd05248586b06d352;p=aoc.git diff --git a/2022/25.pl b/2022/25.pl index f68c61f..72b6553 100755 --- a/2022/25.pl +++ b/2022/25.pl @@ -2,7 +2,6 @@ use v5.36; use strict; -use experimental 'multidimensional'; local $/ = "\n\n"; @@ -11,40 +10,33 @@ while (<>) { 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; } - - -