LU04.L07: Münzenspiel gegen Computer

Zufällige Anzahl Münzen

import random
coin_total = random.randint(11, 20)
player = 1
print ("Willkommen zum Münzenspiel")
while coin_total > 0:
    print("Es sind noch ", str(coin_total), " Münzen auf dem Stapel")
    if player == 1:
        coin_take = int(input("Spieler nimm 1-3 Münzen >"))
    else:
        coin_take = random.randint(1,3)
        print ("Ich nehme ", str(takeCoins), " Münzen")
    coin_total = coin_total - coin_take
    player = 3 - player
if player == 2:
    print ("Ich habe gewonnen")
else:
    print ("Du hast gewonnen")  

Optimale Anzahl Münzen

Um das Spiel zu gewinnen, muss der Computer dem Gegner für seinen letzten Zug genau 1 Münze übrig lassen. Dies kann der Computer erreichen, wenn er immer ein Vielfaches von 4 plus 1 Münze auf dem Stapel lässt. Sein Ziel ist es also, dass nach seinem Zug 1, 5, 9, 13, 17 oder 21 Münzen auf dem Stapel sind.

Um die Anzahl Münzen zu bestimmen, rechnet der Computer (coin_total - 1) MODULO 4. Falls diese Rechnung Rest 0 ergibt, nimmt der Computer 1 Münze.

Münzen totalCoins-1 MODULO 4
5 4 0 ⇒ 1
6 5 1
7 6 2
8 7 3
9 8 0 ⇒ 1

In den Lösungen zeige ich hier nur den Teil, wo der Computer seine Anzahl auswählt.

...
    else:
        modulo4 = (coin_total - 1) % 4
        if modulo4 == 0:
            modulo4 = 1
        coin_take = modulo4
        print('Ich nehme ', str(coin_take), ' Münzen')
    coin_total = coin_total - coin_take
...