89 lines
1.7 KiB
Python
Executable File
89 lines
1.7 KiB
Python
Executable File
#!/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.source:
|
|
|
|
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)
|