The New York Times tiene un juego en línea diario llamado Letter Boxed (el enlace está detrás de un muro de pago; el juego también se describe aquí ), presentado en un cuadrado de la siguiente manera:
Te dan 4 grupos de 3 letras (cada grupo corresponde a un lado de la imagen); ninguna carta aparece dos veces. El objetivo del juego es encontrar palabras hechas de esas 12 letras (y solo esas letras) de modo que:
- Cada palabra tiene al menos 3 letras de largo;
- Las cartas consecutivas no pueden ser del mismo lado;
- La última letra de una palabra se convierte en la primera letra de la siguiente palabra;
- Todas las letras se usan al menos una vez (las letras se pueden reutilizar).
En este desafío, te dan las letras y una lista de palabras. El objetivo es verificar si la lista de palabras es una solución válida de Letter Boxed.
Entrada
La entrada consta de (1) 4 grupos de 3 letras y (2) una lista de palabras. Puede estar en cualquier formato adecuado.
Salida
Un valor verdadero si la lista de palabras es una solución válida para el desafío Letter Boxed para esas letras 4 × 3, y un valor falso de lo contrario.
Casos de prueba
Grupos de letras = {{I,C,O}, {M,R,E}, {G,N,S}, {A,P,L}}
.
Valores de verdad
- PEREGRINACIÓN, CERRAR
- CULTIVOS, VELA, LEAN, NOPE, ENIGMA
Valores de Falsey
- PEREGRINACIÓN, ECONOMÍAS (no pueden tener CO ya que están del mismo lado)
- CULTIVOS, VELA, LEAN, NOPE (G y M no se han utilizado)
- PEREGRINACIÓN, RECUBRIMIENTO (U no es una de las 12 letras)
- CERRAR, PEREGRINACIÓN (la última letra de la primera palabra no es la primera letra de la segunda palabra)
- SCAMS, SO, ORGANIZE, ELOPE (todas las palabras deben tener al menos 3 letras de largo).
Tenga en cuenta que en este desafío, no nos importa si las palabras son válidas (parte de un diccionario).
Tanteo:
¡Este código de golf , el puntaje más bajo en bytes gana!
fuente
no letter appears twice
[]
y0
son Falsey-. ¿Podemos generar resultados o nuestro rendimiento debe ser consistente?Respuestas:
Javascript (ES6),
130126 bytesToma entrada como0 0 o 1 .
(letters)(words)
. DevuelvePruébalo en línea!
Paso 1
En primer lugar, iterar sobreL a construir una cadena de tubos separados por s que consiste en todos los pares de letras no válidos. Al hacerlo, también nos aseguramos de que cada letra aparezca al menos una vez en alguna palabra.
Paso 2
fuente
Jalea ,
3029 bytesPruébalo en línea!
Un enlace diádico que toma la lista de palabras como argumento izquierdo y la lista aplanada de letras en el cuadro como argumento correcto. Vuelve
1
por verdadero y0
por falso.Explicación
fuente
05AB1E ,
37353332312928 bytes-2 bytes inspirándose en el
ê
enfoque que @Emigna usó en su respuesta 05AB1E .-3 bytes gracias a @Grimy .
Toma una lista de la lista de caracteres para las palabras como primera entrada, y la lista aplanada de doce letras como segunda entrada.
Pruébalo en línea o verifique todos los casos de prueba .
Explicación:
fuente
¹€g3@
->DO2@
después del primer control ( TIO )05AB1E , 42 bytes
Pruébalo en línea!
fuente
P
después de los mapas y usarlo)˜P
al final. 41 bytes Buen enfoque conê
sin embargo! Guarde 2 bytes en mi respuesta 05AB1E.Python 2 , 171 bytes
Pruébalo en línea!
fuente
Gelatina , 34 bytes
Un enlace diádico que acepta las palabras a la izquierda y los grupos de letras a la derecha que produce
1
si es válido y0
si no.Pruébalo en línea! O vea el conjunto de pruebas .
fuente
Haskell , 231 bytes
Pruébalo en línea!
No es el mejor puntaje. Algunos gurús de Haskell probablemente podrán obtener esto por debajo de 100 bytes.
Uso
Explicación
fuente
Haskell , 231 bytes
Una variación diferente de Haskell, exactamente del mismo tamaño que la de @Paul Mutser :)
Pruébalo en línea!
Sin golf
fuente
Ruby , 126 bytes
Pruébalo en línea!
fuente
grep
.puts f[l,['PILGRIMAGE','ENCLOSE','EG']]
devuelve entrue
lugar defalse
.Java (JDK) , 188 bytes
Pruébalo en línea!
Explicaciones
Créditos
fuente
Carbón , 63 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:
Concatene las siguientes expresiones y resultados
0
si alguno de ellos incluye lo0
contrario1
.Para cada palabra en la salida de salida si su longitud es al menos 3.
Para cada letra en la salida de salida si aparece en el rompecabezas.
Para cada letra en la salida del rompecabezas si aparece en la solución.
Para cada letra de la solución, verifique que la letra anterior no esté en el mismo grupo, a menos que sea la primera letra de una palabra, en cuyo caso verifique que sea igual a la última letra de la palabra anterior, a menos que sea la primera letra de la solución, en cuyo caso simplemente ignórela.
fuente
Python 2 ,
168156bytesPruébalo en línea!
Vuelve
1
por la verdad,0
por falsey.fuente