Relacionado: nombra la mano de póker
Una escalera de color es una mano de póker que contiene cinco cartas de rango secuencial, todas del mismo palo. Como parte de una escalera de color, un as puede clasificarse por encima de un rey o por debajo de un dos. Un as puede ser alto (p. Ej., A ♥ K ♥ Q ♥ J ♥ 10 ♥ es una escalera de color as-alto) o bajo (p. Ej., 5 ♦ 4 ♦ 3 ♦ 2 ♦ A ♦ es una escalera de cinco colores), pero no puede clasificar tanto alto como bajo en la misma mano (por ejemplo, Q ♣ K ♣ A ♣ 2 ♣ 3 ♣ es una escalera de color as-high, no una escalera de color).
Reto
Las N
cartas dadas (en cualquier formato razonable) generan un valor verdadero si hay una escalera de color en la mano de póker.
Entrada
N
Numero de tarjetas. (En cualquier formato razonable)
Hay cuatro trajes; corazones, picas, diamantes y tréboles (H, S, D, C)
.
Cada palo tiene una carta para los números del 2 al 10, más 4 cartas de 'imagen', as, jota, reina y rey (A, J, Q, K)
Nota: Puedes tomar 10 como T
Salida
Truthy/Falsy
valor
Caso de prueba
["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
Aplican reglas estándar de código de golf .
Criterios ganadores: código más corto en cada idioma
fuente
10
comoT
?Respuestas:
Python 2 , 95 bytes
Pruébalo en línea!
Hay 40 posibles descargas directas, y esto simplemente las verifica a todas. Chas Brown ahorró 2 bytes; Jo King salvó 4 más.
fuente
A
en ambos extremos por lo que creo cambiando36
a40
debe solucionarlo.R ,
1281269491 bytesPruébalo en línea!
La lógica original acortada considerablemente por @ J.Doe.
Hace una matriz de 26 por 26 con mayormente sin sentido, pero todas las cartas (con los Ases repetidos en la parte inferior) contenidas en las filas 10 a 23 de las columnas 3,4,8 y 24. La matriz se crea concatenando todas las combinaciones de mayúsculas alfabeto con letras J a X reemplazadas por A, 2-9, T, J, Q, K, A, S vía
chartr
. ¡Tenemos C, D, H gratis!El
%in%
aplana la matriz en forma de columna en un vector. Luego, vea si la codificación de longitud de ejecución es mayor que 4 para cualquier ejecución deTRUE
coincidencias.fuente
rle
ANDouter
! Esto ahorra dos bytesouter
llamada simétrica que produce muchas tarjetas inválidas, y usar la coerción vectorial dein
para evitarapply
. ¡Ambos tienen que estar en su lugar para que esto funcione!JavaScript (ES6), 116 bytes
Pruébalo en línea!
¿Cómo?
fuente
Brachylog , 31 bytes
Pruébalo en línea!
fuente
Retina 0.8.2 , 66 bytes
Pruébalo en línea! Explicación:
Convierta las tarjetas de imágenes en sus valores.
A
puede ser 1 o 14.Convierta el valor en unario y sufíjelo para que las tarjetas se ordenen correctamente.
Haga coincidir 5 cartas que aumenten en 1 cada vez y asegúrese de que el último aumento fue exactamente 1.
fuente
JavaScript (ES6), 106 bytes
Acepta una serie de representaciones en cadena de tarjetas, reemplazando
10
porT
. Pruébalo en línea!Explicación
Itera sobre cada carta y establece una bandera en una matriz de booleanos usando un índice calculado a partir de la combinación única de su rango y palo. Esta matriz se encadena para permitir la coincidencia de un patrón de 5 valores de verdad consecutivos.
Por ejemplo, una mano con una escalera de color puede producir lo siguiente como una subcadena de la representación de cadena completa de la matriz booleana:
,,,,1,1,1,1,1,,,,
Debido a que el primer valor de rango (es decir, A) está desplazado desde el inicio de la cadena, siempre habrá valores vacíos que preceden a todos
1
en la matriz, asegurando que la representación de la cadena comenzará con un,
fuente
Java 10,
189167165164160157156 bytesToma la entrada como una sola cadena delimitada por espacios (es decir
"AS 2S 3S 4S 5S"
).-22 bytes gracias a @ OlivierGrégoire .
-1 byte gracias a @AlexRacer .
Pruébalo en línea.
Versión de golf del código que he usado para el Proyecto Euler # 54 , que hice principalmente con expresiones regulares (por diversión y para aprender más sobre expresiones regulares). Sin expresiones regulares, probablemente hubiera sido mejor para el rendimiento y más fácil (probablemente también se aplica para jugar golf esta respuesta; lo veremos más adelante).
Explicación:
Explicación adicional de expresiones regulares:
"AKQJT98765432A".substring(i,i+5)
toma cinco cartas adyacentes basadas eni
.replaceAll(".","(?=.*$0\\\\1)")
reemplaza cada una de esas cartas con"(?=.*c\\1)"
(dondec
está el personaje de la carta).replaceFirst(".1","([HSDC])")
luego reemplazará el primero\\1
con([HSDC])
.Es decir, la expresión regular total para verificar la Escalera de color para las cartas en el rango de valor
[9,5]
se convertirá en:^(?=.*9([HSDC]))(?=.*8\\1)(?=.*7\\1)(?=.*6\\1)(?=.*5\\1).*$
(NOTA:
String#matches
agrega implícitamente el final / inicio^...$
para verificar toda la Cadena). Esta expresión regular:fuente
".*"+
prefijo innecesario .f
break
ai=-2
y la vuelta areturn-1>i;
la utilización de su enfoque (y 2 más cambiante(.)
a.
y$1
a$0
). :)Limpio ,
145135bytesPruébalo en línea!
Simplificado:
fuente
Japt , 37 bytes
Toma la entrada como una matriz 2D.
Intentalo
Explicación
fuente
Jalea , 18 bytes
Pruébalo en línea!
[..., ...]
Formato de salida: lista vacía como falsa, lista no vacía como verdadera.
fuente
PHP , 264 bytes
Se hace eco de
1
si se trata de una escalera de color y0
, onull
en caso contrario.Si nombra el archivo
1X
, puede guardarlo11 bytes
ya que no necesita cambiarlo$argv[0]
. No estoy seguro en este momento por qué el nombre de archivo puede romperlo.Por alguna razón, las cadenas
:;<=>
solucionarse antes de que las cadenas0123456789
deasort
en TIO a pesar de:;<=>
tener valores ASCII 58-62 y0123456789
tienen valores ASCII 48-57. Entonces, si toma el código del enlace TIO o inferior y usa PHPTester con el siguiente conjunto de pruebas, funciona.Código TIO
Pruébalo en línea!
fuente
Kotlin , 226 bytes
Usé T para 10, por lo que todas las cartas tienen 2 caracteres de longitud.
Pruébalo en línea!
fuente
Pascal (FPC) ,
223216210209 bytesPruébalo en línea!
Usos
T
para 10. La entrada contiene 1 tarjeta por línea.Ahora lo jugué tanto que ya no sé cómo funciona ...
Explicación:
fuente