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, ORANGEy WEARSson palabras válidas, pero SURGEy RUSSIAno lo son:
SURGE: No hay par adyacente en el tablero que tengaRG.RUSSIA:Sno 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, dondenpuede 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, ORANGEy WEARS, se LANGUAGEconvierte en una cadena válida (ya que Gse usa dos veces, pero no dos veces seguidas) pero RUSSIAaún no lo es (debido al SSpar).
Aquí hay otro ejemplo usando un fragmento de código. La cadena from itertools import*\nse 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 opara que coincida con la oosecuencia.
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 sse 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 ben su envío junto con su código, de modo que su función / programa salga verdadero si se proporciona by su código como entrada.
Puntuación
El puntaje de su envío es la longitud lateral del tablero más pequeño bdonde 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*\ntiene 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 By 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 ...