Hackerboard WikiHaboWeb Linkverzeichnis

[HaBo]

major security
 
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, 15:37   #1 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
Karma: 90
CDW Leistung: SPARC64 VIIICDW Leistung: SPARC64 VIIICDW Leistung: SPARC64 VIIICDW Leistung: SPARC64 VIIICDW Leistung: SPARC64 VIIICDW Leistung: SPARC64 VIIICDW Leistung: SPARC64 VIII
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  
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Alt 10.08.09, 08:36   #2 (permalink)
 
Benutzerbild von Eydeet
 
Registriert seit: 14.04.06
Karma: 8
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  
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Alt 01.09.09, 20: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.
 
Digg this Post!Add Post to del.icio.usBookmark Post in Technorati
Mit Zitat antworten
Antwort

[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 an
Refbacks sind an



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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194