musifter

AoC 2025, day 2 (Perl)

Dec 2nd, 2025 (edited)
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.64 KB | Source Code | 0 0
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use feature         qw(say);
  7. use List::Util      qw(sum);
  8.  
  9. my @input = map { chomp; map { [split /-/] } split /,/ } <>;
  10.  
  11. my $part1 = 0;
  12. my $part2 = 0;
  13.  
  14. foreach my $range (@input) {
  15.     my ($first, $last) = @$range;
  16.     my %invalid;
  17.  
  18.     for (my $i = 1; "$i$i" <= $last; $i++) {
  19.         my $num = "$i$i";
  20.  
  21.         $part1 += $num  if ($first <= $num <= $last);
  22.  
  23.         for ($num .= $i while ($num < $first); $num <= $last; $num .= $i) {
  24.             $invalid{$num}++;
  25.         }
  26.     }
  27.  
  28.     $part2 += sum keys %invalid  if (%invalid);
  29. }
  30.  
  31. say "Part 1: $part1";
  32. say "Part 2: $part2";
Advertisement
Add Comment
Please, Sign In to add comment