Submeter | Todas submissőes | Melhores | Voltar |
OBIPOKER - Mini-Poker |
Mini-Poker é o nome de um jogo de cartas que é uma simplificação de Poker, um dos mais famosos jogos de cartas do mundo. Mini-Poker é jogado com um baralho normal de 52 cartas, com quatro naipes (copas, paus, espadas e ouro), cada naipe compreendendo treze cartas (Ás, 2, 3, 4, 5, 6, 7, 8, 9, 10, Valete, Dama, Rei).
No início do jogo, cada jogador recebe cinco cartas. O conjunto de cinco cartas vale um certo número de pontos, de acordo com as regras descritas abaixo. Diferentemente do jogo de Poker normal, em Mini-Poker o naipe das cartas é desconsiderado. Assim, para simplificar a descrição do jogo, vamos utilizar os números de 1 a 13 para identificar as cartas do baralho, na ordem dada acima. Uma outra diferença é que pode ocorrer empate entre mais de um vencedor; nesse caso os vencedores dividem o prêmio.
As regras para pontuação em Mini-Poker são as seguintes:
1. Se as cinco cartas estão em seqüência a partir da carta x (ou seja, os valores das cartas são x, x+1, x+2, x+3 e x+4), a pontuação é x+200 pontos. Por exemplo, se as cartas recebidas são 10, 9, 8, 11 e 12, a pontuação é 208 pontos.
2. Se há quatro cartas iguais x (uma quadra, ou seja, os valores das cartas são x, x, x, x e y), a pontuação é x+180 pontos. Por exemplo, se as cartas recebidas são 1, 1, 1, 10 e 1, a pontuação é 181 pontos.
3. Se há três cartas iguais x e duas outras cartas iguais y (uma trinca e um par, ou seja, os valores das cartas são x, x, x, y e y), a pontuação é x + 160 pontos. Por exemplo, se as cartas recebidas são 10, 4, 4, 10 e 4, a pontuação é 164 pontos.
4. Se há três cartas iguais x e duas outras cartas diferentes y e z (uma trinca, ou seja, os valores das cartas são x, x, x, y e z), a pontuação é x + 140 pontos. Por exemplo, se as cartas recebidas são 2, 3, 2, 2 e 13, a pontuação é 142 pontos.
5. Se há duas cartas iguais x, duas outras cartas iguais y (x != y) e uma outra carta distinta z (dois pares, ou seja, os valores das cartas são x, x, y, y e z), a pontuação é 3 × x + 2 × y + 20
pontos, em que x > y. Por exemplo, se as cartas recebidas são 12, 7, 12, 8 e 7, a pontuação é 70 pontos.
6. Se há apenas duas cartas iguais x e as outras são todas distintas (um par, ou seja, os valores das cartas são x, x, y, z e t), a pontuação é x pontos. Por exemplo, se as cartas recebidas são 12, 13, 5, 8 e 13, a pontuação é 13 pontos.
7. Se todas as cartas são distintas, não há pontuação.
Tafefa
Escreva um programa que, fornecidas as cartas dadas a um jogador, calcule pontuação do jogador naquela jogada.
Entrada
A entrada é composta por vários casos de teste, cada um correspondendo a uma jogada. A primeira linha da entrada contém um inteiro N que indica o número de casos de teste (1 <= N <= 100). Cada uma das N linhas seguintes contém cinco números inteiros C1,C2,C3,C4 e C5, representando as cinco cartas recebidas por um jogador (1 <= C1,C2,C3,C4,C5 <= 13).
Saída
Para cada caso de teste da entrada, seu programa deve produzir três linhas na saída. A primeira linha deve conter um identificador do caso de teste, no formato “Teste n”, onde n é numerado seqüencialmente a partir de 1. A segunda linha deve conter a pontuação do jogador considerando as cinco cartas recebidas. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Saída, abaixo, deve ser seguida rigorosamente.
Exemplo
Entrada: 2 12 3 10 3 12 1 2 3 5 4 Saída: Teste 1 62 Teste 2 201
Restrições
1 <= N <= 100
1 <= C1,C2,C3,C4,C5 <= 13
Adicionado por: | Wanderley Guimarăes |
Data: | 2007-03-09 |
Tempo limite: | 1s |
Tamanho do fonte: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Linguagem permitida: | Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO NODEJS PERL6 PY_NBC SCALA TCL VB.NET |
Origem: | OBI 2005 Programação Nível 2 |
hide comments
2013-05-22 15:58:12 Gabriel Vilar
Dica: Alinhar as cartas do menor para o maior para facilitar, precisei de apenas 15 ifs para todas as combinaçőes possiveis. |
|
2013-02-14 05:57:46 tcomp
esse problema é traiçoeiro. Há um caso de teste em que a jogada termina com um espaço no final mais um \n, ao invés de apenas um \n |
|
2012-06-20 16:14:57 Alan
escrevi em java, ta tudo certo, ja conferi milhoes de vezes, milhoes de teste, mas continua dando resposta errada, se for isso, algo esta faltando no enunciado.. |
|
2012-05-15 19:41:54 Matheus Henrique
Last edit: 2012-05-16 14:20:55 |
|
2010-09-27 17:03:25 Matheus Pacheco [UFMG]
Acho que é super necessário ordenar o vetor de cartas do jogador |
|
2010-09-13 01:45:04 Emerson [UNILINS]
Pontuaçăo igual a 0 quando houver menos de duas cartas năo consecutivas. |
|
2010-07-08 21:52:37 Rafael Araújo
eu consegui passar com 6 if's =) |
|
2009-12-11 19:01:42 Nicolas Eduardo
Esse problema se torna dificil pela quantidade de if's que săo usados,eu usei 86 if's isso pq fiz sem ordenar,ordenando acho que eu usava uns 20 só. |