J'aime les défis des jeux de cartes, j'ai donc fait celui-ci pour le jeu de cartes italien Scopa. Ma famille joue à ce jeu depuis des temps immémoriaux. Il a un système de notation très intéressant qui devrait être amusant pour le golf. Je vais poster une réponse en R pour commencer le plaisir, que je suis sûr que les gens vont améliorer.
Le défi: déterminer le nombre de points marqués lors d'une manche de Scopa, compte tenu des cartes saisies par le joueur lors de la manche.
Il y a 40 cartes dans un paquet Scopa. Si vous utilisez un deck international, vous supprimez les 8, 9 et 10, laissant A, 2,3,4,5,6,7, Q, J, K dans chaque combinaison. 1 Il y a deux joueurs ou partenariats, et après chaque tour, toutes les cartes sont capturées par l'un ou l'autre des deux joueurs. Le score est compté comme suit (plus d'informations ici ):
- Le joueur avec le plus de cartes marque 1 point.
- Le joueur avec le plus de diamants (ou de pièces s'il utilise le deck italien) marque 1 point.
- Le joueur avec le 7 de diamants (ou pièces), connu sous le nom de sette bello ou beautiful seven, marque 1 point.
- Le joueur avec la primiera la plus élevée marque 1 point. Le score primiera d' un joueur est la somme des scores de la carte de la plus haute valeur que le joueur a capturée dans chaque couleur (voir tableau ci-dessous). Si vous n'avez pas au moins une carte dans chaque couleur, vous perdez par défaut même si votre score dépasse le score de votre adversaire. Dans le cas extrêmement rare où aucun joueur n'a au moins une carte dans chaque couleur , le joueur avec le total de primiera le plus élevé marque le point. 2
Tableau des scores primiera
| Rank | Value |
| ----- | ----- |
| 7 | 21 |
| 6 | 18 |
| A | 16 |
| 5 | 15 |
| 4 | 14 |
| 3 | 13 |
| 2 | 12 |
| Q,J,K | 10 |
Ainsi, un joueur peut marquer au plus 4 points dans un tour. 3 S'il y a une cravate, ce qui est possible pour les cartes, les diamants ou les primiera , personne ne marque le point.
Il est important de réaliser que puisque chaque carte doit être capturée par l'un des deux joueurs, vous pouvez déduire quelles cartes l'autre joueur doit avoir prises même si vous ne savez que quelles cartes un joueur a prises. Vous devrez le faire pour marquer correctement primiera .
Règles du challenge
Contribution
Votre code doit prendre en entrée les cartes capturées par un seul joueur lors d'une manche de Scopa.
L'entrée doit être au format chaîne, dans laquelle un caractère représente le rang de chaque carte et un caractère sa couleur. Cela supprime la faille potentielle de passer lesscores primiera directement en entrée. La conversion des classements de cartes en scores primiera doit être effectuée dans le programme. Cependant, vous pouvez choisir d'utiliser une seule chaîne séparée par des espaces ou des virgules, un tableau de chaînes ou tout autre format. Par exemple, si vous choisissez de coder les rangs comme76A5432QJK
et convient,DCHS
vous pouvez utiliser des entrées telles que['7D', '6H', 'QD', 'JS']
ou'7D,6H,QD,JS'
.
Production
Un entier de 0 à 4 représentant le score du joueur.
Gagnant
La réponse la plus courte en octets gagne!
Cas de test
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "7C", "6C", "4C", "3C", "2C", "7H", "4H", "2H", "5S", "3S", "QS", "JS", "KS"]
Scores 4 : 1 point pour> 20 cartes, 1 point pour> 5 diamants, 1 point pour les 7 diamants et 1 point pour avoir marqué 78 en primiera (7,7,7,5 où l'adversaire a 7,6,5, K pour 64)
["3D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "QC", "4H", "7S"]
Scores 0 : <= 20 cartes, <= 5 diamants, pas 7 de diamants, et ne marque que 69 en primiera (7,7,4,3 où l'adversaire a 7,7,6, K pour 70)
[7D", "6D", "AD", "5D", "4D", "3D", "2D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "7H", "6H", "AH", "5H", "4H", "3H", "2H"]
Scores 3 : 1 point pour> 20 cartes, 1 point pour> 5 diamants, 1 point pour 7 diamants. La primiera serait de 63 (7,7,7) et l'adversaire ne peut marquer que 51 (7, Q, Q, Q) mais comme cette main n'a pas de pique, elle perd le point par défaut.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH", "QS"]
Scores 3 : <= 20 cartes, 1 point pour> 5 diamants, 1 point pour 7 diamants. La primiera ne marque que 51 (7, Q, Q, Q) et l'adversaire peut marquer 63 (7,7,7) mais comme la main de l'adversaire n'a pas de diamants, cette main gagne le point primiera par défaut.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "7C", "7H"]
Scores 3 : <= 20 cartes, 1 point pour> 5 diamants, 1 point pour 7 diamants. Même si cette main n'a pas de pique, elle gagne toujours primiera par un score de 63 à 57 (7,7,7 contre 7,6,6) car la main de l'adversaire n'a pas de diamant.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH"]
Scores 2 : <= 20 cartes, 1 point pour> 5 diamants, 1 point pour 7 diamants. Cette main n'a pas de pique et la main de l'adversaire n'a pas de diamant. L'adversaire remporte la primiera par un score de 63 à 41 (7,7,7 contre 7, Q, Q).
[]
(tableau vide)
Scores 0
1: Au moins dans notre famille, Jack devance Queen dans Scopa, mais cela n'est pas pertinent pour les buts.
2: Je joue à ce jeu depuis mon enfance et je n'ai jamais vu cela se produire, mais votre code devrait mieux gérer cette affaire!
3: Il y a des points bonus pour les "balayages" marqués pendant le tour que j'ignore dans le cadre de ce défi.