Teine
This commit is contained in:
103
3/advent_2.py
Executable file
103
3/advent_2.py
Executable file
@@ -0,0 +1,103 @@
|
||||
#!/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)
|
||||
Reference in New Issue
Block a user