Hackerboard WikiHaboBlog

[HaBo]

 
Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann.

Zehntausend

Diskussion: Zehntausend im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Eingereicht von Ook! ### Es soll das Spiel "Zehntausend" entwickelt werden. Wikipedia Artikel zum Spiel Wie viele Würfe braucht ein ...

Antwort
Alt 09.08.09, 16:37   #1 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Standard Zehntausend


Eingereicht von Ook!

###
Es soll das Spiel "Zehntausend" entwickelt werden.
Wikipedia Artikel zum Spiel

Wie viele Würfe braucht ein Spieler durchschnittlich, um die 10000 Punkte zu erreichen?
Wie dieser "Statistik-Teil" genau realisiert werden soll, darf jeder für sich entscheiden.

Wer mag, kann natürlich auch eine Spieler vs Spieler oder Spieler vs Computer Implementierung schreiben.
###

__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 10.08.09, 09:36   #2 (permalink)
 
Benutzerbild von Eydeet
 
Registriert seit: 14.04.06
Eydeet Leistung: Facit NTK
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
   
HaBOT
 

Werbung ist gerade online    
Alt 01.09.09, 21:00   #3 (permalink)
Easyrider
Guest
 
Standard

Da ich das Spiel selbst spiele kann ich zu der Aufgabe noch sagen, das man auf jeden Fall einen Unterschied zwischen Risikobereiten und sicherheits Spielern hat.

Aufschreiben geht bei uns erst ab 350 Punkten.

Daher sah ich jetzt für mich erstmal keine Möglichkeit das vernünftig zu scripten ohne diese Risiko bereitschaft einzubeziehen.
  Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Programmieraufgaben » Zehntausend
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



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