From 293348441811e26b4b885d57608f796b72974bda Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Sun, 8 Dec 2024 11:21:53 +0100 Subject: add day 6 & 7 --- 6.pl | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 6.pl (limited to '6.pl') diff --git a/6.pl b/6.pl new file mode 100644 index 0000000..6705a67 --- /dev/null +++ b/6.pl @@ -0,0 +1,96 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +my @original_grid; +my @grid; +my @pos = (0,0); +my @start_pos = (0,0); +my %seen_positions; + +open(my $fh, "6-input.txt") or die; +while (<$fh>) { chomp; push @original_grid, [split //]; } +close($fh); + +@grid = map { [@$_] } @original_grid; +for (my $i=0; $i= 0 and ($grid[$pos[0]-1][$pos[1]] eq '.' or $grid[$pos[0]-1][$pos[1]] eq 'X')) { + $grid[$pos[0]][$pos[1]] = 'X'; + $pos[0]--; + $grid[$pos[0]][$pos[1]] = '^'; + } + else { $grid[$pos[0]][$pos[1]] = '>'; } + } elsif ($direction eq '>') { + if ($pos[1]+1 >= scalar @{$grid[$pos[0]]}) { $grid[$pos[0]][$pos[1]] = 'X'; } + elsif ($pos[1]+1 < scalar @{$grid[$pos[0]]} and ($grid[$pos[0]][$pos[1]+1] eq '.' or $grid[$pos[0]][$pos[1]+1] eq 'X')) { + $grid[$pos[0]][$pos[1]] = 'X'; + $pos[1]++; + $grid[$pos[0]][$pos[1]] = '>'; + } + else { $grid[$pos[0]][$pos[1]] = 'V'; } + } elsif ($direction eq 'V') { + if ($pos[0]+1 >= scalar @grid) { $grid[$pos[0]][$pos[1]] = 'X'; } + elsif ($pos[0]+1 < scalar @grid and ($grid[$pos[0]+1][$pos[1]] eq '.' or $grid[$pos[0]+1][$pos[1]] eq 'X')) { + $grid[$pos[0]][$pos[1]] = 'X'; + $pos[0]++; + $grid[$pos[0]][$pos[1]] = 'V'; + } + else { $grid[$pos[0]][$pos[1]] = '<'; } + } elsif ($direction eq '<') { + if ($pos[1]-1 < 0) { $grid[$pos[0]][$pos[1]] = 'X'; } + elsif ($pos[1]-1 >= 0 and ($grid[$pos[0]][$pos[1]-1] eq '.' or $grid[$pos[0]][$pos[1]-1] eq 'X')) { + $grid[$pos[0]][$pos[1]] = 'X'; + $pos[1]--; + $grid[$pos[0]][$pos[1]] = '<'; + } + else { $grid[$pos[0]][$pos[1]] = '^'; } + } else { return 0; } + return 1; +} + +while (tick(\@pos, \@grid)) { $seen_positions{"$pos[0],$pos[1]"} = 1; } +my $pone = 0; +foreach(@grid) { foreach (@$_) { $pone++ if $_ eq 'X'; } } +print "puzzle 1: ", $pone, "\n"; + +my $loops = 0; +for (my $i=0; $i