Em uma tarde chuvosa, você está à mesa da cozinha jogando cartas com a sua avó. O jogo é a versão dela de Camicia.
No começo, parece só mais uma partida amistosa: cartas batendo na mesa, risadas ao redor e, de vez em quando, um sorriso vitorioso da Nonna. Mas, conforme o jogo se arrasta, algo estranho acontece. As mesmas cartas continuam voltando. Você joga carta após carta, mas o fim parece nunca chegar.
Você começa a se perguntar. Será que esse jogo algum dia vai acabar? Ou será que poderíamos continuar jogando para sempre?
Mais tarde, a curiosidade fala mais alto e você pesquisa na internet. Para a sua surpresa, descobre que o que aconteceu não foi só azar. Você e a sua avó podem ter esbarrado em uma das sequências mais longas possíveis! De repente, você não consegue mais parar. O que começou como um jogo casual virou uma missão: quanto tempo um jogo assim pode realmente durar? Você consegue encontrar uma sequência ainda mais longa do que a que jogou à mesa da cozinha? Talvez até longa o suficiente para bater um novo recorde mundial?
E assim, com nada além de um baralho e um pouco de engenhosidade algorítmica, você decide investigar...
Neste exercício, você vai simular um jogo muito parecido com o clássico jogo de cartas Camicia. Seu programa vai receber a configuração inicial dos baralhos de dois jogadores e deve simular o jogo até que ele termine (ou detectar que ele nunca vai terminar).
Um pequeno exemplo de uma partida que termina.
| Rodada | Jogador A | Jogador B | Pilha | Penalidade Devida |
|---|---|---|---|---|
| 1 | 2 A 7 8 Q 10 | 3 4 5 6 K 9 J | - | |
| 1 | A 7 8 Q 10 | 3 4 5 6 K 9 J | 2 | - |
| 1 | A 7 8 Q 10 | 4 5 6 K 9 J | 2 3 | - |
| 1 | 7 8 Q 10 | 4 5 6 K 9 J | 2 3 A | Jogador B: 4 |
| 1 | 7 8 Q 10 | 5 6 K 9 J | 2 3 A 4 | Jogador B: 3 |
| 1 | 7 8 Q 10 | 6 K 9 J | 2 3 A 4 5 | Jogador B: 2 |
| 1 | 7 8 Q 10 | K 9 J | 2 3 A 4 5 6 | Jogador B: 1 |
| 1 | 7 8 Q 10 | 9 J | 2 3 A 4 5 6 K | Jogador A: 3 |
| 1 | 8 Q 10 | 9 J | 2 3 A 4 5 6 K 7 | Jogador A: 2 |
| 1 | Q 10 | 9 J | 2 3 A 4 5 6 K 7 8 | Jogador A: 1 |
| 1 | 10 | 9 J | 2 3 A 4 5 6 K 7 8 Q | Jogador B: 2 |
| 1 | 10 | J | 2 3 A 4 5 6 K 7 8 Q 9 | Jogador B: 1 |
| 1 | 10 | - | 2 3 A 4 5 6 K 7 8 Q 9 J | Jogador A: 1 |
| 1 | - | - | 2 3 A 4 5 6 K 7 8 Q 9 J 10 | - |
| 2 | - | 2 3 A 4 5 6 K 7 8 Q 9 J 10 | - | - |
status: "finished", cards: 13, tricks: 1
Este é um pequeno exemplo de uma partida que entra em loop.
| Rodada | Jogador A | Jogador B | Pilha | Penalidade Devida |
|---|---|---|---|---|
| 1 | J 2 3 | 4 J 5 | - | - |
| 1 | 2 3 | 4 J 5 | J | Jogador B: 1 |
| 1 | 2 3 | J 5 | J 4 | - |
| 2 | 2 3 J 4 | J 5 | - | - |
| 2 | 3 J 4 | J 5 | 2 | - |
| 2 | 3 J 4 | 5 | 2 J | Jogador A: 1 |
| 2 | J 4 | 5 | 2 J 3 | - |
| 3 | J 4 | 5 2 J 3 | - | - |
| 3 | J 4 | 2 J 3 | 5 | - |
| 3 | 4 | 2 J 3 | 5 J | Jogador B: 1 |
| 3 | 4 | J 3 | 5 J 2 | - |
| 4 | 4 5 J 2 | J 3 | - | - |
O início da rodada 4 coincide com o início da rodada 2. Lembre-se, o valor das cartas numéricas não importa.
status: "loop", cards: 8, tricks: 3
"finished" ou "loop"
Para quem quer encarar um desafio mais empolgante, a busca por outros recordes para o jogo mais longo com final ainda está aberta. Existem 653.534.134.886.878.245.000 (aproximadamente 654 quintilhões) de possibilidades, e ainda não calculamos todas!
Crie sua conta no Exercism para aprender e dominar C# com 62 conceitos178 exercícios e mentoria humana de verdade, tudo de graça.