advent22/api/advent22_api/routers/_misc.py

31 lines
824 B
Python

import itertools
import random
from typing import Any, Sequence
from ..dav_common import dav_get_textfile
async def get_loesungswort() -> str:
fp = await dav_get_textfile("loesungswort.txt")
return fp.read().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))