1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#!/usr/bin/env python3
from math import floor
Anzahl_teilnehmer = 28
Silben = ['In', 'for', 'ma', 'tik', 'kann', 'uns', 'wei', 'sen', 'wer', 'als', 'Nächs', 'ter', 'kommt', 'zum', 'Spei', 'sen']
teilnehmer = Anzahl_teilnehmer
fehlt_noch = float("inf")
runden = 0 # DEBUG
einfluss = 0
offset = 0
while fehlt_noch > 0:
runden += 1
e = floor((len(Silben) + offset) / teilnehmer) + 1 # e Runden ist das Geburtstagskind dran, bis einer gehen darf
offset = (((len(Silben) + offset) % (teilnehmer)) - 1) % teilnehmer # nach e Runden fängt Teilnehmer Nummer `offset` an, 0 ist das Geburtstagskind
einfluss += e # Geburtstagskind kann insgesamt `e`-mal dem Essen näher kommen
fehlt_noch = offset # um jetzt dran sein zu müssen, hätte das Geburtstagskind `fehlt_noch`-mal zwei Silben sagen müssen
print("Nach " + str(e) + " Runden fängt der " + str(offset + 1) + ". an")
if e > 0: # falls das Geburtstagskind dran kam
print("Es fehlten " + str(fehlt_noch) + " bis zum Geburtstagskind")
if fehlt_noch <= einfluss:
print("Das Geburtstagskind muss erst " + str(fehlt_noch) + "-mal zwei Silben und dann " + str(einfluss - fehlt_noch) + "-mal eine Silbe sagen, bis es dran ist.")
break
teilnehmer -= 1 # einer geht
print(runden)
# Das Geburtstagskind kommt nach `j` Runden `einfluss`-mal dran
|