Thema: Zehntausend
Einzelnen Beitrag anzeigen
Alt 10.08.09, 09:36   #2 (permalink)
Eydeet
 
Benutzerbild von Eydeet
 
Registriert seit: 14.04.06
Eydeet Leistung: Facit NTK
Likes: 4
Standard

Eine nicht besonders hübsche Python-Lösung (ich hoffe, sie ist jetzt Bug-Frei ):
   
Code:
#!/usr/bin/python
import random
import sys

def wuerfeln(anzWuerfel):
    return [random.randint(1, 6) for x in range(anzWuerfel)]

def auswertung(e):
    anzahl = [0 for i in range(7)]
    for i in e:
        anzahl[i] += 1
    
    wuerfel = 0
    pasche = 0
    if (anzahl[1] >= 3):
        pasche = 10**(anzahl[1])
        wuerfel += anzahl[1]
    for i in range(2, 7):
        if (anzahl[i] >= 3):
            pasche += i * 10**(anzahl[i]-1)
            wuerfel += anzahl[i]

    punkte = 0
    if (anzahl[1] in [1,2] or anzahl[5] in [1,2]):
        punkte = pasche
    else:
        wuerfel = 0
    if (anzahl[1] < 3 or punkte == 0):
        punkte += 100 * anzahl[1]
        wuerfel += anzahl[1]
    if (anzahl[5] < 3 or punkte == 0):
        punkte += 50 * anzahl[5]
        wuerfel += anzahl[5]
    return (punkte, wuerfel)

punkte = [0 for i in range(2)]
pa = 0
aktRunde = 1
while (max(punkte) < 10000 or pa != 0):
    print "#### RUNDE", aktRunde
    print "Spieler %d ist an der Reihe!" % (pa+1),
    abbruch = False
    runde = 0
    wuerfel = 5
    print "Druecke ENTER zum Wuerfeln! ",
    sys.stdin.readline()
    while (not abbruch):
        e = wuerfeln(wuerfel)
        print "Gewuerfelt:", e
        stat = auswertung(e)
        runde += stat[0]
        wuerfel -= stat[1]
        if (stat[0] == 0):
            runde = 0
        print "Punkte dieser Runde: %d" % runde
        if (stat[0] == 0):
            break
        if (wuerfel == 0):
            wuerfel = 5
        while (stat[0] > 0):
            print "Noch eine Runde mit %d Wuerfeln? (j/n) " % wuerfel,
            a = sys.stdin.readline().strip()
            if (a == "j"):
                break
            elif (a == "n"):
                abbruch = True
                break
    punkte[pa] += runde
    print "Punkte gesamt:", punkte[pa]
    print
    pa = (pa + 1) % 2
    if (pa == 0): aktRunde += 1
Eydeet ist offline   Mit Zitat antworten
 

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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61