Me gustan los desafíos de los juegos de cartas, así que hice este para el juego de cartas italiano Scopa. Mi familia ha estado jugando este juego desde tiempos inmemoriales. Tiene un sistema de puntuación muy interesante que debería ser divertido para el golf. Publicaré una respuesta en R para comenzar la diversión, y estoy seguro de que la gente mejorará.
El desafío: calcular el número de puntos anotados en una ronda de Scopa, dadas las cartas que el jugador capturó durante la ronda como entrada.
Hay 40 cartas en un mazo de Scopa. Si estás usando un mazo internacional, eliminas los 8, 9 y 10, dejando A, 2,3,4,5,6,7, Q, J, K en cada palo. 1 Hay dos jugadores o asociaciones, y después de cada ronda, todas las cartas terminan siendo capturadas por uno u otro de los dos jugadores. El puntaje se cuenta de la siguiente manera (más información aquí ):
- El jugador con más cartas gana 1 punto.
- El jugador con más diamantes (o monedas si usa el mazo italiano) obtiene 1 punto.
- El jugador con el 7 de diamantes (o monedas), conocido como sette bello o beautiful seven, obtiene 1 punto.
- El jugador con el primiera más alto obtiene 1 punto. El puntaje principal de un jugador es la suma de los puntajes de la carta de mayor valor que el jugador capturó en cada palo (ver la tabla a continuación). Si no tienes al menos una carta en cada palo, pierdes por defecto incluso si tu puntaje excede el puntaje de tu oponente. En el caso extremadamente raro de que ninguno de los jugadores tenga al menos una carta en cada palo, el jugador con el total de primiera más alto gana el punto. 2
Tabla de puntajes primiera
| Rank | Value |
| ----- | ----- |
| 7 | 21 |
| 6 | 18 |
| A | 16 |
| 5 | 15 |
| 4 | 14 |
| 3 | 13 |
| 2 | 12 |
| Q,J,K | 10 |
Por lo tanto, un jugador puede anotar como máximo 4 puntos en una ronda. 3 Si hay un empate, que es posible para tarjetas, diamantes o primiera , nadie gana el punto.
Es importante darse cuenta de que, dado que cada carta debe ser capturada por uno de los dos jugadores, puede inferir qué cartas debe haber tomado el otro jugador, incluso si solo sabe qué cartas tomó un jugador. Tendrá que hacer esto para puntuar correctamente primiera .
Reglas de desafío
Entrada
Su código debe tomar como entrada las cartas capturadas por un solo jugador durante una ronda de Scopa.
La entrada debe estar en formato de cadena, en el que un personaje representa el rango de cada carta y un personaje su palo. Esto elimina la laguna potencial de pasar laspuntuaciones primarias directamente como entrada. La conversión de los rangos de cartas apuntajes primarios debe hacerse en el programa. Sin embargo, puede optar por utilizar una sola cadena separada por espacios o comas, una matriz de cadenas o cualquier otro formato. Por ejemplo, si elige codificar rangos como76A5432QJK
y se adapta comoDCHS
podría usar entradas como['7D', '6H', 'QD', 'JS']
o'7D,6H,QD,JS'
.
Salida
Un número entero de 0 a 4 que representa la puntuación del jugador.
Victorioso
¡La respuesta más corta en bytes gana!
Casos de prueba
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "7C", "6C", "4C", "3C", "2C", "7H", "4H", "2H", "5S", "3S", "QS", "JS", "KS"]
Puntuaciones 4 : 1 punto por> 20 cartas, 1 punto por> 5 diamantes, 1 punto por el 7 de diamantes y 1 punto por anotar 78 en primiera (7,7,7,5 donde el oponente tiene 7,6,5, K para 64)
["3D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "QC", "4H", "7S"]
Puntuaciones 0 : <= 20 cartas, <= 5 diamantes, no 7 de diamantes, y solo puntúa 69 en primiera (7,7,4,3 donde el oponente tiene 7,7,6, K por 70)
[7D", "6D", "AD", "5D", "4D", "3D", "2D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "7H", "6H", "AH", "5H", "4H", "3H", "2H"]
Puntajes 3 : 1 punto por> 20 cartas, 1 punto por> 5 diamantes, 1 punto por 7 de diamantes. La primiera sería 63 (7,7,7) y el oponente solo puede anotar 51 (7, Q, Q, Q) pero como esta mano no tiene espadas, pierde el punto por defecto.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH", "QS"]
Puntajes 3 : <= 20 cartas, 1 punto por> 5 diamantes, 1 punto por 7 de diamantes. El primiera solo obtiene 51 (7, Q, Q, Q) y el oponente puede obtener 63 (7,7,7), pero como la mano del oponente no tiene diamantes, esta mano gana el punto primiera por defecto.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "7C", "7H"]
Puntajes 3 : <= 20 cartas, 1 punto por> 5 diamantes, 1 punto por 7 de diamantes. Aunque esta mano no tiene espadas, aún gana primiera por un puntaje de 63 a 57 (7,7,7 versus 7,6,6) porque la mano del oponente no tiene diamantes.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH"]
Puntajes 2 : <= 20 cartas, 1 punto por> 5 diamantes, 1 punto por 7 de diamantes. Esta mano no tiene espadas, y la mano del oponente no tiene diamantes. El oponente gana primiera por un puntaje de 63 a 41 (7,7,7 versus 7, Q, Q).
[]
(matriz vacía)
Puntuaciones 0
1: Al menos en nuestra familia, Jack supera a Queen en Scopa, pero esto es irrelevante para fines de puntuación.
2: He estado jugando a este juego desde la infancia y nunca he visto que eso suceda, ¡pero es mejor que tu código pueda manejar ese caso!
3: Hay puntos de bonificación por "barridos" anotados durante la ronda que estoy ignorando a los efectos de este desafío.