aoc2021

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

commit f97b0e27d2a63bb7bd1089bc2b0d04edb13dab6a
parent 6ee41c4801c2f827490a4bc6f0a5e4ebc87ef825
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Mon,  6 Dec 2021 13:31:05 +0000

update day04-1.pl

Diffstat:
Mday04-1.pl | 35+++++++++++++++++++++++++----------
1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/day04-1.pl b/day04-1.pl @@ -56,18 +56,11 @@ sub play_turn { my ($numbers, $boards, $state) = @_; my $number = shift(@$numbers); say "playing number $number"; - #say $boards->[1][2][2]; - #p($boards); - #print Dumper($boards); foreach my $board (@$boards) { # $board is ref to board array foreach my $row (@$board) { # $row is ref to board row array foreach my $column (@$row) { # $column is element of row array - #print "$boards\t$board\t$row\t"; if ($column == $number) { $state->{$board}{$row}{$column} = 1; - #say "-> $column <-"; - #} else { - #say "$column"; } } } @@ -90,6 +83,26 @@ sub print_board_state { } } +sub check_for_winner { + my ($boards, $state) = @_; + #my $found_winner = 0; + # check for row wins + foreach my $board (@$boards) { # $board is ref to board array + foreach my $row (@$board) { # $row is ref to board row array + my $total = 0; + foreach my $column (@$row) { + $total += $state->{$board}{$row}{$column}; + } + if ($total == 5) { + say "found winner"; + #$found_winner = 1; + return 1; + } + } + } + return 0; # no winner found +} + # Advent of Code 2021 Day 04 Part 1 # initialize game variables my $filehandle = get_filehandle(); @@ -97,12 +110,14 @@ my @numbers = get_numbers($filehandle); my @boards = initialize_boards($filehandle); my %state = initialize_state(\@boards); -my $turn = 1; +my $turn = 0; +my $winner_found = 0; -while ($turn < 12) { +until ($winner_found) { + $turn++; say "turn: $turn"; play_turn(\@numbers, \@boards, \%state); - $turn++; + $winner_found = check_for_winner(\@boards, \%state); } print_board_state(\@boards, \%state);