Relacionados: Nomeie a mão de pôquer
Um straight flush é uma mão de pôquer que contém cinco cartas de ordem sequencial, todas do mesmo naipe. Como parte de um straight flush, um ás pode ser classificado acima de um rei ou abaixo de dois. Um ás pode ter uma classificação alta (por exemplo, A ♥ K ♥ Q ♥ J ♥ 10 ♥ é um straight flush com ás), ou baixa (por exemplo, 5 ♦ 4 ♦ 3 ♦ 2 ♦ A ♦ é um flush com cinco altos), mas não pode classificar alto e baixo na mesma mão (por exemplo, Q ♣ K ♣ A ♣ 2 ♣ 3 ♣ é um flush ás-alto, não um flush direto).
Desafio
As N
cartas dadas (em qualquer formato razoável) geram um valor verdadeiro se um straight flush estiver contido na mão de poker.
Entrada
N
número de cartões. (Em qualquer formato razoável)
Existem quatro naipes; corações, espadas, diamantes e paus (H, S, D, C)
.
Cada naipe tem uma carta para os números de 2 a 10, além de 4 cartas 'Á', Ás, Valete, Rainha e Rei (A, J, Q, K)
Nota: Você pode tomar 10 como T
Saída
Truthy/Falsy
valor
Caso de teste
["AS", "2S", "3S", "4S", "5S"] => true
["3D", "9C", "4S", "KH", "AD", "AC"] => false
["5D", "6D", "7D", "8H", "9D", "10D", "JD"] => false
["JC", "7C", "5D", "8C", "AC", "10C", "9C", "5S"] =>true
[] => false
["AS", "2S", "3S"] => false
["JC", "QC", "KC", "AC", "2C"] => false
[ "2H", "3H", "4H", "5H", "6H", "7H"] => true
Aplicam-se as regras padrão de código de golfe .
Critérios para ganhar: Código mais curto em cada idioma
fonte
10
comoT
?Respostas:
Python 2 , 95 bytes
Experimente online!
Existem 40 straight flushes possíveis, e isso simplesmente verifica todos eles. Chas Brown economizou 2 bytes; Jo King economizou mais 4.
fonte
A
nas duas extremidades, então acredito que mudar36
para40
deve corrigi-lo.R ,
128 1269491 bytesExperimente online!
A lógica original foi consideravelmente reduzida por @ J.Doe.
Cria uma matriz de 26 por 26, principalmente sem sentido, mas todas as cartas (com os Ases repetidos na parte inferior) contidas nas linhas 10 a 23 das colunas 3,4,8 e 24. A matriz é criada concatenando todas as combinações de letras maiúsculas alfabeto com as letras J a X substituídas por A, 2-9, T, J, Q, K, A, S via
chartr
. Temos C, D, H de graça!O
%in%
achata a matriz da coluna-sábio num vector. Veja se a codificação de duração da execução é maior que 4 para qualquer execução deTRUE
correspondências.fonte
rle
ANDouter
! Isso economiza dois bytesouter
chamada simétrica que produz muitos cartões inválidos e usar a coerção vetorialin
para evitarapply
. Ambos precisam estar no local para que isso funcione!JavaScript (ES6), 116 bytes
Experimente online!
Quão?
fonte
Braquilog , 31 bytes
Experimente online!
fonte
Retina 0.8.2 , 66 bytes
Experimente online! Explicação:
Converta os cartões de imagem em seus valores.
A
pode ser 1 ou 14.Converta o valor em unário e coloque-o como sufixo, para que os cartões sejam classificados corretamente.
Combine 5 cartas que aumentam 1 em cada vez e garanta que o último aumento seja exatamente 1.
fonte
JavaScript (ES6), 106 bytes
Aceita uma matriz de representações de sequência de cartões, substituindo
10
porT
. Experimente online!Explicação
Repete cada cartão e define uma bandeira em uma matriz de booleanos usando um índice calculado a partir da combinação exclusiva de sua classificação e naipe. Essa matriz é então especificada para permitir a correspondência de um padrão de 5 valores consecutivos de verdade.
Por exemplo, uma mão com um straight flush pode produzir o seguinte como uma substring da representação completa da cadeia de caracteres da matriz booleana:
,,,,1,1,1,1,1,,,,
Como o primeiro valor da classificação (ou seja, A) é compensado desde o início da string, sempre haverá valores vazios precedendo todos
1
os da matriz, garantindo que a representação da string comece com um,
fonte
Java 10,
189167165164160157156 bytesToma a entrada como uma única String delimitada por espaço (ou seja
"AS 2S 3S 4S 5S"
).-22 bytes graças a @ OlivierGrégoire .
-1 byte graças a @AlexRacer .
Experimente online.
Versão em golf do código que usei para o Projeto Euler # 54 , que fiz principalmente com regexes (por diversão e para aprender mais sobre regexes). Sem regexes, provavelmente teria sido melhor para o desempenho e mais fácil (provavelmente também se aplica ao golfe nesta resposta; daremos uma olhada mais tarde).
Explicação:
Explicação adicional do regex:
"AKQJT98765432A".substring(i,i+5)
leva cinco cartões adjacentes com base emi
.replaceAll(".","(?=.*$0\\\\1)")
substitui cada uma dessas cartas por"(?=.*c\\1)"
(ondec
está o caractere da carta).replaceFirst(".1","([HSDC])")
substituirá o primeiro\\1
por([HSDC])
.Ou seja, o regex total para verificar se há Straight Flush para cards no intervalo de valores
[9,5]
se tornará:^(?=.*9([HSDC]))(?=.*8\\1)(?=.*7\\1)(?=.*6\\1)(?=.*5\\1).*$
(OBSERVAÇÃO:
String#matches
adiciona implicitamente o final / o início^...$
para verificar toda a String.) Esse regex:fonte
".*"+
prefixo desnecessário .f
break
parai=-2
e retornando aoreturn-1>i;
uso da sua abordagem (e mais 2 alterando(.)
para.
e$1
para$0
). :)Limpo ,
145135 bytesExperimente online!
Simplificado:
fonte
Japonês , 37 bytes
Recebe a entrada como uma matriz 2D.
Tente
Explicação
fonte
Geléia , 18 bytes
Experimente online!
[..., ...]
Formato de saída: lista vazia como falsa, lista não vazia como verdade.
fonte
PHP , 264 bytes
Ele ecoa
1
se for um straight flush e0
ounull
não.Se você nomear o arquivo
1X
, poderá salvar,11 bytes
pois não precisará alterar$argv[0]
. Não tenho certeza no momento por que o nome do arquivo pode quebrá-lo.Por algum motivo, as seqüências
:;<=>
são classificadas antes das seqüências0123456789
de caracteresasort
em TIO, embora:;<=>
tenham valores ASCII 58-62 e0123456789
valores ASCII 48-57. Portanto, se você pegar o código no link TIO ou abaixo e usar o PHPTester com o seguinte conjunto de testes, ele funcionará.Código TIO
Experimente online!
fonte
Kotlin , 226 bytes
Utilizado T para 10, para que todos os cartões tenham 2 caracteres.
Experimente online!
fonte
Pascal (FPC) ,
223216210209 bytesExperimente online!
Usa
T
para 10. A entrada contém 1 cartão por linha.Agora eu jogava tanto que não sei mais como funciona ...
Explicação:
fonte