2024 day 6 💀
This commit is contained in:
parent
68708d28f2
commit
c364e8cf90
28
2024/Day 6/gold.py
Normal file
28
2024/Day 6/gold.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
with open('puzzle.txt', 'r') as f:
|
||||||
|
lines = f.read().splitlines()
|
||||||
|
|
||||||
|
xmas = 0
|
||||||
|
|
||||||
|
for y in range(len(lines)):
|
||||||
|
for x in range(len(lines[y])):
|
||||||
|
if lines[y][x] == 'A':
|
||||||
|
extra_check = []
|
||||||
|
|
||||||
|
if 0 < x < len(lines[y]) - 1 and 0 < y < len(lines) - 1:
|
||||||
|
if (lines[y - 1][x - 1] == 'M' and lines[y - 1][x + 1] == 'S' and
|
||||||
|
lines[y + 1][x - 1] == 'M' and lines[y + 1][x + 1] == 'S'):
|
||||||
|
xmas += 1
|
||||||
|
|
||||||
|
if (lines[y - 1][x - 1] == 'M' and lines[y - 1][x + 1] == 'M' and
|
||||||
|
lines[y + 1][x - 1] == 'S' and lines[y + 1][x + 1] == 'S'):
|
||||||
|
xmas += 1
|
||||||
|
|
||||||
|
if (lines[y - 1][x - 1] == 'S' and lines[y - 1][x + 1] == 'M' and
|
||||||
|
lines[y + 1][x - 1] == 'S' and lines[y + 1][x + 1] == 'M'):
|
||||||
|
xmas += 1
|
||||||
|
|
||||||
|
if (lines[y - 1][x - 1] == 'S' and lines[y - 1][x + 1] == 'S' and
|
||||||
|
lines[y + 1][x - 1] == 'M' and lines[y + 1][x + 1] == 'M'):
|
||||||
|
xmas += 1
|
||||||
|
|
||||||
|
print(xmas)
|
168
2024/Day 6/main.py
Normal file
168
2024/Day 6/main.py
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
with open('puzzle.txt', 'r') as f:
|
||||||
|
lines = f.read().splitlines()
|
||||||
|
|
||||||
|
import time
|
||||||
|
import copy
|
||||||
|
|
||||||
|
guard_map = {}
|
||||||
|
|
||||||
|
guard_orientation = '^'
|
||||||
|
|
||||||
|
total_visits = 0
|
||||||
|
|
||||||
|
for line_index, line in enumerate(lines):
|
||||||
|
for column_index, column in enumerate(list(line)):
|
||||||
|
if line_index not in guard_map:
|
||||||
|
guard_map[line_index] = {}
|
||||||
|
|
||||||
|
if column_index not in guard_map[line_index]:
|
||||||
|
guard_map[line_index][column_index] = {
|
||||||
|
'value': line[column_index],
|
||||||
|
}
|
||||||
|
|
||||||
|
if guard_map[line_index][column_index]['value'] == '^':
|
||||||
|
guard_map[line_index][column_index]['value'] = 'X'
|
||||||
|
guard_initial_x = column_index
|
||||||
|
guard_initial_y = line_index
|
||||||
|
|
||||||
|
guard_x = guard_initial_x
|
||||||
|
guard_y = guard_initial_y
|
||||||
|
|
||||||
|
#print(guard_map)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
guard_map[guard_y ][guard_x]['value'] = 'X'
|
||||||
|
|
||||||
|
try:
|
||||||
|
#map_string = ""
|
||||||
|
#for line in guard_map:
|
||||||
|
# for column in guard_map[line]:
|
||||||
|
# if column == guard_x and line == guard_y:
|
||||||
|
# map_string += guard_orientation
|
||||||
|
# else:
|
||||||
|
# map_string += guard_map[line][column]['value']
|
||||||
|
# map_string += "\n"
|
||||||
|
|
||||||
|
#print(map_string)
|
||||||
|
|
||||||
|
match guard_orientation:
|
||||||
|
case '^':
|
||||||
|
if guard_map[guard_y - 1][guard_x]['value'] == '#':
|
||||||
|
guard_orientation = '>'
|
||||||
|
|
||||||
|
else:
|
||||||
|
guard_y -= 1
|
||||||
|
|
||||||
|
case '>':
|
||||||
|
if guard_map[guard_y][guard_x + 1]['value'] == '#':
|
||||||
|
guard_orientation = 'v'
|
||||||
|
|
||||||
|
else:
|
||||||
|
guard_x += 1
|
||||||
|
|
||||||
|
case 'v':
|
||||||
|
if guard_map[guard_y + 1][guard_x]['value'] == '#':
|
||||||
|
guard_orientation = '<'
|
||||||
|
|
||||||
|
else:
|
||||||
|
guard_y += 1
|
||||||
|
|
||||||
|
case '<':
|
||||||
|
if guard_map[guard_y][guard_x - 1]['value'] == '#':
|
||||||
|
guard_orientation = '^'
|
||||||
|
|
||||||
|
else:
|
||||||
|
guard_x -= 1
|
||||||
|
|
||||||
|
except KeyError:
|
||||||
|
break
|
||||||
|
|
||||||
|
for line in guard_map:
|
||||||
|
for column in guard_map[line]:
|
||||||
|
if guard_map[line][column]['value'] == 'X':
|
||||||
|
total_visits += 1
|
||||||
|
|
||||||
|
total_obstacles = 0
|
||||||
|
|
||||||
|
obstacle_coords = []
|
||||||
|
|
||||||
|
for line in guard_map:
|
||||||
|
for column in guard_map[line]:
|
||||||
|
guard_x = guard_initial_x
|
||||||
|
guard_y = guard_initial_y
|
||||||
|
obstacle_encountered = 0
|
||||||
|
encounter_x = None
|
||||||
|
encounter_y = None
|
||||||
|
guard_orientation = '^'
|
||||||
|
init_time = time.time()
|
||||||
|
if guard_map[line][column]['value'] == 'X':
|
||||||
|
guard_map_copy = copy.deepcopy(guard_map)
|
||||||
|
guard_map_copy[line][column]['value'] = '#'
|
||||||
|
|
||||||
|
while True:
|
||||||
|
#map_string = ""
|
||||||
|
#for line_map in guard_map_copy:
|
||||||
|
# for column_map in guard_map_copy[line_map]:
|
||||||
|
# if column_map == guard_x and line_map == guard_y:
|
||||||
|
# map_string += guard_orientation
|
||||||
|
# else:
|
||||||
|
# map_string += guard_map[line_map][column_map]['value']
|
||||||
|
# map_string += "\n"
|
||||||
|
|
||||||
|
#print(map_string)
|
||||||
|
guard_prev_orientation = guard_orientation
|
||||||
|
try:
|
||||||
|
match guard_orientation:
|
||||||
|
case '^':
|
||||||
|
if guard_map_copy[guard_y - 1][guard_x]['value'] == '#':
|
||||||
|
guard_orientation = '>'
|
||||||
|
|
||||||
|
else:
|
||||||
|
guard_y -= 1
|
||||||
|
|
||||||
|
case '>':
|
||||||
|
if guard_map_copy[guard_y][guard_x + 1]['value'] == '#':
|
||||||
|
guard_orientation = 'v'
|
||||||
|
|
||||||
|
else:
|
||||||
|
guard_x += 1
|
||||||
|
|
||||||
|
case 'v':
|
||||||
|
if guard_map_copy[guard_y + 1][guard_x]['value'] == '#':
|
||||||
|
guard_orientation = '<'
|
||||||
|
|
||||||
|
else:
|
||||||
|
guard_y += 1
|
||||||
|
|
||||||
|
case '<':
|
||||||
|
if guard_map_copy[guard_y][guard_x - 1]['value'] == '#':
|
||||||
|
guard_orientation = '^'
|
||||||
|
|
||||||
|
else:
|
||||||
|
guard_x -= 1
|
||||||
|
|
||||||
|
#if (abs(column - guard_x) == 1 and line - guard_y == 0) or (column - guard_x == 0 and abs(line - guard_y) == 1):
|
||||||
|
# obstacle_encountered += 1
|
||||||
|
# if obstacle_encountered == 1:
|
||||||
|
# encounter_orientation = guard_prev_orientation
|
||||||
|
# encounter_x = guard_x
|
||||||
|
# encounter_y = guard_y
|
||||||
|
#
|
||||||
|
#if (obstacle_encountered >= 2 and guard_x == encounter_x and guard_y == encounter_y and guard_prev_orientation == encounter_orientation):
|
||||||
|
# total_obstacles += 1
|
||||||
|
# print(line, column)
|
||||||
|
# obstacle_coords.append([line, column])
|
||||||
|
# print(total_obstacles)
|
||||||
|
# break
|
||||||
|
|
||||||
|
if time.time() - init_time > 0.1:
|
||||||
|
total_obstacles += 1
|
||||||
|
print(total_obstacles)
|
||||||
|
break
|
||||||
|
|
||||||
|
except KeyError:
|
||||||
|
break
|
||||||
|
|
||||||
|
print(total_visits)
|
||||||
|
print(total_obstacles)
|
||||||
|
print(obstacle_coords)
|
130
2024/Day 6/puzzle.txt
Normal file
130
2024/Day 6/puzzle.txt
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
........#...........................#...........#............................................................................#....
|
||||||
|
...........#..............................................##.#....................##.......#.............##..............#........
|
||||||
|
...................#..#........#..#..##.................#......##..................#.....#....#.............#...........#...##....
|
||||||
|
..........#......#..................................................#...................#........#..#.....#.......................
|
||||||
|
.........#...#......#...................................#............#...#........#.............#..#........................#.....
|
||||||
|
..##.#...........#......#.....#.#...#..............#.#......#.......#..............#.............#..................#.......#.....
|
||||||
|
...#.................................####...........#..........#..#.....#........#...........................................#....
|
||||||
|
..........#......................#............................#....................#..............#......#....#.................#.
|
||||||
|
...#.................#.........#.........#.#.....#....#.................................................................#.#.......
|
||||||
|
.......#.......................#...........#..................................#.............#..................#......#.#.........
|
||||||
|
....................#.#.........#.........#................................#........#.#.........................#..#....#.........
|
||||||
|
........#.............#....#.....#................................##.....#..................#.....................#...............
|
||||||
|
..............#...................#..........................................#..........#........................#................
|
||||||
|
...........#...................................................................................#..........#.........##.#..........
|
||||||
|
............#....................#...................#.................................#.......#............#.......#.............
|
||||||
|
..........................................#.....#.............#.#.......................##......#.....#...........................
|
||||||
|
........................#...#..................#......................................................#.#..#......................
|
||||||
|
...#.....#.....................#..........................................#................................................#.....#
|
||||||
|
..##....................................#.....................#.............#.......#.............................................
|
||||||
|
........#..................#......#................................#.......................................................#......
|
||||||
|
.........#................#...............................##.#.....................#...........................#...........#.#....
|
||||||
|
............#.....#..................................#.....#........#................#............................................
|
||||||
|
.....................................................##..............#.....#.....#.......#........................................
|
||||||
|
..........#..#..............#..#...#.......................#..........................................#...........................
|
||||||
|
...............#.............................................................#..#......#.......#..#....................#..........
|
||||||
|
.#......................#....##.#....................#..#...#............................#............................#....#....#.
|
||||||
|
...#...................................................................................................................#.......#..
|
||||||
|
.#....#..............#....................#......................................#.......................#....#..#................
|
||||||
|
........#.....................#............................................#...............#......................................
|
||||||
|
....#........#..........................................................................#..............................###.......#
|
||||||
|
........#..#.....................#..................#..................##..........#..............................................
|
||||||
|
..........................#...#................#....................................................#..#............#.............
|
||||||
|
......#..............#................................#.....................#.................................#............#......
|
||||||
|
...................................................#....................#.................#.....#................................#
|
||||||
|
..........................#...............#....#........................#.............................................#...........
|
||||||
|
##..............#..............................#....#.......................#.................................................#...
|
||||||
|
...........................#.............................................................#.#................#......#........#.##..
|
||||||
|
........#..................#...#..............#..............................#.....#..........#...................................
|
||||||
|
..........#......#.##..#.....#.......##.....#......................................................#..................#...........
|
||||||
|
....#.........#................#............................................#..#...#............#.....#..#........................
|
||||||
|
#.......#..............#.....................#..........#....#......#......................................#........#.............
|
||||||
|
.........#..........................................................................#.........#............................#......
|
||||||
|
..........................#...#.......#...............#..............#.......................#...#................................
|
||||||
|
.......................................................................#.........................................#...............#
|
||||||
|
...................#.....#.......................................................#.............................................#..
|
||||||
|
...##.....................#....#................................#........#...#....#.......##......................................
|
||||||
|
.................................................................#.......#................................#.........#.............
|
||||||
|
#..........................#.#........................#............................................#...#.........#................
|
||||||
|
................#.#........#...................#...............................#.........#............#.........#.................
|
||||||
|
...#...................................#.....................................................................#..#......#..........
|
||||||
|
.................................................#..........................................#....#................................
|
||||||
|
..............##.#...............................................#......................................................##........
|
||||||
|
...........#..............................................#.....................................##.....#.........#................
|
||||||
|
#.......................#..........................#......#...................#.#.................................................
|
||||||
|
..............##..........................#............................................................#................#.........
|
||||||
|
.......................#...#.........#....................................................................#............#..........
|
||||||
|
.....#.................##.................................................#...........#..............#....#.................#.....
|
||||||
|
.........#................................................#....................#.......#.........................##.#.............
|
||||||
|
...........#............#...#...................#.........#....................................................#..................
|
||||||
|
....................#.....................................................................#..........#.#..........................
|
||||||
|
............................##..#.......................#.......#...................#.#..........#..........................#...#.
|
||||||
|
..................#...........#.......#.............................................................#.............................
|
||||||
|
...##......................#....##..................................#...............#.#..#........................................
|
||||||
|
..#..............................##..................................................................#.......#....................
|
||||||
|
...#.......#..........#.#.................................................##....#...............#...............#..........#.....#
|
||||||
|
.....................................................##....................#..#..#...........................#....................
|
||||||
|
...#......................#........#..................#.##..............#..............#....................................#.....
|
||||||
|
...............#..........................#..........................................................#.#..#..............#........
|
||||||
|
....................##....................#..#...................................#................................................
|
||||||
|
...........................#..............#.....................................#.........................##......................
|
||||||
|
...............#.................................................................#.....................#..........................
|
||||||
|
......#..........#...#...........#................................................#...#.................................#..#......
|
||||||
|
..........#............................#.............#.....................#........#............#.........#......................
|
||||||
|
...........#...........#..........#....#......................................................................#........#.........#
|
||||||
|
......................#...............##.................................................................................#.....#..
|
||||||
|
...#................#........#..........#...................#............^...........#.................#.#......##.#.............#
|
||||||
|
.......................##..............#......#.....................................#.....#.........................#.#.#.........
|
||||||
|
.................#..#..........................................#...................#...#.........#................................
|
||||||
|
..#.#.....#.............................................................#.#.......................................................
|
||||||
|
..............................#...............###...............#..........##..........................#...#..#..........##.......
|
||||||
|
.................................#.....#.........#......................................................#................#........
|
||||||
|
...............##.#..................................................#........................#...................#.........#..##.
|
||||||
|
.........#.................................#......#...............................................................................
|
||||||
|
..................#......................#.#.........................................................#.....#......................
|
||||||
|
.#..................#.............................#...............................................................................
|
||||||
|
...................#...................#.#........#......#...........................#......................#..........#..........
|
||||||
|
.............#...................................................................................................#................
|
||||||
|
..........................#................................................#........#..#..........................................
|
||||||
|
.#........................................................#.......#......#..#.....................................................
|
||||||
|
..................##..............#.............#................#...............................#......#......#........#....#.#..
|
||||||
|
#.............#....................................#.....................................................#........................
|
||||||
|
............................#................................................................#....#.....#................#........
|
||||||
|
.........#.......................................................................................................................#
|
||||||
|
..#.........................................................................................#........#.#...........#..............
|
||||||
|
...........#......................#.......#................................#...#.......#...............#..........................
|
||||||
|
.......................#...#..#.......#..................#........#.....#.........#...............................................
|
||||||
|
..#..##...................#..........#................................................#.........#...................#.............
|
||||||
|
........................##..........................#.......#..........................#...#.#....................................
|
||||||
|
..........................................................................................#.............#...........#............#
|
||||||
|
..............................#.............................................................................................#.#..#
|
||||||
|
.............#..........#...........................#.........................#........#.....................#............#......#
|
||||||
|
....................................#..........................................................................................#..
|
||||||
|
.........#.................................#...........................................................................#..........
|
||||||
|
.#..............................#......#......#.#................................#.................#......#....#..#..#...........#
|
||||||
|
.#...#................#.......#............#.........#...#..........#......#.........................#....................#.......
|
||||||
|
..............#........................#................................................................................#.........
|
||||||
|
.........#........#..#.........#........#......#..#..............................................#................#...............
|
||||||
|
...........#......................#.......#..................................#....#...#......#..........#.........................
|
||||||
|
...........#........................................................#.#...........#................#..............................
|
||||||
|
.#...........................#...................#...#..................................................................#........#
|
||||||
|
....................................................................#...................#.....#......#...........................#
|
||||||
|
...#..#..............#......................#......#..#...............#..............#..............#..............#..............
|
||||||
|
...........#........................#............#.#...........#..................................................................
|
||||||
|
............#........................#.................................................#..............#.#....................#....
|
||||||
|
............................#...........................#............................#........#..........................#........
|
||||||
|
#................................................................#...........................#.............#.#........#.#.......#.
|
||||||
|
............#..........#..............#.......#...#................................#.........#.#................#........#....#...
|
||||||
|
...#.....................#..........#.............#....................................................#.#........................
|
||||||
|
...............#..................................................#......................#...............#........................
|
||||||
|
......#............................#..................#.....#...........................................................#...#.#...
|
||||||
|
#................#..........................................................................................#..........#.......#..
|
||||||
|
.................................................................#..............#...................#...................#.#.......
|
||||||
|
...............#..............................................#.................#...............#...........................#.....
|
||||||
|
.............................#...#........................#....................#........#.....................................#.##
|
||||||
|
...............##..#.....#..#....#.#...#...........................................#.#........#........#.......#..................
|
||||||
|
.......#........................#....#..#............................................................#.......#....................
|
||||||
|
........#....................#........#....#.................#........................#.............#.............................
|
||||||
|
#...#...........#......................................................#...............#...........#..#..#....#................#..
|
||||||
|
................................#........................................................#...#..#......#....#.....#....#...#......
|
||||||
|
..#..............#............................#........#....#......#.................................................#............
|
Loading…
x
Reference in New Issue
Block a user