2026. június 11., csütörtök

Skandináv legrégebbi 7 szám

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