]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 3: regexp-based solution
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sat, 3 Dec 2022 06:02:16 +0000 (07:02 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Sat, 3 Dec 2022 06:02:16 +0000 (07:02 +0100)
2022/05.pl
2022/06.pl

index 1a787996af13a87a422ca2f928406a7a406dd300..a7e1f9db71bcd52fbef00ca118a04c726d97e9a8 100755 (executable)
@@ -7,14 +7,10 @@ use experimental 'multidimensional';
 my $sum;
 while (<>) {
        chomp;
-       my $len = length;
-       my ($l, $r) = (substr($_, 0, $len/2), substr($_, $len/2));
-       for my $c (split(//, $l)) {
-               next if $r !~ /$c/;
-               $sum += ord($c) - ord('A') + 27 if $c =~ /[A-Z]/;
-               $sum += ord($c) - ord('a') +  1 if $c =~ /[a-z]/;
-               say $c;
-               last;
-       }
+       substr($_, length()/2, 0) = ' ';
+       my ($c) = /(.)\S*\s\S*\1/;
+       $sum += $c =~ /[A-Z]/
+               ? ord($c) - ord('A') + 27
+               : ord($c) - ord('a') + 1; 
 }
 say $sum;
index 31b1327f44ba95ee1a03e927caa4306c59e68d5a..84ea0fbe44a073f51e7525f4c514ca08bd73f124 100755 (executable)
@@ -5,16 +5,15 @@ use strict;
 use experimental 'multidimensional';
 
 my $sum;
-chomp (my @bags = <>);
-
-while (my @a = splice(@bags, 0, 3)) {
-       for my $c (split(//, $a[0])) {
-               next if $a[1] !~ /$c/;
-               next if $a[2] !~ /$c/;
-               $sum += ord($c) - ord('A') + 27 if $c =~ /[A-Z]/;
-               $sum += ord($c) - ord('a') +  1 if $c =~ /[a-z]/;
-               say $c;
-               last;
-       }
+my $s;
+while (<>) {
+       $s .= $_;
+       next if $. % 3;
+       $_ = $s;
+       $s = '';
+       my ($c) = /(.)\S*\s\S*\1\S*\s\S*\1/;
+       $sum += $c =~ /[A-Z]/
+               ? ord($c) - ord('A') + 27
+               : ord($c) - ord('a') + 1; 
 }
 say $sum;