summaryrefslogtreecommitdiff
path: root/01.pl
diff options
context:
space:
mode:
Diffstat (limited to '01.pl')
-rwxr-xr-x01.pl58
1 files changed, 58 insertions, 0 deletions
diff --git a/01.pl b/01.pl
new file mode 100755
index 0000000..615f004
--- /dev/null
+++ b/01.pl
@@ -0,0 +1,58 @@
+#!/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");