pooleli
This commit is contained in:
87
5/advent_2.py
Executable file
87
5/advent_2.py
Executable file
@@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from dataclasses import dataclass
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class Range:
|
||||||
|
target: int
|
||||||
|
source: int
|
||||||
|
length: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class SR:
|
||||||
|
source: int
|
||||||
|
length: int
|
||||||
|
|
||||||
|
|
||||||
|
def findmapping(sr,tables):
|
||||||
|
if len(tables) == 0:
|
||||||
|
return
|
||||||
|
table = tables.pop(0)
|
||||||
|
for row in table:
|
||||||
|
if sr.source > row.
|
||||||
|
print(sr)
|
||||||
|
|
||||||
|
|
||||||
|
with open("data.txt") as file:
|
||||||
|
lines = [line.rstrip() for line in file]
|
||||||
|
|
||||||
|
tables = []
|
||||||
|
table = []
|
||||||
|
seeds = []
|
||||||
|
seedranges = []
|
||||||
|
for line in lines:
|
||||||
|
if line == '':
|
||||||
|
print('Tühi rida')
|
||||||
|
continue
|
||||||
|
if line.startswith("seeds: "):
|
||||||
|
temp = re.findall(r'\d+', line)
|
||||||
|
seeds = list(map(int, temp))
|
||||||
|
print(len(seeds))
|
||||||
|
for i in range(0, int(len(seeds)/2)):
|
||||||
|
seedranges.append(SR(seeds[i*2], seeds[i*2+1]))
|
||||||
|
print(seedranges)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if line[0].isalpha():
|
||||||
|
if len(table) > 0:
|
||||||
|
tables.append(table)
|
||||||
|
table = []
|
||||||
|
continue
|
||||||
|
|
||||||
|
temp = re.findall(r'\d+', line)
|
||||||
|
tableitems = list(map(int, temp))
|
||||||
|
table.append(Range(*tableitems))
|
||||||
|
tables.append(table)
|
||||||
|
|
||||||
|
|
||||||
|
for table in tables:
|
||||||
|
print("tabel")
|
||||||
|
for rida in table:
|
||||||
|
print(rida)
|
||||||
|
|
||||||
|
pisim = 0
|
||||||
|
for sr in seedranges:
|
||||||
|
findmapping(sr,tables)
|
||||||
|
|
||||||
|
for table in tables:
|
||||||
|
muudetud = False
|
||||||
|
print("tabel")
|
||||||
|
for mapping in table:
|
||||||
|
if arv >= mapping.source and arv < (mapping.source + mapping.length):
|
||||||
|
print(mapping)
|
||||||
|
arv = mapping.target + (arv - mapping.source)
|
||||||
|
print(f"Uus arv: {arv}")
|
||||||
|
break
|
||||||
|
|
||||||
|
print(f"Vastus: {arv}")
|
||||||
|
if pisim == 0:
|
||||||
|
pisim = arv
|
||||||
|
if pisim > arv:
|
||||||
|
pisim = arv
|
||||||
|
|
||||||
|
print(pisim)
|
||||||
Reference in New Issue
Block a user