bob
Bob 2025-12-07 17:13:36 +01:00
parent 84bc10cbaa
commit 1827398746
4 changed files with 227 additions and 0 deletions

27
bob/day07/day07-p1.py Normal file
View File

@ -0,0 +1,27 @@
def read_input(filename):
sheet = []
for line in open(filename).read().splitlines():
sheet.append(list(line))
return sheet
# filename = "day07/example_input" # 21
filename = "day07/input" # 1560
sheet = read_input(filename)
splits = 0
for y in range(0,len(sheet)-1): # skip last line
for x in range(0,len(sheet[y])):
if sheet[y][x] == "S" or sheet[y][x] == "|":
# Shoot ray down
if sheet[y+1][x] == "^": # split
sheet[y+1][x+1] = "|"
sheet[y+1][x-1] = "|"
splits += 1
else:
sheet[y+1][x] = "|"
print(f"Total number of splits: {splits}")

42
bob/day07/day07-p2.py Normal file
View File

@ -0,0 +1,42 @@
def read_input(filename):
sheet = []
for line in open(filename).read().splitlines():
sheet.append(list(line))
return sheet
# filename = "day07/example_input" # 40
filename = "day07/input" # 1560
sheet = read_input(filename)
for y in range(0,len(sheet)):
for x in range(0,len(sheet[y])):
if sheet[y][x] == "S":
sheet[y][x] = 1
if sheet[y][x] == "^":
sheet[y][x] = -1
if sheet[y][x] == ".":
sheet[y][x] = 0
# "Cheat alert"; figured this out after algorithm hints on reddit
for y in range(0,len(sheet)-1): # skip last line
for x in range(0,len(sheet[y])):
# Path starts with weight one
# Just add weight to next step
# if empty (0), weight stays same
# if path is "joined", weights are joined/added
if sheet[y][x] > 0:
# Shoot ray down
if sheet[y+1][x] == -1: # split
sheet[y+1][x+1] += sheet[y][x]
sheet[y+1][x-1] += sheet[y][x]
else:
sheet[y+1][x] += sheet[y][x]
# Last line of sheet contains the added/joined paths, add them up
paths = 0
for i in sheet[-1]:
paths += i
print(f"Total number of paths: {paths}")

16
bob/day07/example_input Normal file
View File

@ -0,0 +1,16 @@
.......S.......
...............
.......^.......
...............
......^.^......
...............
.....^.^.^.....
...............
....^.^...^....
...............
...^.^...^.^...
...............
..^...^.....^..
...............
.^.^.^.^.^...^.
...............

142
bob/day07/input Normal file
View File

@ -0,0 +1,142 @@
......................................................................S......................................................................
.............................................................................................................................................
......................................................................^......................................................................
.............................................................................................................................................
.....................................................................^.^.....................................................................
.............................................................................................................................................
....................................................................^.^.^....................................................................
.............................................................................................................................................
...................................................................^.^...^...................................................................
.............................................................................................................................................
..................................................................^.....^.^..................................................................
.............................................................................................................................................
.................................................................^.^...^.^.^.................................................................
.............................................................................................................................................
................................................................^.^...^.^...^................................................................
.............................................................................................................................................
...............................................................^...^.....^...^...............................................................
.............................................................................................................................................
..............................................................^...^...^.^.^.^.^..............................................................
.............................................................................................................................................
.............................................................^.^.....^.^.^.....^.............................................................
.............................................................................................................................................
............................................................^.^.^.^...^.^.^...^.^............................................................
.............................................................................................................................................
...........................................................^.......^.^.^.^.^...^.^...........................................................
.............................................................................................................................................
..........................................................^...^.^.^.^.^...^...^.^.^..........................................................
.............................................................................................................................................
.........................................................^.^...^.^...^.....^.^.^.^.^.........................................................
.............................................................................................................................................
........................................................^.^...^.^.^.^.^...^.^.....^.^........................................................
.............................................................................................................................................
.......................................................^.^.^.^.^.^.^.....^.^.^.....^.^.......................................................
.............................................................................................................................................
......................................................^.^.^...^.^.^.^.^.^.^.^.^.^.....^......................................................
.............................................................................................................................................
.....................................................^...............^.^.^.....^...^...^.....................................................
.............................................................................................................................................
....................................................^.^.^.....^.^...^.^.^.^.....^.^...^.^....................................................
.............................................................................................................................................
...................................................^.^...^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^...................................................
.............................................................................................................................................
..................................................^.^.^.^.^.^.^...^.^.^...^.^.^.^.^...^.^.^..................................................
.............................................................................................................................................
.................................................^.^...^.^.^.^.....^.^.^...^.^.^...^...^.^.^.................................................
.............................................................................................................................................
................................................^...^...^.^...^.^.^.^.^.^.....^.^...^.^...^.^................................................
.............................................................................................................................................
...............................................^.....^.....^.^.^...^.^.^.^.^.....^.^.^.......^...............................................
.............................................................................................................................................
..............................................^.^...^.^.^.^.^...^...^.^.....^...^.^.^.....^.^.^..............................................
.............................................................................................................................................
.............................................^.^.^.^...^.^.....^.^.^.^.^.^.^.^.^.^.^.^...^...^.^.............................................
.............................................................................................................................................
............................................^.^.^.^...^.....^.^.^.^...^.^.^.^.^.^...^.^.^...^.^.^............................................
.............................................................................................................................................
...........................................^.^.^...^...^...^.^.^.^.^.^.....^...^.^.....^.^.....^.^...........................................
.............................................................................................................................................
..........................................^.....^.......^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^.........^..........................................
.............................................................................................................................................
.........................................^.^...^.....^.^...^.^.^...^.^.^.^.......^.....^.^...^.^.^.^.........................................
.............................................................................................................................................
........................................^.^...^.^.^.^.^.^.^.......^.^.^...^.^.^...^.^.^.^...^.^...^.^........................................
.............................................................................................................................................
.......................................^...^...^.^.^.^.......^.^.^.^.^.^.^.^.^...^.^.....^...^.^...^.^.......................................
.............................................................................................................................................
......................................^.^...^.^.^...^.^.......^.........^...^...^.^...^.^...^.^.^.^...^......................................
.............................................................................................................................................
.....................................^.^.^.^.^.^.......^.^.^...^.^.^.^.^...^.^...^...^.^...^.^.^.^.^...^.....................................
.............................................................................................................................................
....................................^.^.^...^.^.^.^.^.^.....^...^.^.^.^.^.^.^.....^.^.^.........^.....^.^....................................
.............................................................................................................................................
...................................^.^.^.^.....^.^.^.^.^.^.^...^.^.^.....^...^.......^.^.^.^.^.^.^...^.^.^...................................
.............................................................................................................................................
..................................^...^.^.^.^...^.^...^...^.^...^.^.^...^...^...^.^.....^.....^.^.^...^.^.^..................................
.............................................................................................................................................
.................................^.^...^.^.^...^.^...^.^.........^.^.^.^.^.^.^.^.^...^...^.^...^.^.^.^.^.^.^.................................
.............................................................................................................................................
................................^...^.^.^.^.^.^.^.^.^.....^...^.^.........^...^.^...^...^.....^.^.....^...^.^................................
.............................................................................................................................................
...............................^.^.^.^...^.^.........^.^.^.^.^.....^.^.....^.^...^.^.^.^.^...^.^.^.....^.^.^.^...............................
.............................................................................................................................................
..............................^.^.^.^...^.^.^.^.^.^.....^.^.^...^...^.^.^.^.^...^.......^.^.^.^.^...^.^.....^.^..............................
.............................................................................................................................................
.............................^.^...^...^.........^...^.....^.^.^.^.^.^.^.^...^...^...^.^.^.^.^.....^.^.....^...^.............................
.............................................................................................................................................
............................^.^.^.^...^...^.^...^.^.......^...^.^.^...^.^.^.^.^...^...^.^.......^.^.^...^.^.^.^.^............................
.............................................................................................................................................
...........................^.^.^.^...^.^.^.^.^.^.^.^...^.^...^.^...^.^.^...^...^.^.^.^.^.^.....^...^.^.^.^.^.^...^...........................
.............................................................................................................................................
..........................^.....^.^.^.....^.^.......^.^...^...^.^.^...^.....^.^.^...^...^.^...^.^.^.^.^.^...^.^...^..........................
.............................................................................................................................................
.........................^.^.....^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^...^.^.....^.^...^.....^.^...^.^.........................
.............................................................................................................................................
........................^...^...^.^.^...^...........^.^...^.^.....^.^...^...^...^.....^.^.....^.^.^.........^.^...^.^........................
.............................................................................................................................................
.......................^.^.^.^...^.......^.^...^.^...^.^.^.....^.^.^.^.^.......^.^.^.^...^.^.....^.^.^.^...^.^.^.^...^.......................
.............................................................................................................................................
......................^.^.^.........^.^...^.^.^.....^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^.^...^.^.^...^.^.^.^.^.^.^.^...^......................
.............................................................................................................................................
.....................^...^...^.^.^.^.....^...^.^...^.^.^...^.^.^...^.......^.^.^.^.^.^.^.^.^...^.^.....^...^.^.....^.^.^.....................
.............................................................................................................................................
....................^.^.^.^...^.^.^.^.^.^...^.^.^...^.....^...^...^.^...^.^.^.^...^.^.^.^.....^.^.^.^.....^...^.^.^.^...^....................
.............................................................................................................................................
...................^.......^.....^.^.^.^.^.^...^.^...^.^.^.....^...^...^.^.^.......^.^.^...^...^...^.^.^.....^.^.^...^.^.^...................
.............................................................................................................................................
..................^.^.^.^...^.^.^.^...^.^...^.^.^...^.^.^...^.^.....^.^.^.^.^.^...^...^.^.^.^.^.^.^.^.^...^.....^.^.....^.^..................
.............................................................................................................................................
.................^.^.^.^.^.^.^.^...^.^.^...^...^.^...^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.....^.....^.....^.^...^.^.^.^.^.....^.^.................
.............................................................................................................................................
................^.^...^.^.....^.^...^.^.^.....^...^...^.........^.^.^.^.^...^.^.^.^.....^.^.....^.^.....^.^.^.^.^.....^.^...^................
.............................................................................................................................................
...............^.^.....^.^...^.^...^.^.....^.^.^.^.^...^.^...^...^...^.^.^.^.^.^...^...^.^...^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^...............
.............................................................................................................................................
..............^.^.....^.^.^...^.^.^.^...^.^.^.....^.^.^.^.^.^.^.^.^.^...^...^.^...^.^.......^...^.......^...^.^.....^.^.^...^.^..............
.............................................................................................................................................
.............^.^.^.^...^.....^.^.^.^.^...^...........^...^.^.^.^.....^.^.^.^.^...^...^.^.....^.^.^.^.^...^.^...^.^...^...^.....^.............
.............................................................................................................................................
............^.....^.^.^.^.^.^...^...^.^.^...^.^...^.^.^.^.^.^.^.^.....^.^.^.^.^.^...^.^.^.^...^.^...^.....^.....^.^.....^.^.^.^.^............
.............................................................................................................................................
...........^.^...^.^...^.^...^.^.^.....^.^.^.^...^.....^.^...^.....^.^.^...^.^.^...^.^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^.^...^...........
.............................................................................................................................................
..........^.^.......^.^.^.....^...^.^...^.^.^.^...^.^.^.^...^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^...^.^.^.^.^.....^.^.^...^.^..........
.............................................................................................................................................
.........^.^.....^...^.^.^.^.^.^...^.....^.^.^.^.^.....^.^.^.^.^...^.......^...^.^.^.....^.^.^.^.^.^.^.^.^.^.....^.^...........^...^.........
.............................................................................................................................................
........^...^.......^.^.^.....^.^.^.^.^.^.^...^.....^...^.^.^.^.......^.^.^.........^...^...^.^...^.^.....^...^...^...^...^.....^...^........
.............................................................................................................................................
.......^...^.^.^...^...^.^.^.^...^...^.^.^...^.^.^.....^...^.^.^.^.......^.^...^.^.^.^.^...^...^.^.^...^.^.^...^.^.^.^.^.^...^...^...^.......
.............................................................................................................................................
......^.......^.......^.^.^.^.^.^...^.^...^.....^...^.^.^.^.^.^...^.^...^.^.^...^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.^.....^.^.^.^.^.^......
.............................................................................................................................................
.....^.^.....^.^.^.^...^.........^.^.^.^.^.^.^...^.^...^.^.^...^.....^...^.......^.^.^.^.^.......^.^.....^.^.^.^...^.^.^.^...^.^.......^.....
.............................................................................................................................................
....^.^.^.^...^.^.^.^.^.^...^...^.^.^.....^.....^...^.^.^.^.^.^.....^.^.....^.^.^...^.^.^.^.^.^.^.^.........^.^.......^.^...^.^.^.....^.^....
.............................................................................................................................................
...^.^.^.^.^.^.^...^...^.....^.^.^...^.^.^.^.^.^.^.^.....^.^...^...^.^.^.^.^...^.^...^.....^.^.^.^.^.^.^.^.^.^...^.^.......^.^...^.^...^.^...
.............................................................................................................................................
..^.^.^.^.^.^.^.^.......^...^.....^.^...^.^.^.^.^.^.^.^...^.....^.^.^.^...^.^.^.^...^...^.^.^.^.^.^.^.^.......^.^.^.....^.^...^.^.^...^...^..
.............................................................................................................................................
.^.^...^...^.^.^.^.....^.^.^.^.^...^.^...^.^.^...^.^.^.^.^.....^.^.......^.....^.....^...^...^.^.^.^.^...^.^...^.^...^.^.^.^.^.^.^...^.^...^.
.............................................................................................................................................