En Keep Talking and Nobody Explodes , los jugadores tienen la tarea de desactivar bombas en base a la información de sus "expertos" (otras personas con un manual). Cada bomba está compuesta de módulos, uno de los cuales puede ser una contraseña, donde el experto recibe esta lista de posibles contraseñas, las cinco letras largas:
about after again below could
every first found great house
large learn never other place
plant point right small sound
spell still study their there
these thing think three water
where which world would write
Y el jugador recibe una lista de 6 letras posibles para cada lugar en la contraseña. Dadas las posibles combinaciones de letras, envíe la contraseña correcta. La entrada puede estar en cualquier formato razonable (matriz 2D, cadena separada por nueva línea, etc.) Puede descontar el código que usa para comprimir / generar la lista / cadena / matriz / cualquier contraseña. (Gracias @DenkerAffe)
NOTA: Las contraseñas no distinguen entre mayúsculas y minúsculas. Puede suponer que la entrada solo resolverá una contraseña.
Ejemplos / Casos de prueba
La entrada aquí se representará como una matriz de cadenas.
["FGARTW","LKSIRE","UHRKPA","TGYSTG","LUOTEU"] => first
["ULOIPE","GEYARF","SHRGWE","JEHSDG","EJHDSP"] => large
["SHWYEU","YEUTLS","IHEWRA","HWULER","EUELJD"] => still
<
en mi solución Bash, por ejemplo.Respuestas:
Pyth, 13 bytes
Banco de pruebas.
fuente
Bash, 22 bytes
Corre así:
fuente
fold -5<<<ABOUTAFTERAGAINBELOWCOULDEVERYFIRSTFOUNDGREATHOUSELARGELEARNNEVEROTHERPLACEPLANTPOINTRIGHTSMALLSOUNDSPELLSTILLSTUDYTHEIRTHERETHESETHINGTHINKTHREEWATERWHEREWHICHWORLDWOULDWRITE|grep `printf [%s] $@`
JavaScript (ES6), 62 bytes
53 bytes en Firefox 48 o anterior:
Hubiera sido de 49 bytes si no fuera por ese requisito de insensibilidad de caso:
Mostrar fragmento de código
fuente
Brachylog , 25 bytes
Los bytes no contados son el conjunto de palabras, incluidos los corchetes.
Explicación
fuente
Ruby,
484239 bytesAhora que está hecho, es muy similar a la solución Pyth,
pero sinhasta el punto de que ahora es básicamente un puerto directo.%s
formatearSi solo genera el resultado
puts
, no necesita[0]
el final, ya queputs
se ocupará de eso por usted.Con casos de prueba:
fuente
JavaScript (ES6), 71 bytes
Uso:
fuente
Python,
646057 bytesCódigo para crear la lista de palabras
w
como una cadena, las palabras están separadas por espacios (los bytes se descuentan de la longitud del código de la solución):Solución actual (57 bytes): guardado 3 bytes gracias a @RootTwo
Esta función toma un
tuple
(nolist
¡ !) De exactamente 5 cadenas que representan las letras posibles para cada carácter de contraseña como entrada.Vea este código ejecutándose en ideone.com
Segunda versión (60 bytes):
Esta función toma un
tuple
(nolist
¡ !) De exactamente 5 cadenas que representan las letras posibles para cada carácter de contraseña como entrada.Vea este código ejecutándose en ideone.com
Primera versión (64 bytes):
Esta función toma cualquier iterable (por ejemplo,
list
otuple
) de exactamente 5 cadenas que representan las letras posibles para cada carácter de contraseña como entrada.Vea este código ejecutándose en ideone.com
fuente
"(?i)\\b"+"[%s]"*5%a
w=...
línea de código: " La solución real (57 bytes, guardada 3 bytes gracias a @RootTwo): "Hoon , 125 bytes
Sin golf:
Hoon no tiene expresiones regulares, solo un sistema combinador de analizador sintáctico. Esto hace que sea bastante complicado hacer que todo funcione:
(mask "abc")
aproximadamente se traduce en expresiones regulares.[abc]
, y es el núcleo del analizador que estamos construyendo.;~(plug a b)
es un enlace monádico de dos analizadores bajo++plug
, que tiene que analizar el primero y luego el segundo, o de lo contrario falla.++knee
se usa para construir un analizador recursivo; le damos un tipo (*tape
) del resultado y una devolución de llamada para llamar para generar el analizador real. En este caso, la devolución de llamada es "volver a llamar al cierre completo, pero con el final de la lista". La?~
prueba de runas es que la lista está vacía y da(easy ~)
(no analice nada y devuelva ~) o agrega otramask
y vuelve a aparecer.Una vez construido el analizador, podemos comenzar a usarlo.
++skip
elimina todos los elementos de la lista para los que la función devuelve yes para.++rust
intenta analizar el elemento con nuestra regla, devolviendo unounit
que sea uno[~ u=result]
o~
(nuestra versión de Haskell's Maybe). Si es~
(Ninguno, y la regla no pudo analizar o no analizó todo el contenido), la función devuelve verdadero y el elemento se elimina.Lo que queda es una lista, que contiene solo la palabra donde cada letra es una de las opciones en la lista dada. Supongo que la lista de contraseñas ya está en el contexto bajo el nombre
pass
.fuente
Python 3, 81 bytes
Una función anónima que toma la entrada de una lista de cadenas
x
y devuelve la contraseña.La lista de posibles contraseñas
l
se define como:Esta es una fuerza bruta simple; Me interesaba ver cuán corto podría obtener esto sin expresiones regulares.
Cómo funciona
Pruébalo en Ideone
fuente