Donnerstag, 7. Februar 2013

Card Counting

„Card Counting“ für 7 Punkte als Teil von HP Codewars 2012. Das Lösungsskript - weder funktional noch objektorientiert lautet:
data = """13
5D KC 3C 3D
10C 7D 4C AH
10S JH 6C 10D
7S 2H JS QH
2C 7C KD 8C
QD QS KH 2S
3H 4S 5H JD
3S 4H 5S 6H 
8H 6S 7H QC
9C 8S 9H 6D
2D 8D AS 5C
JC AH 4D KS
AH 9S 10H 9D"""

# Erste Zeile der Daten auswerten
zeilen, data = data.split("\n",1)

# Daten in Zeilen zerlegen
datenzeilen = data.split("\n")

# Karten aufbauen
ranks = ["2","3","4","5","6","7","8","9","10","J","Q","K","A"]
suits = ["S","H","D","C"]

kartenset = {}  # Das ist ein normales Kartenspiel
kartenkeys = [] # Darueber wird die Ausgabe gesteuert

for suit in suits:
    for rank in ranks:
        karte = rank + suit
        kartenset[karte] = 0
        kartenkeys.append(karte)

# Die Daten auswerten
for zeile in range(int(zeilen)):
    kartenzeile = datenzeilen[zeile].strip(" ").split(" ")
    # print(kartenzeile)
    for karte in kartenzeile:
        kartenset[karte] += 1

# Ausgabe
print("Missing cards: ")
for karte in kartenkeys:
    if kartenset[karte] == 0:
        print(karte,end=" ")

print("\n")

print("Extra cards: ")
for karte in kartenkeys:
    if kartenset[karte] > 1:
        print("{} ({})".format(karte,kartenset[karte]-1),end=" ")   # - 1

print()
Die erwartete Ausgabe stimmt. Es ist zu beachten, dass bei den zusätzlichen Karten die Anzahl der Karten im Deck um 1 verringert wird, weil ja eine Karte im Deck enthalten sein soll.

Keine Kommentare:

Kommentar veröffentlichen