adventofcode/2023/01/Part2.pm

34 lines
551 B
Perl
Raw Normal View History

2023-12-01 17:04:34 +00:00
use 5.38.0;
package Part2;
use Part1;
use List::AllUtils qw/ sum /;
my %spelled = (
one => 1,
two => 2,
three => 3,
four => 4,
five => 5,
six => 6,
seven => 7,
eight => 8,
nine => 9,
);
sub resolve_spelled_numbers ($line) {
my $re = join '|', keys %spelled, 1 .. 9;
join "", map { $spelled{$_} // $_ } $line =~ /^.*?($re)/g,
$line =~ /^.*($re)/g;
}
sub solution_2 ($input) {
sum map { Part1::extract_number($_) }
map { resolve_spelled_numbers($_) } split "\n", $input;
}
1;