summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuffet_lotterie.py34
1 files changed, 24 insertions, 10 deletions
diff --git a/buffet_lotterie.py b/buffet_lotterie.py
index a868e66..2a0f556 100755
--- a/buffet_lotterie.py
+++ b/buffet_lotterie.py
@@ -1,30 +1,44 @@
#!/usr/bin/env python3
+'''Findet die optimale Lösung für die Buffet-Lotterie'''
from math import floor
-Anzahl_teilnehmer = 6
-Silben = ['In', 'for', 'ma', 'tik', 'kann', 'uns', 'wei', 'sen', 'wer', 'als', 'Nächs', 'ter', 'kommt', 'zum', 'Spei', 'sen']
+ANZAHL_TEILNEHMER = 6
+SILBEN = ['In', 'for', 'ma', 'tik', 'kann', 'uns', 'wei', 'sen', 'wer', 'als', \
+ 'Nächs', 'ter', 'kommt', 'zum', 'Spei', 'sen']
def denke(anzahl_teilnehmer, silben):
+ '''Findet die optimale Lösung für die Buffet-Lotterie'''
teilnehmer = anzahl_teilnehmer
fehlt_noch = float("inf")
einfluss = 0
offset = 0
while fehlt_noch > 0:
- e = floor((len(silben) + offset) / teilnehmer) # e Runden ist das Geburtstagskind dran, bis einer gehen darf
- offset = ((len(silben) + offset - 1) % teilnehmer) % (teilnehmer - 1) # nach e Runden fängt Teilnehmer Nummer `offset` an, 0 ist das Geburtstagskind
+ runden = floor((len(silben) + offset) / teilnehmer)
+ # runden Runden ist das Geburtstagskind dran, bis einer gehen darf
- einfluss += e # Geburtstagskind kann insgesamt `e`-mal dem Essen näher kommen
- fehlt_noch = (offset - 1) % (teilnehmer - 1) + 1 # um jetzt dran sein zu müssen, hätte das Geburtstagskind `fehlt_noch`-mal zwei Silben sagen müssen
+ offset = ((len(silben) + offset - 1) % teilnehmer) % (teilnehmer - 1)
+ # nach runden Runden fängt Teilnehmer Nummer `offset` an,
+ # 0 ist das Geburtstagskind
- print("Nach " + str(e) + " Runden fängt der " + str(offset + 1) + ". an. Es sind dann noch " + str(teilnehmer - 1) + " Teilnehmer im Spiel.")
- if e > 0: # falls das Geburtstagskind dran kam
+ einfluss += runden
+ # Geburtstagskind kann insgesamt `runden`-mal dem Essen näher kommen
+ fehlt_noch = (offset - 1) % (teilnehmer - 1) + 1
+ # um jetzt dran sein zu müssen, hätte das Geburtstagskind
+ # `fehlt_noch`-mal zwei SILBEN sagen müssen
+
+ print("Nach " + str(runden) + " Runden fängt der " + str(offset + 1) + \
+ ". an. Es sind dann noch " + str(teilnehmer - 1) + \
+ " Teilnehmer im Spiel.")
+ if runden > 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 nur noch 'eine Silbe' sagen, bis es dran ist.")
+ print("Das Geburtstagskind muss erst " + str(fehlt_noch) + \
+ "-mal 'zwei Silben' und dann nur noch 'eine Silbe'" + \
+ "sagen, bis es dran ist.")
break
teilnehmer -= 1 # einer geht
if __name__ == "__main__":
- denke(Anzahl_teilnehmer, Silben)
+ denke(ANZAHL_TEILNEHMER, SILBEN)