use v5.42;
use List::Util qw(sum);
-my $len = 12;
-
-sub search {
- my ($d, $str) = @_;
-
- return $str if length $str == $len;
+sub search($in, $res, $len) {
+ return $res if !$len--;
for my $n (reverse 1 .. 9) {
- my $re = $n . ('.' x ($len - 1 - length $str));
- next if $d !~ /$re/;
- return search($d =~ s/^.*?$n//r, "$str$n");
+ my $re = $n . ('.' x $len);
+ next if $in !~ /$re/;
+ return search($in =~ s/^.*?$n//r, "$res$n", $len);
}
}
-say sum map { chomp; search($_, '') } <>;
+say sum map { chomp; search($_, '', 12) } <>;