#!/usr/bin/env perl use strict; use warnings; use File::Slurp; my $h = { one => 1, two => 2, three => 3, four => 4, five => 5, six => 6, seven => 7, eight => 8, nine => 9 }; my ( $o, $t ) = ( 0, 0 ); foreach ( read_file( '01.txt' ) ) { my ($f, $l) = (0, 0); foreach my $c ( split //, $_ ) { $c !~ /\d/ && next; $f ? $l = $c : $f = $c; $l = $l ? $l : $f; } $o += $f * 10 + $l; } print($o . "\n"); foreach ( read_file('01.txt') ) { my ( $f, $l, $i, $s ) = ( 0, 0, -1, 0 ); foreach my $c ( split //, $_ ) { $i++; if ($s) { $s--; next; } if ( $c =~ /\d/ ) { $f ? $l = $c : $f = $c; $l = $l ? $l : $f; next; } foreach my $k ( keys %$h ) { if ( substr( $_, $i - 1, length($k) ) eq $k ) { my $b = $h->{$k}; $s = length($k) - 2; $f ? $l = $b : $f = $b; $l = $l ? $l : $f; last; } } } $t += $f * 10 + $l; } print($t . "\n");