This commit is contained in:
parent
9b5c182f62
commit
b0acd1d834
3 changed files with 222 additions and 0 deletions
72
2023/11/11.py
Normal file
72
2023/11/11.py
Normal file
|
@ -0,0 +1,72 @@
|
|||
#!/usr/bin/env python
|
||||
# 2023 - Advent Of Code 11
|
||||
|
||||
# file = 'input_example.txt'
|
||||
file = 'input.txt'
|
||||
|
||||
# pylint: disable=consider-using-with
|
||||
input_lines = [line.strip('\n') for line in open(file, encoding="utf-8")]
|
||||
print(f'map: ({len(input_lines[0])}, {len(input_lines)})')
|
||||
|
||||
# find empty lines
|
||||
empty_lines = []
|
||||
for y, _ in enumerate(input_lines):
|
||||
if '#' not in input_lines[y]:
|
||||
empty_lines.append(y)
|
||||
print(f'empty lines: {empty_lines}')
|
||||
|
||||
# find empty columns
|
||||
empty_columns = []
|
||||
for x in range(0, len(input_lines[0])):
|
||||
empty = True
|
||||
for y, _ in enumerate(input_lines):
|
||||
if input_lines[y][x] == '#':
|
||||
empty = False
|
||||
break
|
||||
if empty:
|
||||
empty_columns.append(x)
|
||||
print(f'empty columns: {empty_columns}')
|
||||
|
||||
# expand lines
|
||||
eline = "".join(['.'] * len(input_lines[0]))
|
||||
offset = 0
|
||||
for l in empty_lines:
|
||||
input_lines.insert(l+offset, eline)
|
||||
offset += 1
|
||||
|
||||
# expand columns
|
||||
offset = 0
|
||||
for c in empty_columns:
|
||||
for y, line in enumerate(input_lines):
|
||||
s = line[:c+offset] + '.' + line[c+offset:]
|
||||
input_lines[y] = s
|
||||
offset += 1
|
||||
|
||||
stars = []
|
||||
for y, _ in enumerate(input_lines):
|
||||
for x, _ in enumerate(_):
|
||||
if input_lines[y][x] == '#':
|
||||
stars.append((x, y))
|
||||
print(f'stars: {len(stars)}, extended map: ({len(input_lines[0])}, {len(input_lines)})')
|
||||
|
||||
# for y in range(0, len(input_lines)):
|
||||
# for x in range(0, len(input_lines[y])):
|
||||
# print(input_lines[y][x], end='')
|
||||
# print()
|
||||
|
||||
paths = []
|
||||
for s1 in stars:
|
||||
for s2 in stars:
|
||||
if s1 != s2 and {s1, s2} not in paths:
|
||||
paths.append({s1, s2})
|
||||
print(f'number of paths: {len(paths)}')
|
||||
|
||||
# dist = math.abs(x2-x1) + math.abs(y2-y1)
|
||||
path_sum = 0
|
||||
for path in paths:
|
||||
p = list(path)
|
||||
dist = abs(p[0][0] - p[1][0]) + abs(p[0][1] - p[1][1])
|
||||
path_sum += dist
|
||||
# print(f'{path} dist: {dist}')
|
||||
|
||||
print(f'{path_sum=}')
|
140
2023/11/input.txt
Normal file
140
2023/11/input.txt
Normal file
|
@ -0,0 +1,140 @@
|
|||
.........................#.........#..................#..............#.......#.....#........................#............#.....#...........#
|
||||
.............................................#.....................................................#........................................
|
||||
.......#............#..........#............................................................................................................
|
||||
.#................................................#........#.............................................#..............................#...
|
||||
................#.....................#.............................................................................#.......................
|
||||
........................................................................#....................#................#...........#.................
|
||||
...........................................#........................................#.......................................................
|
||||
..................................#......................#.......#...........#..............................................................
|
||||
..........#.................................................................................................................................
|
||||
..............................................#..........................................#.....................................#............
|
||||
..........................................................................#.................................................................
|
||||
...#................#...........#.......#............................#...............................#......................................
|
||||
.........................................................................................................................#..................
|
||||
.............................................................................#........#.............................#....................#..
|
||||
..........#.....#...............................#..............................................................#...................#........
|
||||
.........................................................#..................................................................................
|
||||
.....................#......#.......................#.......................................................................................
|
||||
.....................................#.....#.......................#.........................#...........#..............#..................#
|
||||
...................................................................................................#........................................
|
||||
...............#........................................................#.........................................#............#............
|
||||
#........................................................................................#..................................................
|
||||
...............................................................................#............................................................
|
||||
....................................................#......#.........#..........................#...........................................
|
||||
...............................................#.....................................................#...........................#..........
|
||||
.....#............#........................................................................................................................#
|
||||
...........................................#.................................................................#......#.......................
|
||||
............#....................#...............................#..........#...............................................................
|
||||
............................................................#......................................#........................#...............
|
||||
...........................#.......................................................#..........#......................................#......
|
||||
...................#..............................................................................................#.........................
|
||||
....................................................................#......................................................................#
|
||||
.............#................................#.............................................................................................
|
||||
........#.........................#..........................................#..................#...........................................
|
||||
...........................................................................................................#...............#................
|
||||
........................................#.........#.......#.....................................................#...........................
|
||||
..#................................................................................#.................................#.............#........
|
||||
.....................#......#.......................................................................#.......................................
|
||||
........................................................................................................................................#...
|
||||
..........#.....#........................................................#............#......................................#..............
|
||||
.....................................................#.......#..............................................................................
|
||||
.............................................................................................................#.........#....................
|
||||
...#.............................................................#........................................................................#.
|
||||
.............................#.........#.................#.......................#.................#........................................
|
||||
..............................................#.........................#...................#...............................................
|
||||
............#............#..........................#.......................................................................................
|
||||
....................................................................................................................#.......................
|
||||
...................#...............................................#........................................................................
|
||||
...................................#............#..........................................................#..............#.....#......#....
|
||||
.......................#......#...........................................#..............#.........#........................................
|
||||
............................................................................................................................................
|
||||
..#............................................................#.....#...............................................#......................
|
||||
.......#......................................#.........#.....................................................#..........................#..
|
||||
.........................#...............................................................................#..................................
|
||||
.............#...............................................................................#..............................................
|
||||
#........................................#..................#.............#.........#.................................................#.....
|
||||
............................................................................................................................................
|
||||
..................................................#........................................................................................#
|
||||
........#.............#............#...........................................................................#............................
|
||||
..............#.....................................................................................#.......................................
|
||||
...................................................................................................................#........................
|
||||
..................#...........#............#................#...................................#..............................#............
|
||||
......................................................................#.................#....................#.......................#......
|
||||
.................................................................................#.........................................#................
|
||||
............#....................................#......#...................................................................................
|
||||
......................#.........................................#...........................................................................
|
||||
.......#....................#.........#....................................................#.......................#............#...........
|
||||
.............................................................................#......................#.......................................
|
||||
...#.............#..........................#........#...............#...................................#................#.................
|
||||
............................................................................................................................................
|
||||
.................................................................................................#..........................................
|
||||
.........................#.....#..................................................#...........................................#.......#.....
|
||||
............................................................................................................................................
|
||||
............#.....................................................#...............................................................#.........
|
||||
...#........................#.................#.........................................................#...........#.....................#.
|
||||
................#....................................#......................................#...............................................
|
||||
............................................................................................................................................
|
||||
............................................................................................................................................
|
||||
...................................#.................................................#.................................#....................
|
||||
.............#..............................#....................................................#..............#.......................#...
|
||||
...................................................#.........#..........#..................#................................................
|
||||
#......#.............#.......#...........................................................................#..................................
|
||||
.................................................................................#..................#...............#.......................
|
||||
..........................................................#.................................................................................
|
||||
.......................................................................................................................................#....
|
||||
...........#....................................................#......................#...................#................................
|
||||
.......................................#................................#...................................................................
|
||||
...................#............................................................................................#........#..........#.......
|
||||
............................................#....................................................#......#.....................#.............
|
||||
........#........................#................#...............#.........................................................................
|
||||
.............#.............#............................................................#............................#......................
|
||||
...........................................................#................................................................................
|
||||
........................................#......#.............................#...............................#..............................
|
||||
................#...........................................................................................................................
|
||||
.................................................................#................#.................#.......................................
|
||||
......#.............#...........#.....................................................................................................#.....
|
||||
.#.......................#...........#......#.............................................#.................................................
|
||||
........................................................#.................#.................................................................
|
||||
....................................................................................#.......................................................
|
||||
...............#..................#.............................#............................#..............#...............#...............
|
||||
.........................................#.......................................................................#..........................
|
||||
..#........#........#..............................#........................................................................................
|
||||
............................................................#.....................#.........................................................
|
||||
....................................#........................................#...........#......#......#....................................
|
||||
.......................#.......................#..................................................................................#.........
|
||||
........#......#.........................................................................................................................#..
|
||||
..........................................................#..............................................................#..................
|
||||
...#........................#........................#................#......................#......................#.......................
|
||||
................................................................#..........#...........#......................................#.............
|
||||
..............................................#.....................................................#.................................#.....
|
||||
......................................#.....................................................................................................
|
||||
..........#......#...............................................................................................#..........................
|
||||
...........................................#.................#...................#........................................#.................
|
||||
........................................................................................#......#...........................................#
|
||||
....................................................................#.......................................................................
|
||||
.#.......................#................................#..............#.............................................#....................
|
||||
................................................#...............................................................#...........................
|
||||
.......................................#.............#.....................................................#...............#................
|
||||
.............#................#...................................................................#................................#........
|
||||
.............................................#..........................................#.................................................#.
|
||||
.................#................................................................#.........................................................
|
||||
.#..........................................................................................................................................
|
||||
........................................................................................................................#...................
|
||||
...........#..........#...........#..............#.......................................................#.......#....................#.....
|
||||
....#................................................................#......................................................................
|
||||
...........................................#.................#...............................................#..................#...........
|
||||
.....................................#....................................#..........#..........#...........................................
|
||||
.........................................................................................................................#..............#...
|
||||
.................................................................................#.........#............#...................................
|
||||
................#......#.............................#.............#........................................................................
|
||||
#.......#....................#.........#....................................................................................................
|
||||
.............................................#..............................#.....................................................#.........
|
||||
...................#.................................................................#......................................................
|
||||
....................................#................................................................#..............#.......................
|
||||
...................................................#...........#................................#...........#..............................#
|
||||
.........................................................................#.....#............................................................
|
||||
..#.....................#......................#.................................................................#...........#..............
|
||||
.........................................................................................#.........#........................................
|
||||
.........#.......................................................................................................................#......#...
|
||||
.............................#.....#............................#.....#..............#...............................#......................
|
||||
.............#.............................................#.............................................#.................#................
|
10
2023/11/input_example.txt
Normal file
10
2023/11/input_example.txt
Normal file
|
@ -0,0 +1,10 @@
|
|||
...#......
|
||||
.......#..
|
||||
#.........
|
||||
..........
|
||||
......#...
|
||||
.#........
|
||||
.........#
|
||||
..........
|
||||
.......#..
|
||||
#...#.....
|
Loading…
Reference in a new issue