Antecedentes
Boggle es un juego de mesa donde los jugadores tienen que encontrar palabras en inglés en un tablero de 4 por 4 de alfabetos aleatorios. Las palabras se pueden construir seleccionando celdas secuencialmente adyacentes en el tablero. ("adyacente" significa horizontal, vertical o diagonalmente adyacente). Además, la misma celda no se puede usar más de una vez en una palabra.
El siguiente es un tablero de ejemplo:
I L A W
B N G E
I U A O
A S R L
En este tablero, BINGO
, ORANGE
y WEARS
son palabras válidas, pero SURGE
y RUSSIA
no lo son:
SURGE
: No hay par adyacente en el tablero que tengaRG
.RUSSIA
:S
no se puede usar dos veces.
Boggle modificado es una versión modificada de Boggle, con las siguientes reglas:
- El tamaño de la placa es
n
-by-n
, donden
puede ser cualquier número entero positivo. - Cada celda puede contener cualquier byte entre 0 y 255 inclusive.
- Una celda se puede usar más de una vez, pero no dos veces seguidas .
Usar el panel de ejemplo anterior, además de BINGO
, ORANGE
y WEARS
, se LANGUAGE
convierte en una cadena válida (ya que G
se usa dos veces, pero no dos veces seguidas) pero RUSSIA
aún no lo es (debido al SS
par).
Aquí hay otro ejemplo usando un fragmento de código. La cadena from itertools import*\n
se puede encontrar en el siguiente tablero, pero no from itertoosl import*
o from itertools import *
:
f i ' ' s
r t m l
e o o p
\n * t r
Tenga en cuenta que necesita dos o
para que coincida con la oo
secuencia.
Desafío
Escriba una función o programa que, dado un tablero de Boggle modificado B
(de cualquier tamaño) y una cadena s
, determine si s
se puede encontrar en él B
.
Restricciones
Su código en sí también debe caber en un tablero de Boggle modificado b
. Es decir, debe mostrar el tablero b
en su envío junto con su código, de modo que su función / programa salga verdadero si se proporciona b
y su código como entrada.
Puntuación
El puntaje de su envío es la longitud lateral del tablero más pequeño b
donde puede ajustar su código. Los empates se rompen por las reglas habituales de código de golf , es decir, la longitud de su código en bytes. La presentación con el puntaje más bajo (para ambos criterios) gana.
Por ejemplo, from itertools import*\n
tiene un puntaje de 4 (usando la tabla anterior) y una longitud de código de 23 bytes.
Entrada y salida
Para la entrada, puede tomar cualquier método conveniente para ambos B
y s
. Esto incluye una lista de caracteres y una lista de códigos de barras, 2D o aplanados o lo que tenga sentido. Además, opcionalmente puede tomar el tamaño de la placa como parte de la entrada.
Para la salida, puede elegir uno de los siguientes:
- Valores de verdad y falsedad siguiendo la convención de su idioma, o
- Un valor predefinido para verdadero y falso respectivamente.
Especifique su método de entrada / salida en su envío.
+=+=
o algo así. El problema es la ==
función de salida ...