#!/usr/bin/env perl use strict; use warnings; use v5.22; use List::Util qw(sum); sub get_filehandle { 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: $!"; return $filehandle; } sub get_numbers { my $fh = shift; chomp( my $numbers = ( <$fh> ) ); return (split( ",", $numbers)); } # Advent of Code 2021 Day 06 my $filehandle = get_filehandle(); my @numbers = get_numbers($filehandle); my $days = 256; # update this for Parts 1 and 2 my %fish_timer = map { $_, 0 } (0 .. 8); $fish_timer{$_}++ foreach (@numbers); for (my $i = 0; $i < $days; $i++) { # loop for number of days my %tmp_timer = (); foreach my $age (reverse 1 .. 8) { # loop for each age $tmp_timer{$age - 1} = $fish_timer{$age}; } # process fish with timer of 0 $tmp_timer{6} += $fish_timer{0}; $tmp_timer{8} += $fish_timer{0}; %fish_timer = %tmp_timer; } say sum values %fish_timer;