summaryrefslogtreecommitdiff
path: root/buffet_lotterie.py
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2014-11-16 11:48:43 +0100
committerschneefux <schneefux+commit@schneefux.xyz>2014-11-16 11:48:43 +0100
commitc71a804a73851a805a6283c5afef685aefb62f85 (patch)
tree064656207c2335ef44e47b0881fdbd556489952e /buffet_lotterie.py
parent13fd59d27f953423b697c051ae7dc0d30bb191f2 (diff)
downloadbwinf-33-c71a804a73851a805a6283c5afef685aefb62f85.tar.gz
bwinf-33-c71a804a73851a805a6283c5afef685aefb62f85.zip
Datei umbennenen
Diffstat (limited to 'buffet_lotterie.py')
-rwxr-xr-xbuffet_lotterie.py46
1 files changed, 19 insertions, 27 deletions
diff --git a/buffet_lotterie.py b/buffet_lotterie.py
index 5d203fc..82a8d75 100755
--- a/buffet_lotterie.py
+++ b/buffet_lotterie.py
@@ -1,34 +1,26 @@
#!/usr/bin/env python3
-Anzahl_teilnehmer = 28
-Silben = ['In', 'for', 'ma', 'tik', 'kann', 'uns', 'wei', 'sen', 'wer', 'als', 'Nächs', 'ter', 'kommt', 'zum', 'Spei', 'sen']
-
-scores = dict()
+from math import floor
-for doppelte in range(Anzahl_teilnehmer):
- teilnehmer = list(range(Anzahl_teilnehmer)) # Teilnehmer besitzen Nummer; Geburtstagskind hat die 1
- wer_ist_dran = 0 # Wer aus `teilnehmer` durfte als letztes gehen?
- dop = doppelte
- runden = 0
- while len(teilnehmer):
- runden += 1
- for s in Silben: # jeder spricht eine Silbe
- if wer_ist_dran == 0 and dop > 0:
- dop -= 1
- wer_ist_dran += 1 # es sei denn, wir testen, ob es als Geburtstagskind sinnvoller ist, 2 zu sprechen
- if wer_ist_dran == len(teilnehmer):
- wer_ist_dran = 0
+Anzahl_teilnehmer = 6
+Silben = ['In', 'for', 'ma', 'tik', 'kann', 'uns', 'wei', 'sen', 'wer', 'als', 'Nächs', 'ter', 'kommt', 'zum', 'Spei', 'sen']
- wer_ist_dran += 1
- if wer_ist_dran == len(teilnehmer):
- wer_ist_dran = 0
+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
- if teilnehmer[wer_ist_dran] == 0:
- #print('Das ist das Geburtstagskind - ' + str(runden) + ' Runden hat es gedauert')
- scores[doppelte] = runden
- pass # Geschafft, wir kriegen Essen
+ 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
- del teilnehmer[wer_ist_dran]
- wer_ist_dran -= 1
+ 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
+ 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.")
+ break
-print('Das Geburtstagskind sollte von Anfang an ' + str(min(scores, key=scores.get)) + '-mal zwei Silben und anschließend eine Silbe sprechen.')
+ teilnehmer -= 1 # einer geht