X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=28.pl;fp=28.pl;h=57177595d009473eb5189994ce20108d9585a841;hb=abca4967c0cb8b9e23df1a1a490566aa9a13440d;hp=0000000000000000000000000000000000000000;hpb=3825fa6f10d6debc26451812c4257673c952bcb2;p=aoc2021.git diff --git a/28.pl b/28.pl new file mode 100755 index 0000000..5717759 --- /dev/null +++ b/28.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl -w + +use v5.16; +use List::Util qw(sum0); + +chomp (my $tmpl = <>); +scalar <>; + +my (%r1, %r2, %ins); +while (<>) { + chomp; + my ($s1, $s2, $d) = /([A-Z])/g; + $r1{"$s1$s2"} = "$s1$d"; + $r2{"$s1$s2"} = "$d$s2"; + $ins{"$s1$s2"} = $d; +} + +my %count; +my %p; +for my $i (0 .. length($tmpl) - 2) { + $p{substr($tmpl, $i, 2)}++; + $count{substr($tmpl, $i, 1)}++; +} +$count{substr($tmpl, -1, 1)}++; + +for (1 .. 40) { + my %p1; + for my $pair (keys %p) { + if ($r1{$pair}) { + $p1{$r1{$pair}} += $p{$pair}; + $p1{$r2{$pair}} += $p{$pair}; + $count{$ins{$pair}} += $p{$pair}; + } + } + %p = %p1; +} + +my @count = sort { $a <=> $b } values %count; + +say $count[-1] - $count[0]; +