From 73353e0e5e01f0702c0a8aa99397474c40af2a4c Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Sat, 2 Dec 2023 13:27:14 +0100 Subject: Add day 1 & 2 --- 01.pl | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100755 01.pl (limited to '01.pl') 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"); -- cgit v1.2.3