aoc2021

Advent of Code 2021 solutions in Perl.
git clone git://git.samirparikh.com/aoc2021
Log | Files | Refs | README

commit cc2f71fc69025a917d86087025de2cfa4a6f9fb5
parent 7fe940345556c6727443df409e20d4005e7fb322
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Fri,  3 Dec 2021 15:21:53 +0000

add day03.pl

Diffstat:
Aday03.pl | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+), 0 deletions(-)

diff --git a/day03.pl b/day03.pl @@ -0,0 +1,57 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use v5.22; +use Data::Dumper; +#use diagnostics; + +if (@ARGV !=1) { + die "Usage: $0 [input-filename]"; +} + +my $input_filename = $ARGV[0]; +open my $filehandle, '<', $input_filename or + die "Could not open input file $input_filename: $!"; + +chomp( my @input = ( <$filehandle> ) ); + +# Part 1 +#say scalar( grep { $input[$_] > $input[$_ - 1] } (1 .. $#input) ); + +# Part 2 +#say scalar( grep { $input[$_ + 2] > $input[$_ - 1] } (1 .. $#input - 2) ); + +my $len = length($input[0]) - 1; +my %count_0 = (); +my %count_1 = (); +my $gamma_rate = ""; +my $epsilon_rate = ""; + +foreach (@input) { + my @diagnostic = split //; + say join(":", @diagnostic); + for (0 .. $len) { + if ($diagnostic[$_]) { + $count_1{$_}++; + } else { + $count_0{$_}++; + } + } +} + +print Dumper ( \%count_0 ); +print Dumper ( \%count_1 ); + +for (0 .. $len) { + if ($count_0{$_} > $count_1{$_}) { + $gamma_rate .= "0"; + $epsilon_rate .= "1"; + } else { + $gamma_rate .= "1"; + $epsilon_rate .= "0"; + } +} + +say $gamma_rate; +say $epsilon_rate;