diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-11-22 09:24:13 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-11-22 09:24:13 +0100 |
| commit | ed7e17295e098066a934d17de18de85fa1226062 (patch) | |
| tree | 4191e72f29a5724740c467f42772888547123893 | |
| parent | 831d531838e60fc38f5715a3271aa7227d06a6ae (diff) | |
| download | bwinf-33-ed7e17295e098066a934d17de18de85fa1226062.tar.gz bwinf-33-ed7e17295e098066a934d17de18de85fa1226062.zip | |
pylint buffet_lotterie.py
| -rwxr-xr-x | buffet_lotterie.py | 34 |
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) |
