from typing import List, Dict
# A megadott adatsorok: minden sor egy húzás számai (7 szám)
lines = """
2 3 9 11 15 18 35
4 10 12 14 16 30 32
1 5 13 23 25 32 33
15 17 22 24 25 27 33
8 12 13 17 18 32 33
1 2 9 11 18 29 30
8 15 23 25 26 30 34
2 4 8 11 26 27 28
7 12 16 25 30 32 33
2 4 12 21 25 30 33
9 14 15 17 19 21 23
7 10 17 20 22 23 29
1 7 10 18 20 22 35
1 3 7 17 19 21 28
5 24 25 27 31 32 33
2 7 9 11 21 30 31
""".strip()
def parse_weeks(text: str) -> List[List[int]]:
weeks = []
for line in text.splitlines():
nums = [int(x) for x in line.strip().split() if x.isdigit()]
if nums:
weeks.append(nums)
return weeks
def oldest_drawn_numbers(weeks: List[List[int]], total_numbers: int) -> List[int]:
last_seen = {n: None for n in range(1, total_numbers + 1)}
for idx, nums in enumerate(weeks):
for n in nums:
if 1 <= n <= total_numbers:
last_seen[n] = idx
N = len(weeks)
def age(n: int):
t = last_seen[n]
if t is None:
return N
return (N - 1) - t
numbers_with_age = [(n, age(n)) for n in range(1, total_numbers + 1)]
numbers_with_age.sort(key=lambda x: x[1], reverse=True)
return [n for n, _ in numbers_with_age[:7]]
if __name__ == "__main__":
weeks = parse_weeks(lines)
TOTAL_NUMBERS = 35
result = oldest_drawn_numbers(weeks, TOTAL_NUMBERS)
print("A legrégebben húzott 7 szám:", result)
-----------------
kicsit tömörebben
---------------------
lines = """2 3 9 11 15 18 35, 4 10 12 14 16 30 32, 1 5 13 23 25 32 33, 15 17 22 24 25 27 33, 8 12 13 17 18 32 33, 1 2 9 11 18 29 30, 8 15 23 25 26 30 34, 2 4 8 11 26 27 28, 7 12 16 25 30 32 33, 2 4 12 21 25 30 33,,9 14 15 17 19 21 23, 7 10 17 20 22 23 29, 1 7 10 18 20 22 35, 1 3 7 17 19 21 28, 5 24 25 27 31 32 33, 2 7 9 11 21 30 31""".strip()
weeks = [list(map(int, l.split())) for l in lines.replace(',', '\n').splitlines() if l.strip()]
last = {n: None for n in range(1, 36)}
for i, w in enumerate(weeks):
for n in w: last[n] = i
N = len(weeks)
def age(n): t = last[n]; return (N-1 - t) if t is not None else N
res = [n for n, _ in sorted(((n, age(n)) for n in range(1, 36)), key=lambda x: x[1], reverse=True)[:7]]
print("A legrégebben húzott 7 szám:", res)
------------
Nincsenek megjegyzések:
Megjegyzés küldése