fundo
Boggle é um jogo de tabuleiro em que os jogadores precisam encontrar palavras em inglês em um tabuleiro 4 por 4 de alfabetos aleatórios. As palavras podem ser construídas selecionando células sequencialmente adjacentes no quadro. ("adjacente" significa horizontal, vertical ou diagonalmente adjacente.) Além disso, a mesma célula não pode ser usada mais de uma vez em uma palavra.
A seguir, é apresentado um quadro de exemplo:
I L A W
B N G E
I U A O
A S R L
Nesta placa, BINGO, ORANGEe WEARSsão palavras válidas, mas SURGEe RUSSIAnão são:
SURGE: Não existe um par adjacente no tabuleiroRG.RUSSIA:Snão pode ser usado duas vezes.
Boggle modificado é uma versão modificada do Boggle, com as seguintes regras:
- O tamanho da placa é
n-by-n, ondenpode ser qualquer número inteiro positivo. - Cada célula pode conter qualquer byte entre 0 e 255, inclusive.
- Uma célula pode ser usada mais de uma vez, mas não duas vezes seguidas .
O uso do quadro de exemplo acima, além de BINGO, ORANGEe WEARS, LANGUAGEtorna-se uma sequência válida (já que Gé usada duas vezes, mas não duas vezes seguidas), mas RUSSIAainda não é (devido ao SSpar).
Aqui está outro exemplo usando um fragmento de código. A string from itertools import*\npode ser encontrada no quadro a seguir, mas não from itertoosl import*ou from itertools import *:
f i ' ' s
r t m l
e o o p
\n * t r
Observe que você precisa de dois opara corresponder à oosequência.
Desafio
Escreva uma função ou programa que, considerando uma placa Boggle modificada B(de qualquer tamanho) e uma string s, determine se ela spode ser encontrada B.
Restrições
Seu próprio código também deve caber em uma placa Boggle modificada b. Ou seja, você deve mostrar ao quadrob em sua submissão junto com seu código, para que sua função / programa seja verdadeiro se for fornecido be seu código como entrada.
Pontuação
A pontuação do seu envio é o comprimento lateral da menor placa bonde você pode ajustar seu código. Os laços são quebrados pelas regras usuais de código-golfe , ou seja, o tamanho do seu código em bytes. A finalização com a pontuação mais baixa (para ambos os critérios) vence.
Por exemplo, from itertools import*\ntem a pontuação 4 (usando o quadro acima) e o comprimento do código de 23 bytes.
Entrada e saída
Para entrada, você pode tomar qualquer método conveniente para ambos Bes . Isso inclui uma lista de caracteres e uma lista de códigos, 2D ou achatada ou o que fizer sentido. Além disso, você pode opcionalmente considerar o tamanho da placa como parte da entrada.
Para saída, você pode escolher um dos seguintes:
- Valores verdadeiros e falsos após a convenção de seu idioma ou
- Um valor predefinido para true e false, respectivamente.
Especifique seu método de entrada / saída no seu envio.
+=+=ou algo assim. O problema é a ==função de saída ...