import itertools import random from typing import Any, Sequence from ..dav_common import dav_get_file async def get_loesungswort() -> str: fp = await dav_get_file("loesungswort.txt") return fp.read().decode("utf8").strip() async def get_rnd(bonus_salt: Any = "") -> random.Random: loesungswort = await get_loesungswort() return random.Random(f"{loesungswort}{bonus_salt}") async def set_length(seq: Sequence, length: int) -> list: # `seq` unendlich wiederholen infinite = itertools.cycle(seq) # Die ersten `length` einträge nehmen return list(itertools.islice(infinite, length)) async def shuffle(seq: Sequence, rnd: random.Random | None = None) -> list: # Zufallsgenerator if rnd is None: rnd = await get_rnd() # Elemente mischen return rnd.sample(seq, len(seq))