From: Jan "Yenya" Kasprzak Date: Wed, 8 Dec 2021 05:48:59 +0000 (+0100) Subject: Day 8: permutations and y///; X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=aoc2021.git;a=commitdiff_plain;h=bdaf9066de9b215aa44cb171f1ac6523e41b7af3 Day 8: permutations and y///; --- diff --git a/15.pl b/15.pl new file mode 100755 index 0000000..8a104b4 --- /dev/null +++ b/15.pl @@ -0,0 +1,17 @@ +#!/usr/bin/perl -w + +use v5.16; + +my $sum; +while (<>) { + chomp; + s/.*\| //; + $sum += grep { my $x = length; $x == 2 || $x == 3 || $x == 4 || $x == 7; } split /\s+/; +} + +say $sum; + + + + + diff --git a/16.pl b/16.pl new file mode 100755 index 0000000..fc9891e --- /dev/null +++ b/16.pl @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w + +use v5.16; + +my %digits = ( + abcefg => 0, + cf => 1, + acdeg => 2, + acdfg => 3, + bcdf => 4, + abdfg => 5, + abdefg => 6, + acf => 7, + abcdefg => 8, + abcdfg => 9, +); + +my @perms; + +sub do_perms { + my ($t, @vals) = @_; + if (@vals == 1) { + push @perms, $t.$vals[0]; + } else { + for my $i (0 .. $#vals) { + my @v1 = @vals; + my $u = splice @v1, $i, 1; + do_perms("$t$u", @v1); + } + } +} + +do_perms ('', qw(a b c d e f g)); + +my $sum = 0; +ROW: +while (<>) { + chomp; + my ($inv, $outv) = split /\s+\|\s+/; + my (@in) = split /\s+/, $inv; + my (@out) = split /\s+/, $outv; + + PERM: + for my $perm (@perms) { + for my $i (@in) { + my $ni = $i; + eval "\$ni =~ y/abcdefg/$perm/"; + my $sorted = join('', sort split //, $ni); + # say "i=$i ni=$ni sorted=$sorted"; + next PERM if !defined $digits{$sorted}; + } + my $rv = ''; + for my $o (@out) { + my $no = $o; + eval "\$no =~ y/abcdefg/$perm/"; + my $nsorted = join('', sort split //, $no); + $rv .= $digits{$nsorted}; + } + $sum += $rv; + next ROW; + } +} + +say $sum; + +