fundo
Brag é um jogo de cartas semelhante ao conceito, mas mais simples que o poker. Uma mão em gabar consiste em três cartas e é classificada da seguinte para a maior para a menor:
Três do mesmo tipo - todas as três cartas do mesmo valor. Nomeado como "três reis" etc.
Running flush, também conhecido como straight flush. Todas as três cartas do mesmo naipe e de classificações consecutivas. A mão é nomeada pelas três cartas em ordem crescente, seguida pelas palavras "no salto" para distinguir de uma corrida / sequência simples, por exemplo, "dez-valete-dama no salto". Observe que um ás é alto ou baixo, mas não ambos - "rei-ás-dois" não é uma corrida.
Corra também em linha reta. Como acima, mas sem a necessidade de combinar naipes. Nomeado simplesmente como, por exemplo, "dez-valete-rainha".
Flush - todas as três cartas do mesmo naipe, com o nome do ranking mais alto, por exemplo, "Ace flush".
Par - duas cartas com o mesmo valor e um terço de outra versão. Nomeado como "par de três", etc.
Qualquer outra combinação, nomeada após a classificação mais alta, por exemplo, "ás alto".
Desafio
Dadas três cartas de baralho, escreva o nome da mão que ostenta.
As cartas serão inseridas como três cadeias de 2 caracteres ou concatenadas como uma única cadeia de 6 caracteres (conforme sua implementação preferida), onde o primeiro de cada par é a classificação (2 ... 9, T, J, Q, K, A) e o segundo significa o naipe (H, C, D, S).
Aplicam-se regras padrão de golfe - escreva um programa ou função que aceite esta entrada e dê o nome da mão como detalhado acima.
Você pode assumir que a entrada será válida (classificações e naipes no intervalo acima, sem cartão repetido) e, em qualquer caso, de sua preferência, mas não será em nenhuma ordem específica.
A saída deve ser em todas as maiúsculas, todas as minúsculas ou uma capitalização sensata, por exemplo, maiúsculas ou minúsculas. Classificações numéricas devem ser explicitadas, por exemplo, "dezenas" e não 10s.
Entradas e saídas de amostra:
2H3C2D => "pair of twos"
TD8C9C => "eight-nine-ten"
4SKS9S => "king flush"
4D4H4S => "three fours"
5H3H2C => "five high"
2D3DAD => "ace-two-three on the bounce"
6D6C6H => "three sixes"
Esta é minha primeira tentativa de desafio neste site. Sugira melhorias, mas seja gentil :)
fonte
"6D6C6S"
como um caso de teste, já que seis é um plural ímparRespostas:
Ruby,
384, 320Aceita uma matriz de seqüências de caracteres de dois caracteres.
Converte os valores de pip em valores hexadecimais e identifica ponteiros com base em quantos valores distintos de pip existem.
Anotado:
fonte
Python 2 ,
788, 715, 559, 556, 554, 546, 568,522 bytes* agora passa dos 'seis' * graças a Ben Frankel por economizar 46 bytes!
Experimente online!
Obrigado por um primeiro desafio legal!
fonte
D.get(a, b)
significa acessar o valor no ditado D na chave a, com o valor padrão b se a chave não for encontrada. É o mesmo que escreverD[a] if a in D else b
, que é o mesmo que escreverD[a] if a in D.keys() else b
.PHP,
413405398409408406398 bytesInfelizmente, o PHP não suporta referência de matriz aninhada dentro de strings;
isso teria economizado outros
65 bytes.Execute
echo <hand> | php -nR '<code>
ou teste on-line .demolir
Requer PHP> = 5.6 (para
e[...]
)fonte
Python 2 - 583 bytes
Sou novo demais para poder comentar as postagens, por isso, acabei de postar minha versão do python solusion.
Corrigido problema com 'es' para par e três de seis. Graças a Não que Charles
Um pouco mais legível com alguns comentários
fonte
j=0; if [z]*3==v:r="three %ss"%i(z)
paraif [z]*3==v:r="three %ss"%d[z][0]
Mas ele salva apenas 1 byte