2023 dec 13th
This commit is contained in:
parent
1d2098a708
commit
85c911ba71
1 changed files with 61 additions and 0 deletions
61
Python/2023/13/main.py
Normal file
61
Python/2023/13/main.py
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
import numpy as np
|
||||
|
||||
input = open("input", 'r').read()
|
||||
|
||||
data = [[row for row in island.split("\n") if row != ""] for island in input.split("\n\n")]
|
||||
|
||||
def print_island(island):
|
||||
for row in island:
|
||||
print("".join(row))
|
||||
print()
|
||||
|
||||
def findMirror(island, ignore=-1, fix_mistake=False):
|
||||
left_columns = 0
|
||||
for column in range(1, len(island[0])):
|
||||
fixed_mistake = False
|
||||
mirror = True
|
||||
for row in island:
|
||||
right = column
|
||||
left = right - 1
|
||||
while left >= 0 and right < len(island[0]):
|
||||
if row[left] != row[right]:
|
||||
if fix_mistake and not fixed_mistake:
|
||||
fixed_mistake = True
|
||||
else:
|
||||
mirror = False
|
||||
left -= 1
|
||||
right += 1
|
||||
if not mirror:
|
||||
break
|
||||
if mirror and column != ignore:
|
||||
left_columns = column
|
||||
break
|
||||
return left_columns
|
||||
|
||||
mirrors = []
|
||||
|
||||
for island in data:
|
||||
column = 0
|
||||
row = 0
|
||||
island = np.array([list(row) for row in island])
|
||||
column = findMirror(island)
|
||||
flipped_island = np.transpose(island)
|
||||
row = findMirror(flipped_island)
|
||||
mirrors.append((row, column))
|
||||
|
||||
print(sum([column for _, column in mirrors]) +
|
||||
sum([row for row, _ in mirrors]) * 100)
|
||||
|
||||
mirrors_2 = []
|
||||
|
||||
for i, island in enumerate(data):
|
||||
column = 0
|
||||
row = 0
|
||||
island = np.array([list(row) for row in island])
|
||||
column = findMirror(island, mirrors[i][1], True)
|
||||
flipped_island = np.transpose(island)
|
||||
row = findMirror(flipped_island, mirrors[i][0], True)
|
||||
mirrors_2.append((row, column))
|
||||
|
||||
print(sum([column for _, column in mirrors_2]) +
|
||||
sum([row for row, _ in mirrors_2]) * 100)
|
||||
Loading…
Add table
Add a link
Reference in a new issue