Un casino usa la siguiente baraja de cartas. ( *
Es uno de los juegos de la tarjeta D
, S
, C
o H
.)
_________ _________ _________ _________ _________
| | | | | | | | | |
| | | | | * | | * * | | * * |
| | | * | | | | | | |
| * | | | | * | | | | * |
| | | * | | | | | | |
| | | | | * | | * * | | * * |
|_________| |_________| |_________| |_________| |_________|
_________ _________ _________ _________ _________
| | | | | | | | | |
| * * | | * * | | * * | | * * | | * * |
| | | | | * * | | * * | | * * |
| * * | | * * * | | | | * | | * * |
| | | | | * * | | * * | | * * |
| * * | | * * | | * * | | * * | | * * |
|_________| |_________| |_________| |_________| |_________|
_________ _________ _________
| | | | | |
| * * | | * * | | * * * |
| * * | | * * * | | * * |
| * * * | | * * | | * * * |
| * * | | * * * | | * * |
| * * | | * * | | * * * |
|_________| |_________| |_________|
Después de cada noche, las cubiertas viejas se descartan y se cortan por la mitad para evitar su reutilización. Como resultado, el casino tiene una gran sala llena de mitades de cartas cortadas.
Lamentablemente, la economía es mala y el casino tiene problemas financieros. Lo más razonable para ahorrar dinero parece ser el reciclaje, por lo que los propietarios de los casinos deciden volver a unir las tarjetas viejas. Entonces contratan a un equipo para construir una máquina que hará esto.
Usted es parte del equipo y su trabajo es ayudar a identificar la tarjeta.
Escriba un programa o función que tomará una imagen de arte ASCII de la mitad de una tarjeta en forma de cadena, y devolverá una cadena de la tarjeta que es.
La entrada es una cadena de 11x5, más caracteres de salto de línea (CR, LF o CRLF, solo necesita admitir uno). Puede asumir espacios en blanco al final de cada línea de entrada, si es necesario. La entrada no contendrá ningún carácter no válido (que no sea _|-HSCD
y espacio y salto de línea).
La mitad de una tarjeta se verá así:
_________
| |
| H H |
| H H H |
---H---H---
que debe identificarse como la Reina de Corazones:
H12
El casino tiene un presupuesto limitado, así que este es el código de golf: gana el programa más corto.
fuente
H 12
?Respuestas:
CJam,
16151312 bytesPruébalo aquí.
Explicación
La idea básica es manipular la cadena de modo que podamos hacer que la codificación de longitud de ejecución incorporada de CJam funcione para nosotros.
Veamos un ejemplo (el de la pregunta). La cadena de entrada es
Repetimos eso dos veces:
Y elimine la última línea:
Luego clasificamos esta cadena. Ahora tendrá un montón de nuevas líneas al comienzo, y luego esto (acortado por unos espacios para evitar una barra de desplazamiento horizontal):
Si bien el carácter del palo variará, siempre será una letra mayúscula, que se encuentra en la cuarta ejecución de la cadena ordenada (que representa la nueva línea). Cuando ejecutamos la codificación de longitud, obtenemos
Entonces, todo lo que tenemos que hacer es elegir el cuarto elemento e invertirlo.
Aquí hay un desglose del código real:
fuente
Pyth (versión reciente), 16 bytes
Pruébelo en línea: Pyth Compiler / Executor
Explicación:
Pyth 4.0, 13 bytes
Pyth tenía una compilación en codificación de longitud de ejecución. Pero solo por poco tiempo. Si alguien quiere probar esto: Clone el repositorio Pyth y revise el commit 6a6dccd.
Este programa funciona casi de la misma manera que la solución CJam de Martin.
fuente
CJam, 22 bytes
Mirando más opciones de golf aquí. Así es como funciona:
Pruébalo en línea aquí
fuente
Python 2,
806866 bytesPruébalo aquí
Duplique la entrada, encuentre todas las letras en todas menos la última línea (los primeros caracteres en la última línea no pueden ser letras), luego imprima la primera letra y cuántas.
Entrada :
' _________\n| |\n| H H |\n| H H H |\n---H---H---'
Salida :
H12
Versión anterior que usa regex (68):
Gracias a Sp3000 por su ayuda en el golf.
fuente
i=input()*2;s="CDSH";r=[i[:-9].count(x)for x in s];n=sum(r);print s[r.index(n)]+`n`
APL, 39 bytes
Estoy seguro de que esto podría hacerse mucho más corto, pero es un comienzo.
Esto crea una función monádica con nombre que acepta una cadena de entrada y devuelve una cadena que contiene el palo y el valor de la tarjeta. ¡Puedes probarlo en línea !
Explicación:
¡Las sugerencias son bienvenidas como siempre!
fuente
(⊃,≢)'HDCS'∩⍨¯11↓,⍨
?5⌷{⍺,≢⍵}⌸¯11↓,⍨⍞
J 26 bytes
Uso:
Leyendo el código de izquierda a derecha:
4{~.
).+/
) el número total de caracteres que aparece en la entrada ([
) y la entrada sin los últimos 9 caracteres (_9}.[
).]
) a la representación de cadena de la suma resultante (":
).fuente
Perl, 75 bytes
Versión sin golf
fuente
Julia, 58 bytes
Esto crea una función sin nombre que toma una cadena como entrada y devuelve el palo y el valor de la tarjeta. Para llamarlo, dale un nombre, por ejemplo
f=s->(...)
.Ungolfed + explicación:
¡Las sugerencias son bienvenidas como siempre!
fuente
Bash + coreutils, 73
fuente