Ich mag Kartenspielherausforderungen, deshalb habe ich diese für das italienische Kartenspiel Scopa gemacht. Meine Familie spielt dieses Spiel seit jeher. Es hat ein sehr interessantes Punktesystem, das Spaß am Golf machen sollte. Ich werde eine Antwort in R posten, um den Spaß zu starten, von dem ich sicher bin, dass die Leute sich verbessern werden.
Die Herausforderung: Berechnen Sie die Anzahl der Punkte, die in einer Runde von Scopa erzielt wurden, und geben Sie die Karten an, die der Spieler während der Runde als Eingabe erhalten hat.
In einem Scopa-Deck befinden sich 40 Karten. Wenn Sie ein internationales Deck verwenden, entfernen Sie die 8er, 9er und 10er und lassen A, 2,3,4,5,6,7, Q, J, K in jeder Farbe. 1 Es gibt zwei Spieler oder Partnerschaften, und nach jeder Runde werden alle Karten von dem einen oder anderen der beiden Spieler erbeutet. Die Punktzahl wird wie folgt gezählt (weitere Informationen hier ):
- Der Spieler mit den meisten Karten erhält 1 Punkt.
- Der Spieler mit den meisten Diamanten (oder Münzen, wenn er das italienische Deck verwendet) erhält 1 Punkt.
- Der Spieler mit der 7 von Diamanten (oder Münzen), die als " sette bello" oder "beautiful seven" bezeichnet wird, erhält 1 Punkt.
- Der Spieler mit der höchsten Primiera erhält 1 Punkt. Die Primiera- Punktzahl eines Spielers ist die Summe der Punkte der Karte mit dem höchsten Wert, die der Spieler in jeder Farbe erobert hat (siehe Tabelle unten). Wenn Sie nicht mindestens eine Karte in jeder Farbe haben, verlieren Sie standardmäßig, auch wenn Ihre Punktzahl die Punktzahl Ihres Gegners überschreiten würde. In dem äußerst seltenen Fall, dass keiner der Spieler mindestens eine Karte in jeder Farbe hat, erhält der Spieler mit der höheren Primiera- Summe den Punkt. 2
Tabelle der Primiera-Ergebnisse
| Rank | Value |
| ----- | ----- |
| 7 | 21 |
| 6 | 18 |
| A | 16 |
| 5 | 15 |
| 4 | 14 |
| 3 | 13 |
| 2 | 12 |
| Q,J,K | 10 |
Ein Spieler kann also höchstens 4 Punkte in einer Runde erzielen. 3 Wenn es ein Unentschieden gibt, das für Karten, Diamanten oder Primiera möglich ist, erhält niemand den Punkt.
Da jede Karte von einem der beiden Spieler erbeutet werden muss, müssen Sie wissen, welche Karten der andere Spieler genommen hat, auch wenn Sie nur wissen, welche Karten ein Spieler genommen hat. Sie müssen dies tun, um primiera richtig zu bewerten .
Herausforderungsregeln
Eingang
Ihr Code sollte die von einem einzelnen Spieler während einer Runde von Scopa erbeuteten Karten als Eingabe nehmen.
Die Eingabe muss im Zeichenfolgenformat erfolgen, wobei ein Zeichen den Rang jeder Karte und ein Zeichen ihre Farbe darstellt. Dies beseitigt die potenzielle Lücke, die Primiera- Scores direkt als Eingabe weiterzugeben . Die Umrechnung der Kartenränge in Primiera Scores muss im Programm erfolgen. Sie können jedoch eine einzelne Zeichenfolge, die durch Leerzeichen oder Kommas getrennt ist, ein Array von Zeichenfolgen oder ein anderes Format verwenden. Zum Beispielwenn Sieentscheiden zu kodieren Reihen wie76A5432QJK
und Anzügen wieDCHS
Sie Eingaben wie nutzen könnten['7D', '6H', 'QD', 'JS']
oder'7D,6H,QD,JS'
.
Ausgabe
Eine Ganzzahl von 0 bis 4, die die Punktzahl des Spielers darstellt.
Gewinnen
Kürzeste Antwort in Bytes gewinnt!
Testfälle
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "7C", "6C", "4C", "3C", "2C", "7H", "4H", "2H", "5S", "3S", "QS", "JS", "KS"]
Erzielt 4 : 1 Punkt für> 20 Karten, 1 Punkt für> 5 Diamanten, 1 Punkt für die 7 Diamanten und 1 Punkt für 78 in Primiera (7,7,7,5, wenn der Gegner 7,6,5 hat, K für 64)
["3D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "QC", "4H", "7S"]
Punktet 0 : <= 20 Karten, <= 5 Diamanten, keine 7 Diamanten, und punktet nur in Primiera mit 69 (7,7,4,3, wenn der Gegner 7,7,6, K für 70 hat)
[7D", "6D", "AD", "5D", "4D", "3D", "2D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "7H", "6H", "AH", "5H", "4H", "3H", "2H"]
Punkte 3 : 1 Punkt für> 20 Karten, 1 Punkt für> 5 Diamanten, 1 Punkt für 7 Diamanten. Die Primiera wäre 63 (7,7,7) und der Gegner kann nur 51 (7, Q, Q, Q) erzielen, aber da diese Hand keine Pik hat, verliert sie standardmäßig den Punkt.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH", "QS"]
Punktzahl 3 : <= 20 Karten, 1 Punkt für> 5 Diamanten, 1 Punkt für 7 Diamanten. Die Primiera erzielt nur 51 (7, Q, Q, Q) und der Gegner kann 63 (7,7,7) erzielen, aber da die Hand des Gegners keine Diamanten hat, gewinnt diese Hand standardmäßig den Primiera- Punkt.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "7C", "7H"]
Punktzahl 3 : <= 20 Karten, 1 Punkt für> 5 Diamanten, 1 Punkt für 7 Diamanten. Auch wenn diese Hand keine Pik hat, gewinnt sie mit einer Punktzahl von 63 zu 57 (7,7,7 versus 7,6,6), weil die Hand des Gegners keine Diamanten hat.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH"]
Punktzahl 2 : <= 20 Karten, 1 Punkt für> 5 Diamanten, 1 Punkt für 7 Diamanten. Diese Hand hat keine Pik und die Hand des Gegners hat keine Diamanten. Der Gegner gewinnt primiera mit einer Punktzahl von 63 zu 41 (7,7,7 gegen 7, Q, Q).
[]
(leeres Array)
Punktzahl 0
1: Zumindest in unserer Familie ist Jack in Scopa Königin, aber dies ist für die Wertung irrelevant.
2: Ich spiele dieses Spiel seit meiner Kindheit und habe das noch nie gesehen, aber Ihr Code sollte diesen Fall besser bewältigen können!
3: Es gibt Bonuspunkte für "Sweeps", die während der Runde erzielt wurden und die ich für diese Herausforderung ignoriere.