Eu gosto de desafios de jogos de cartas, então fiz este para o jogo de cartas italiano Scopa. Minha família joga esse jogo desde tempos imemoriais. Tem um sistema de pontuação muito interessante que deve ser divertido para o golfe. Vou postar uma resposta em R para começar a diversão, que tenho certeza de que as pessoas vão melhorar.
O desafio: descobrir o número de pontos marcados em uma rodada de Scopa, considerando as cartas que o jogador capturou durante a rodada como entrada.
Existem 40 cartas no baralho Scopa. Se você estiver usando um baralho internacional, remova os 8s, 9s e 10s, deixando A, 2,3,4,5,6,7, Q, J, K em cada naipe. 1 Existem dois jogadores ou parcerias e, após cada rodada, todas as cartas acabam sendo capturadas por um ou outro dos dois jogadores. A pontuação é contada da seguinte forma (mais informações aqui ):
- O jogador com mais cartas ganha 1 ponto.
- O jogador com mais diamantes (ou moedas, se estiver usando o baralho italiano) recebe 1 ponto.
- O jogador com o 7 de diamantes (ou moedas), conhecido como sette bello ou belo sete, marca 1 ponto.
- O jogador com a primiera mais alta marca 1 ponto. A pontuação inicial de um jogador é a soma das pontuações da carta de maior valor que o jogador capturou em cada naipe (veja a tabela abaixo). Se você não tiver pelo menos uma carta em cada naipe, você perde por padrão, mesmo que sua pontuação exceda a pontuação do seu oponente. No caso extremamente raro de nenhum dos dois jogadores ter pelo menos uma carta em cada naipe, o jogador com a pontuação mais alta total pontua o ponto. 2
Tabela de pontuações primiera
| Rank | Value |
| ----- | ----- |
| 7 | 21 |
| 6 | 18 |
| A | 16 |
| 5 | 15 |
| 4 | 14 |
| 3 | 13 |
| 2 | 12 |
| Q,J,K | 10 |
Assim, um jogador pode marcar no máximo 4 pontos em uma rodada. 3 Se houver um empate, possível para cartas, diamantes ou primiera , ninguém marca o ponto.
É importante perceber que, como cada carta deve ser capturada por um dos dois jogadores, é possível inferir quais cartas o outro jogador deve ter pegado, mesmo se você souber apenas quais cartas um jogador pegou. Você precisará fazer isso para marcar corretamente a primiera .
Regras do desafio
Entrada
Seu código deve ter como entrada as cartas capturadas por um único jogador durante uma rodada de Scopa.
A entrada deve estar no formato de sequência, em que um caractere representa a classificação de cada cartão e um caractere seu naipe. Isso remove a brecha potencial de passar aspontuaçõesdo primiera diretamente como entrada. A conversão de classificações de cartões em pontuações primárias deve ser feita no programa. No entanto, você pode optar por usar uma única cadeia de caracteres separada por espaços ou vírgulas, uma matriz de cadeias de caracteres ou qualquer outro formato. Por exemplo, se você optar por codificar classificações como76A5432QJK
e naipes,DCHS
poderá usar entradas como['7D', '6H', 'QD', 'JS']
ou'7D,6H,QD,JS'
.
Resultado
Um número inteiro de 0 a 4 representando a pontuação do jogador.
Ganhando
Menor resposta em bytes ganha!
Casos de teste
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "7C", "6C", "4C", "3C", "2C", "7H", "4H", "2H", "5S", "3S", "QS", "JS", "KS"]
Pontuação 4 : 1 ponto para> 20 cartas, 1 ponto para> 5 diamantes, 1 ponto para o 7 de diamantes e 1 ponto para marcar 78 na primiera (7,7,7,5 onde o oponente tem 7,6,5, K para 64)
["3D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "QC", "4H", "7S"]
Pontuações 0 : <= 20 cartas, <= 5 diamantes, nº 7 de diamantes e apenas 69 pontos em primiera (7,7,4,3 onde o oponente tem 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"]
Pontuações 3 : 1 ponto para> 20 cartas, 1 ponto para> 5 diamantes, 1 ponto para 7 de diamantes. A primiera seria 63 (7,7,7) e o oponente só pode marcar 51 (7, Q, Q, Q), mas como essa mão não tem espadas, perde o ponto por padrão.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH", "QS"]
Pontuações 3 : <= 20 cartões, 1 ponto para> 5 diamantes, 1 ponto para 7 de diamantes. A primiera marca apenas 51 (7, Q, Q, Q) e o oponente pode marcar 63 (7,7,7), mas como a mão do oponente não tem diamantes, esta mão ganha o ponto de primiera por padrão.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "7C", "7H"]
Pontuações 3 : <= 20 cartões, 1 ponto para> 5 diamantes, 1 ponto para 7 de diamantes. Mesmo que essa mão não tenha espadas, ela ainda vence primiera com uma pontuação de 63 a 57 (7,7,7 contra 7,6,6) porque a mão do oponente não tem diamantes.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH"]
Pontuações 2 : <= 20 cartões, 1 ponto para> 5 diamantes, 1 ponto para 7 de diamantes. Esta mão não tem espadas e a mão do oponente não tem diamantes. O oponente vence a primiera com uma pontuação de 63 a 41 (7,7,7 contra 7, Q, Q).
[]
(matriz vazia)
Pontuações 0
1: Pelo menos em nossa família, Jack supera o Queen em Scopa, mas isso é irrelevante para fins de pontuação.
2: Eu jogo esse jogo desde a infância e nunca vi isso acontecer, mas é melhor o seu código lidar com esse caso!
3: Existem pontos de bônus por "varreduras" marcadas durante a rodada que eu estou ignorando para o objetivo deste desafio.