This commit is contained in:
Daniel Bulant 2023-12-11 09:34:11 +01:00
parent 13429a150d
commit c664e38c94
4 changed files with 242 additions and 0 deletions

10
2023/11/input1 Normal file
View file

@ -0,0 +1,10 @@
...#......
.......#..
#.........
..........
......#...
.#........
.........#
..........
.......#..
#...#.....

140
2023/11/input2 Normal file
View file

@ -0,0 +1,140 @@
...........#..........#...........................#....................#......#........................................................#....
...#........................#..............................#...................................................................#............
......................................#...................................................................#...........#.....................
...............................................#...............#.......................#....................................................
..........................................#...........#.............................................#.......................................
..........#.................................................................#................................#..............................
................................#.................................................................................#......#..................
..................................................................#.........................................................................
............................................................#..................#.......................................................#....
................................................#............................................#...............................#..............
.....#..............#..............................................................#................................#.......................
.........................................#...............................................#.................................................#
..............................#................................#.......#....................................................................
........................................................................................................................#...................
...#......#.......#.................#...................#......................................#.......#.......#........................#...
...........................................#...............................#....................................................#...........
...................................................................................#........................................................
.............#............#........................................#.......................................#......#.........................
................................#............................#...............................#..............................................
........................................#.............#.........................#......#......................................#.............
........................................................................................................#.....#.............................
......#............#...............#..............#.........................................................................................
...........#..................#............#.....................#..................................................#.......................
.......................................................................#..................#................#.......................#........
..#...................................#.....................................#.....#..................#......................................
............................................................................................................................................
............................#........................#.........................................#............................................
.......#......................................................................................................................#.............
......................#.......................................................#.............................................................
.#...........................................................#.....#..................................................#.................#...
..................................#....................................................#....................................................
.................................................................................#..............................#...........................
........#.................................#..........#......................................#............#..................................
..................#........................................................#................................................................
.............................#................#......................#...............................#..........................#......#....
..............#......................#..................................................................................#...................
...............................................................................................................#............................
..#.....................#.......................................#...................................................#.......................
..................................#....................#..........................................#.........................................
....................#.....................#......#.........................................................................#.......#........
............................................................#..........#...................................................................#
....#........................#................................................#...........#...............#......#..........................
............................................................................................................................................
..........#............................#....................................................................................................
...............#...............................#......#.............................................#.................................#.....
......................#..........#.........................#.......#..................................................#.....................
...............................................................................................................#..................#........#
............................................................................................................................................
#..........................#...............................................#.......#......#.................................................
............................................................................................................................................
.......#......................................................#............................................................#........#.......
.............................................#.........#............................................#.....#.................................
...............................#.......#....................................................................................................
.................................................................#..........................#..................#............................
..............#.....#.........................................................#......#.....................................................#
.................................................#.......#.............#....................................................................
..............................................................#............................................#................................
.#.......................#...............#.................................#.........................................................#......
....................................#.....................................................#..............................#..................
.....#...........#..............................................................................#.....#.....................................
.................................................................#.................#........................................................
............................................................................................................................................
.................................................#........................................................#.................................
........#.........................................................................................#...........................#..........#..
...............#........#...........#.....#........................#..............................................#................#........
........................................................................................#...................................................
...................................................................................#.........................#..............................
...#..............#....................................................#............................#.......................................
..............................#............................#................................................................................
........................................#.............................................................................................#.....
..............................................#..................#.............#........................#.................#.................
...................................................#.............................................................#..........................
.........#..................................................................................................................................
.......................#.....................................#.......#.....#..............................................................#.
................................................................................................#.....................#.....................
....#...........................#......................#.............................#.......................................#..............
...........................................................................................................#................................
...........#.......#........#..............................#.....................................................#..........................
............................................#...............................................#...............................................
....................................................................#..............#..................#..............#...............#......
.....................................#........................#.............................................................................
...............................................#............................................................#.................#............#
............................................................................................................................................
....#.......#...........................................................................................................#.........#.........
...................................#................#...........#..............................#............................................
............................................................................................................................................
.......................................................................#...........#......#..........#.......#..............................
..............................................................................#......................................................#......
...........................#.....................#..................................................................#.......................
..#............#............................#................................................#..............................................
...........................................................................................................................................#
........................................#...............#............#..........#......................................#....................
............#................................................#..............................................................................
.......#............................#...............#....................................#............#..........................#..........
......................#....................................................#................................................................
...............................................................................................#.............#.....#........................
..................#....................................#.........#...............#..........................................................
.............#...............#................#........................................#.................................................#..
...................................#....................................................................#...................#...............
.........................................#..........#.................#.....................................................................
................#............................................................#..............................................................
..........#.....................#........................#.....................................................................#............
....#.................................#.............................................................................................#.......
......................#.....#.......................................................................................#.......................
..............................................#.........................................#...................................................
..........................................................................................................#.................................
...................................................................#.........................................................#..............
.........#....................#.........#.........#...........#....................................#......................................#.
............................................................................................................................................
..#........................................................................#...............#.............................#..................
..............#...........#..........................................................#..........................................#...........
...................#.................................#...............................................#......................................
...............................#......................................................................................................#.....
...........................................#.................#........#.......................#.............................................
.....................................#.....................................................................#......#.......#.................
................#...............................#................................#......#..........#......................................#.
........................#...................................................................................................................
..............................#................................................................................................#............
.........................................................#...................#..........................#...................................
....#.......................................................................................................................................
........................................................................#........................#......................#.............#.....
............#...............#.............#.........#............................#........#................#................................
.....................#...............#..............................................................................#.......................
..................................................................#......................................................................#..
............................................................................................................................................
..............#........................................#.....................#.......#......................................................
........................#..............................................#..............................................#........#............
........................................#........................................#..........................................................
.......#........................#...................#.........#..............................................#..............................
..#................#......................................................................#........................................#........
.................................................................................................#.......................#..................
..............................................#.............................................................................................
.....#........#...........................................................................................#.........#........#..............
.................................................................................#..........#..........................................#....
..........................#...................................#.........#..............#.........................................#..........
............................................................................................................................................
....................................................................#.......#...................#...........................................
......................#.............#.............#.....................................................#...................................
........................................................#........................................................#..........................
..#..........#..........................#....................................................................................#.......#......

48
2023/11/part1.py Normal file
View file

@ -0,0 +1,48 @@
map = []
for line in open("./input1"):
map.append([x for x in line.strip()])
emptyRows = []
emptyCols = []
for i in range(len(map)):
if map[i].count(".") == len(map[i]):
emptyRows.append(i)
for i in range(len(map[0])):
if [x[i] for x in map].count(".") == len(map):
emptyCols.append(i)
emptyRows.reverse()
emptyCols.reverse()
for i in emptyRows:
# Add another empty row at the selected index
map.insert(i, ["." for x in range(len(map[0]))])
for i in emptyCols:
# Add another empty column at the selected index
for j in range(len(map)):
map[j].insert(i, ".")
# for line in map:
# print("".join(line))
galaxies = []
for i in range(len(map)):
for j in range(len(map[i])):
if map[i][j] == "#":
galaxies.append((i, j))
counter = 0
for x in range(len(galaxies)):
for y in range(x, len(galaxies)):
if x == y: continue
galaxy = galaxies[x]
galaxy2 = galaxies[y]
counter += abs(galaxy[0] - galaxy2[0]) + abs(galaxy[1] - galaxy2[1])
print(counter)

44
2023/11/part2.py Normal file
View file

@ -0,0 +1,44 @@
map = []
for line in open("./input2"):
map.append([x for x in line.strip()])
multiplier = 1_000_000 -1
emptyRows = []
emptyCols = []
for i in range(len(map)):
if map[i].count(".") == len(map[i]):
emptyRows.append(i)
for i in range(len(map[0])):
if [x[i] for x in map].count(".") == len(map):
emptyCols.append(i)
emptyRows.reverse()
emptyCols.reverse()
# for line in map:
# print("".join(line))
print(emptyRows)
print(emptyCols)
galaxies = []
for i in range(len(map)):
for j in range(len(map[i])):
if map[i][j] == "#":
galaxies.append((i + (len([x for x in emptyRows if x < i])) * multiplier, j + (len([x for x in emptyCols if x < j])) * multiplier))
counter = 0
for x in range(len(galaxies)):
for y in range(x, len(galaxies)):
if x == y: continue
galaxy = galaxies[x]
galaxy2 = galaxies[y]
counter += abs(galaxy[0] - galaxy2[0]) + abs(galaxy[1] - galaxy2[1])
print(counter)