#!/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)