Solution 1 day 5
This commit is contained in:
130
2024/day-6/input
Normal file
130
2024/day-6/input
Normal file
@ -0,0 +1,130 @@
|
||||
.....#..#................#...#.....#.......................................................#.............................##.......
|
||||
......................#..............................................................#..............#..........................#..
|
||||
.........#........................#.....................................................#..............#...........#........##....
|
||||
..........#......................#.....#...#............#..........................#.....#........................................
|
||||
#....................................................................................................................#............
|
||||
.#....#......................#.......................#...............................#...#.....#...................#........#.....
|
||||
..#..#.......................##........#...............................................................#........#.........#.......
|
||||
..............................................................#...#.........#..#..................................................
|
||||
.............####..................................#................#..#.....................................#.....#..............
|
||||
..........#................#................................................#........................#.....#......................
|
||||
..............................................#.........#.....................#..................#.......................#........
|
||||
.........................................##..#.................................#.....#............................................
|
||||
............#..#...#...............................#.#.....#...............#...............................#..............#.#.#..#
|
||||
.................#..........#..#....#.....................#......................................##............#..................
|
||||
.......#....#.....................#......##...................#..............#.................#........#..#......#...............
|
||||
...............................................#.............#....................................................................
|
||||
..............#..............................................##..................#..........................#............#........
|
||||
................#.......................#..#............................................................#..........#..#.........#.
|
||||
.#.......................###............#.........#.................................................#.............................
|
||||
........#......................................................................................#.....#.......#...#................
|
||||
#.#.........................#..#.............................................#....#........................#......................
|
||||
.......#.....#...............................#.....#......................#.................................#.....#...#...........
|
||||
................................................................................................#............#....................
|
||||
.......#......#...............#...#............................#................................#................................#
|
||||
.#.....................................................................................................................#......#...
|
||||
...........#..........................................#........#...................#..............................................
|
||||
....#......................................................................................#.....##.#...................#.........
|
||||
...#..........................................................................##.......................................#.....#....
|
||||
#........#................#...............#.........#..#.#..............##..............#........#............#....#.....#........
|
||||
......#......................................#...............#....#..#...........................#................................
|
||||
#..............................................................................#............#...#..#....................#......#..
|
||||
.......#.........................................#.........#.......#....................................#.........................
|
||||
......#......#.............................................#.....................#...........#.............#..#...................
|
||||
#.......................#........#............................................##..............................#...................
|
||||
..........................................................................#........................................#....#......#..
|
||||
..........#..#...............................................#............................#.#..............................#......
|
||||
....#...........#..#...................................#................................................................#.........
|
||||
..............#..........#...............#....#.....................................#.......................#.....................
|
||||
.............#........#....#.........#...............#.........#..................................................................
|
||||
.#......#...................#.......#...........................................................................#.............#...
|
||||
.............##...........#.........................................#......................#.......................#..............
|
||||
.....#................#.....#...................##.......#......#...........#.......#............................................#
|
||||
.#..#.............................................................#..............................................#................
|
||||
...#......#............................#..........................................................................................
|
||||
...................................................................................#..............................................
|
||||
#...................................#...................##..................#...............................................#.....
|
||||
................#.....#...........................#...............................................................................
|
||||
.................................#............#........................................................#.............#............
|
||||
..................#......#........................................................#..^.....#......................................
|
||||
..#.....#.................................................#........#.........................................................#..#.
|
||||
................#..............................#....................................................#.............................
|
||||
................#....#..........................................#............................#....................................
|
||||
...............#.......................................#.....................................#..............................#.....
|
||||
..................................................#............#..............#........##.#.....................................#.
|
||||
.#..................................#......#..#............#.................#.............#......#..#.......................#....
|
||||
..................#..............................#..........................#..........................##............#.......#....
|
||||
.........#..................................................................#...................#..........................#......
|
||||
................#....................................#............#............................................................#..
|
||||
..##..........#.#..#........................#....#.................................#.............................................#
|
||||
............................................#.........................................................#..#...................#...#
|
||||
.......................................#......................................................................#...................
|
||||
....#.......................#...#.........................................................................#................#......
|
||||
...........#...........#............#.....#...#...................#........................................#.................##...
|
||||
....#...........................................................................................#.................................
|
||||
..............................................................................#.#.............................................#...
|
||||
.........#..#..............................................#......................................................................
|
||||
#...................#........#............#.......#.....................#................#.#.#............#..................#....
|
||||
.......................#................#.....#...........#.....................#...........................#..........#.........#
|
||||
........................................................................#.#.....................#.................................
|
||||
...#.................................................#..........................#........#.......................#................
|
||||
............................#...........#.......#.................................#.##...........#............................#...
|
||||
...##.....................................#.........................#...........#...................................#.............
|
||||
#.#..#................................#.........#..#.#..........#......................#............#......................#......
|
||||
....#.............................................................#...............................................................
|
||||
...............#.#......#........................................................................#.........................#......
|
||||
................#.....#...#...............#.........................................#....#...........................#.......#....
|
||||
...............#.........................................................................#........................................
|
||||
..........................#..##...................................................................................................
|
||||
.##....................#..#.....................#..............................................#........................#.........
|
||||
............................................................................................#............#........................
|
||||
#...................#...#......................#...............#............#....................................#................
|
||||
...........................#........#......................................................................#......................
|
||||
................................#...#...#.#.......#.................#.......#................##...................................
|
||||
........................#.......................#.................................................................................
|
||||
#...#...............#.........................................................................#.......................#...........
|
||||
.........#...................#...............................................#...................##..............................#
|
||||
.....#............................................................................................................................
|
||||
.#.......#...............................................................#.......................#................#..........#....
|
||||
....................................#..........#......#...........................................................#.#.#..#...#....
|
||||
......................#..............................................##..................#........................................
|
||||
....#......#...................#................#..............................................................................#..
|
||||
...........#.................##.#...................................................#..#................#.........................
|
||||
......#.....#......#...#........#.....................................#....#...........#................#..........#..............
|
||||
#.......##.....#........#...........................................#...#..........#.............#........#.......#...............
|
||||
......................#......#...................#.........................#........................#..................#...#......
|
||||
.....#...........#...#.........................##.......#.....................................#...................................
|
||||
....................................................................#.............................................................
|
||||
........#...............#.........................................................................................................
|
||||
.......................#.........................#..........................................#.#....#..#....#......................
|
||||
........................##............................................................#.....#.........#....#......#..#............
|
||||
........................#........#..................#................#.#.##............#..........................................
|
||||
.......................................................#.........................#...............##...................##....#...#.
|
||||
........#...#.............#...........#........#......................#...#.........#..#..................#.#............#........
|
||||
#.#....................#..........................................#...................................................#........#..
|
||||
...............................................#............#.....#.#...........#........#.#....................................#.
|
||||
......#..........................................#............................................................#..........#...#...#
|
||||
....................#......................................#....#..............................#....................#.............
|
||||
......................#.#.....#......#....#..#....................................................................................
|
||||
.....#..........................................#.........#...................................#................#.......#..........
|
||||
........##....................................................................#...................................#.............#.
|
||||
#.........................................#..#....#................#.#.....#....................#............................#....
|
||||
#....#..#..........#..................#......................#....................................................................
|
||||
...................#..#....#...................#...........................#.#..#............#......#................#.......#.#..
|
||||
...............#......................................................#......#..#..............#.....................#............
|
||||
............#.....................#.........#....#...............#.......#...#...............#.......................##.#.........
|
||||
....#............#..................#....#.......................#..............................................#...#.............
|
||||
..........................................#....#..........#..#....................#......#......................#...#.............
|
||||
............#..........#...........#......#..#......................................................................#.............
|
||||
...#.................#.............................................................#..............................................
|
||||
.....#.#.........#....................................................#..................#...............#........................
|
||||
..#......................##.....#.........#..............#..#............#..#............................................#........
|
||||
...................#.....#.........#........#....................#..................................#................#............
|
||||
....#.............................#.............................#.......................#.......................#.....#...........
|
||||
...#......#....#...........#............................#.....#........#......#...................................................
|
||||
........#..........#............................#..#..#.......................................#....#.##...........................
|
||||
.......#......##........#.................#.............................................................#....#........#...........
|
||||
.....................#............................................#.#......#.....##....#........#.................................
|
||||
...........#.....................##.#....#..#.....................................................................................
|
||||
....................#......#................................#.....................................................#.......#..#....
|
||||
.....................................................#.........#.......................................#.....##..#................
|
56
2024/day-6/solution-1.sh
Normal file
56
2024/day-6/solution-1.sh
Normal file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
ARRAY_SHAPE=10 # It's a square
|
||||
FILENAME=test-input
|
||||
read -r -a MAP_ARRAY <<< "$( paste -s -d '' "$FILENAME" | sed -E 's/(.)/\1\ /g' )"
|
||||
|
||||
# Get initial position
|
||||
POSITION=$(( ( $( grep -n '\^' "$FILENAME" | cut -f1 -d: ) -1 ) * ARRAY_SHAPE -1 + $( grep -o '.*\^' "$FILENAME" | wc -c ) -1 ))
|
||||
MAP_ARRAY[POSITION]=X # Remove position after save
|
||||
|
||||
# up = 0, right = 1, down = 2, left = 3, following 90 degree turn
|
||||
TURNS=0
|
||||
while true
|
||||
do
|
||||
EXIT=1
|
||||
|
||||
# Get direction and travel
|
||||
DIRECTION=$(( TURNS % 4 ))
|
||||
if [[ $DIRECTION -eq 0 ]] # up
|
||||
then
|
||||
TRAVEL=-$ARRAY_SHAPE
|
||||
LIMIT=$(( POSITION % ARRAY_SHAPE ))
|
||||
elif [[ $DIRECTION -eq 1 ]] # right
|
||||
then
|
||||
TRAVEL=1
|
||||
LIMIT=$(( (POSITION / ARRAY_SHAPE + 1) * ARRAY_SHAPE )) # Never verified
|
||||
elif [[ $DIRECTION -eq 2 ]] # down
|
||||
then
|
||||
TRAVEL=$ARRAY_SHAPE
|
||||
LIMIT=$(( (POSITION % ARRAY_SHAPE) + (ARRAY_SHAPE * ARRAY_SHAPE) ))
|
||||
elif [[ $DIRECTION -eq 3 ]] # left
|
||||
then
|
||||
TRAVEL=-1
|
||||
LIMIT=$(( (POSITION / ARRAY_SHAPE) * ARRAY_SHAPE )) # Never verified
|
||||
fi
|
||||
|
||||
while [[ ${MAP_ARRAY[$POSITION+$TRAVEL]} != '#' ]]
|
||||
do
|
||||
if [[ $POSITION -eq $LIMIT ]] # Walked out
|
||||
then
|
||||
EXIT=0
|
||||
break
|
||||
fi
|
||||
|
||||
MAP_ARRAY[POSITION]=X # Mark walking path
|
||||
(( POSITION+=TRAVEL ))
|
||||
done
|
||||
|
||||
if [[ $EXIT -eq 0 ]] ; then break ; fi # Walked out
|
||||
|
||||
(( TURNS++ ))
|
||||
done
|
||||
|
||||
# Count all coordinates
|
||||
printf "%s" "${MAP_ARRAY[@]}" | tee travel-path | sed 's/[^X]//g' | wc -c
|
||||
< travel-path fold -w $ARRAY_SHAPE
|
10
2024/day-6/test-input
Normal file
10
2024/day-6/test-input
Normal file
@ -0,0 +1,10 @@
|
||||
....#.....
|
||||
.........#
|
||||
..........
|
||||
..#.......
|
||||
.......#..
|
||||
..........
|
||||
.#..^.....
|
||||
........#.
|
||||
#.........
|
||||
......#...
|
Reference in New Issue
Block a user