Files
Advent2023/3/advent_2.py

104 lines
2.3 KiB
Python
Raw Normal View History

2023-12-03 20:32:38 +02:00
#!/usr/bin/env python3
from dataclasses import dataclass
@dataclass
class Point:
line: int
pos: int
@dataclass
class Arv:
line: int
algus: int
lopp: int
arv: int
def leianumbrid(line, pos, arvud):
tulemus = 1
mitu = 0
print(f"rida={line}, pos={pos}")
for i in arvud:
if i.line == (line - 1):
if i.algus in [pos - 1, pos, pos + 1]:
mitu += 1
tulemus *= i.arv
print(f"t1 {i}")
else:
if i.lopp in [pos + 2, pos + 1, pos]:
mitu += 1
tulemus *= i.arv
print(f"t2 {i}")
if i.line == (line + 1):
if i.algus in [pos - 1, pos, pos + 1]:
mitu += 1
tulemus *= i.arv
print(f"t3 {i}")
else:
if i.lopp in [pos , pos + 1, pos + 2 ]:
mitu += 1
tulemus *= i.arv
print(f"t4 {i}")
if i.line == line:
if i.algus in [pos + 1]:
mitu += 1
tulemus *= i.arv
print(f"t5 {i}")
if i.lopp in [pos]:
mitu += 1
tulemus *= i.arv
print(f"t6 {i}")
print(f"Leidsin {mitu} arvu")
print(f"Tulemus oli {tulemus}")
if mitu == 2:
return tulemus
return 0
with open("/home/jesmin/wrk/aoc/3/data3.txt") as file:
lines = [line.rstrip() for line in file]
linecount = len(lines)
x = 0
y = 0
kogunumber = 0
arvud = []
for y in range(0, linecount):
number = ""
print("Rida algab")
print(lines[y])
for x in range(0, len(lines[y])):
if lines[y][x].isdigit():
if len(number) == 0:
numbrialgus = Point(y, x)
number += lines[y][x]
else:
if len(number) > 0:
arvud.append(Arv(y, numbrialgus.pos, x, int(number)))
print(arvud[-1])
number = ""
if len(number) > 0:
arvud.append(Arv(y, numbrialgus.pos, x, int(number)))
print(arvud[-1])
number = ""
print(arvud)
ylinumber = 0
for y in range(0, linecount):
for x in range(0, len(lines[y])):
if lines[y][x] == "*":
ylinumber += leianumbrid(y, x, arvud)
print(ylinumber)