diff options
author | Christian Segundo | 2023-12-02 13:27:14 +0100 |
---|---|---|
committer | Christian Segundo | 2023-12-02 13:27:14 +0100 |
commit | 73353e0e5e01f0702c0a8aa99397474c40af2a4c (patch) | |
tree | 15a3415650e1ec6d6d51afa040c4965ec2fd9926 /01.pl | |
download | advent-of-dotslash-2023-73353e0e5e01f0702c0a8aa99397474c40af2a4c.tar.gz |
Add day 1 & 2
Diffstat (limited to '01.pl')
-rwxr-xr-x | 01.pl | 58 |
1 files changed, 58 insertions, 0 deletions
@@ -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"); |