El crupier ha sido descuidado y ha perdido la noción de qué cartas contiene su mazo y qué cartas faltan, ¿puede ayudarlo?
Una baraja completa consta de 52 cartas, a saber:
Cada color en el mazo (corazones, diamantes, picas, tréboles) contiene:
- Los números [2 - 10]
- Un enchufe
- Una reina
- Un rey
- Un as
Tarea
Su programa leerá el contenido de la plataforma de STDIN hasta que se lea una nueva línea. Puede suponer que la entrada tendrá la forma de "nX nX nX nX", etc., donde:
- n - cualquier número entre [2 - 10] o 'J', 'Q', 'K' o 'A'. (Puede asumir mayúsculas solo para caracteres no numéricos)
- X: cualquiera de los siguientes: 'H', 'D', 'S', 'C' (puede asumir solo mayúsculas)
Dónde:
- 'J' = Tomas
- 'Q' = Reina
- 'K' = Rey
- 'A' = As
Y
- 'H' = Corazones
- 'D' = Diamantes
- 'S' = Picas
- 'C' = Clubes
Puede suponer que no habrá duplicados en la entrada.
Su programa debe imprimir las cartas que faltan en el mazo en STDOUT de la misma manera que la entrada ("nX nX nX") o imprimir 'No faltan cartas' si se suministran las 52 cartas. No hay restricciones en el orden de salida de las tarjetas.
Entrada de ejemplo:
9H AH 7C 3S 10S KD JS 9C 2H 8H 8C AC AS AD 7D 4D 2C JD 6S
Salida:
3H 4H 5H 6H 7H 10H JH QH KH 2D 3D 5D 6D 8D 9D 10D QD 2S 4S 5S 7S 8S 9S QS KS 3C 4C 5C 6C 10C JC QC HC
¡Feliz golf!
T
lugar de10
?J
representa10
, sin embargo?2 3 4 5 6 7 8 9 10 J Q K A
.J
representa11
.J
es la décima letra del alfabeto, pero de eso no se trata. :)Respuestas:
De Windows por lotes (CMD),
205204 bytesRecorre los trajes y clasifica la construcción de un mazo completo, luego elimina las tarjetas de entrada. Ahorre 1 byte si
T
está permitido en lugar de10
. Ahorre 11 bytes si los argumentos de la línea de comandos son entradas aceptables. Editar: Guardado 1 byte gracias a @ user202729.fuente
/v
a CMD (+3 byte?) ParaEnableDelayedExpansion
eliminarcall
en el bucle for. / Parece que tienes un espacio extra entre(%c%)
ydo
?Python,
147146145138131129127125120 bytesObtiene todas las tarjetas posibles como un conjunto y resta las tarjetas de entrada.
-1 byte gracias a mbomb007 que señala un espacio extra en mi código.
-1 bytes gracias a mbomb007 para señalar algunas de golf que se pueden hacer con Python 2 (-5 bytes y +4 bytes para
raw_
enraw_input
)-7 bytes por el cambio a utilizando conjuntos y conjunto de la resta en lugar de listas por comprensión
-7 bytes gracias a ValueInk por señalar que no necesito
list
las suites-2 bytes gracias a Datastream por señalar que solo escribir todos los valores es más eficaz en bytes que lo extraño que tenía anteriormente
-2 bytes gracias a ValueInk por señalar que los conjuntos pueden tomar generadores, así que no necesito ponerlo en una lista de comprensión
-2 bytes gracias a Datastream por señalar que puedo jugar golf aún más si cambio a Python 3 nuevamente ... (+2 para parens después para imprimir, -4 para
raw_
)-5 bytes gracias a Lulhum y a mí mismo por señalar que cambiar de nuevo a Python 2 (!!!) puede ayudarme a guardar bytes (usando el rango nuevamente, usando backticks en lugar de
str(
, y +4 debido araw_
)fuente
`d`
lugar destr(d)
si usa Python 2, además de eliminar los parens paraprint
.for y in 'HDSC'
También funciona para obtener todos los personajes allí. (Sin embargo, aún necesitalist('JQKA')
la otra parte).'1 2 3 4 5 6 7 8 9 10 J Q K A'.split()
Podría guardar algunos bytes en lugar de la manipulación[
dfor d in range(2,11)]+list('JQKA')
que está teniendo.1
no es necesario agregarlo. Además, puede eliminar los corchetes externos para su primera comprensión de la lista porque elset
constructor toma muy bien los objetos generadores.05AB1E , 39 bytes
Pruébalo en línea!
Explicación
fuente
CJam ,
4947 bytesPruébalo en línea!
Explicación
fuente
Jalea , 39 bytes
Pruébalo en línea!
¿Cómo?
fuente
C #, 343 bytes
La primera vez que publico uno de mis campos de golf, no es un muy buen contendiente. Estoy seguro de que puedo reducir esto más.
La idea detrás de esto es una matriz dispersa que almacena las ocurrencias de las tarjetas, con índices calculados por los valores ASCII de los diferentes valores y trajes multiplicados entre sí (por ejemplo, un as de espadas (AS) se almacenaría en el área en el índice (65 * 83 = 5395)). De esta manera, cada tipo de tarjeta obtiene un índice único que puede verificarse posteriormente para determinar si existe en la matriz "mapa".
fuente
PowerShell ,
114111110 bytesPruébalo en línea!
Toma la entrada
$n
como una cadena delimitada por espacios o delimitada por una nueva línea. Construye una matriz a partir del rango2..10
concatenado conJQKA
(indexado[0..3]
para convertirlo en unachar
matriz). Esa matriz se alimenta en un bucle|%{}
que establece ayudante y$i
luego recorre los trajes para concatenar los resultados junto con$i$_
. Al final de este ciclo, tenemos una serie de cadenas como("2C", "2S", "2H", ... "AH", "AD")
. Esa matriz se alimenta aWhere-Object
(|?{}
) con el filtro como aquellos elementos$_
que regexifican-notmatch
la entrada$n
. El resultado de ese filtrado se almacena en$a
.Luego, usamos un pseudoternario
( , )[]
para seleccionar si emitimos'No missing cards'
o$a
, en función de si se!!$a
convierte en booleano$false
o$true
. Si$a
está vacío (lo que significa que cada carta en el mazo está en la entrada), entonces!!$a
está0
, entonces"No missing cards"
se selecciona. Viceversa para$a
ser seleccionado. En cualquier caso, eso queda en la tubería, y la salida es implícita.fuente
Bash + coreutils, 89
E / S como una lista delimitada por nueva línea.
Explicación
sort
lee la entrada delimitada por nueva línea de STDIN y la ordenacomm
printf %s\\n {10,{2..9},A,J,K,Q}{C,D,H,S}
es una expansión de llaves para generar el mazo completo de cartas. Elprintf
copias de cada tarjeta en su propia línea. El orden se da de tal manera que la salida es la misma que si se hubiera canalizado asort
comm
compara la plataforma completa con la entrada ordenada y genera la diferencia.-3
suprime la salida de la columna 3 (las comunes)comm
se canaliza agrep .
. Si no hubo salida decomm
(es decir, todas las tarjetas estaban en la entrada), entonces la||
cláusula "o" emite el mensaje requerido. De lo contrario,grep .
coincide con todas las líneas de salidacomm
.Pruébalo en línea .
fuente
Python 2 ,
104,93,130, 114 bytesPruébalo en línea!
fuente
list('23456789JQKA')+['10']
es inteligente. Estaba destrozando mi cerebro para encontrar una mejor manera de dividir la10
lista de caracteres individuales en la otra respuesta de Python, pero eso funciona de maravilla.Ruby, 108 + 1 = 109 bytes
Usa la
-p
bandera.fuente
PHP, 143 bytes
fuente
sed , 157 + 1 (
-r
flag) =170158 bytesPruébalo en línea!
Esto genera todas las tarjetas posibles y luego elimina cada tarjeta en la entrada de las tarjetas generadas.
fuente
C # , 282 bytes
Golfed
Sin golf
Legible sin golf
Código completo
Lanzamientos
282 bytes
- Solución inicial.Notas
Nada que añadir
fuente
JavaScript (ES6),
117114111 bytesEsto aprovecha el hecho de que las entradas indefinidas en la matriz generada por
map()
se convierten en cadenas vacías cuandojoin()
'd.Manifestación
Mostrar fragmento de código
fuente
Retina , 76 bytes
Entrada / salida es una lista de tarjetas separadas por espacios. La salida tiene un espacio principal.
Pruébalo en línea!
Explicación
La mayor parte del código trata de construir la lista completa de cartas que deberían estar en el mazo:
Primero, anteponemos una nueva línea a la entrada, con todos los valores posibles de las tarjetas, luego para cada personaje de esta línea (o el par de caracteres
10
) construimos la lista de todos los posibles palos de esa tarjeta.Esta es una etapa de deduplicación, divide la cadena en fragmentos que consisten en un espacio más algunos no espacios y mantiene solo una aparición de cada fragmento. El modificador
r
hace que esto funcione de derecha a izquierda, manteniendo la última aparición de cada fragmento.Mantenemos solo la primera línea, que ahora contiene las cartas que faltan.
Si el resultado está vacío, lo reemplazamos con "No faltan cartas"
fuente
Python 3, 106 bytes
Combinación de las dos respuestas anteriores de Python mezcladas con algunas travesuras de desempaque de cadenas.
fuente
Julia , 116 bytes
Pruébalo en línea!
Muy similar a la solución de pitón Kyle Gullions. Sin embargo, Setdiff en lugar de - y la lambda para probar la cadena vacía lo empeoran.
fuente
Japt, 39 bytes
Intentalo
fuente
Tcl ,
270228 caracteres(Acortado con ayuda de Wît Wisarhd)
Pruébalo en línea!
Explicación:
Esta implementación crea un diccionario que consiste en una bandera booleana para cada una de las tarjetas representadas por el producto cartesiano de HDSC y 2-a-A. Lee la línea de stdin, que si se proporciona como la especificación solicitada, en realidad es una lista Tcl bien formada. A medida que se lee cada tarjeta, se ingresa un verdadero booleano en el diccionario para esa tarjeta.
Al final, un analizador recorre el diccionario y agrega cualquier tarjeta que no tenía un verdadero en el diccionario a una lista de tarjetas faltantes. Si la longitud de la lista de tarjetas faltantes es cero, escriba "No hay tarjetas faltantes", de lo contrario, envíe la lista de tarjetas faltantes.
fuente
PHP , 138 bytes
Corrió con
-n
y-d error_reporting=0
Reutilizo un código de una submisión antigua que hice que pedía crear una baraja de cartas
Código
Pruébalo en línea!
Explicación
fuente
$argv
pueda funcionar así, gracias @gwaughC # (.NET Core) , 197 bytes
Sin LINQ
Pruébalo en línea!
fuente
Perl 6 , 73 bytes
Pruébalo en línea!
Algunas restas bastante simples entre el mazo de cartas y la entrada.
fuente
Python 3 , 102 bytes
Pruébalo en línea!
fuente