Contexte
Boggle est un jeu de plateau où les joueurs doivent trouver des mots anglais sur un tableau 4 par 4 d'alphabets aléatoires. Les mots peuvent être construits en sélectionnant des cellules adjacentes séquentielles sur la carte. ("adjacent" signifie horizontalement, verticalement ou diagonalement adjacent.) De plus, la même cellule ne peut pas être utilisée plus d'une fois dans un mot.
Voici un exemple de tableau:
I L A W
B N G E
I U A O
A S R L
Sur ce plateau, BINGO
, ORANGE
et WEARS
sont des mots valides, mais SURGE
et RUSSIA
ne sont pas:
SURGE
: Il n'y a pas de paire adjacente sur la carteRG
.RUSSIA
:S
ne peut pas être utilisé deux fois.
Boggle modifié est une version modifiée de Boggle, avec les règles suivantes:
- La taille de la carte est
n
-par-n
, oùn
peut être n'importe quel entier positif. - Chaque cellule peut contenir n'importe quel octet compris entre 0 et 255 inclus.
- Une cellule peut être utilisée plusieurs fois, mais pas deux fois de suite .
L'utilisation de l'exemple de carte ci-dessus, en plus de BINGO
, ORANGE
et WEARS
, LANGUAGE
devient une chaîne valide (car G
est utilisée deux fois, mais pas deux fois de suite) mais ne l' RUSSIA
est toujours pas (en raison de la SS
paire).
Voici un autre exemple utilisant un fragment de code. La chaîne from itertools import*\n
peut être trouvée sur le tableau suivant, mais pas from itertoosl import*
ou from itertools import *
:
f i ' ' s
r t m l
e o o p
\n * t r
Notez que vous avez besoin de deux o
pour correspondre à la oo
séquence.
Défi
Écrivez une fonction ou un programme qui, étant donné une carte Boggle modifiée B
(de n'importe quelle taille) et une chaîne s
, détermine si elle s
peut être trouvée B
.
Restrictions
Votre code lui-même devrait également tenir sur une carte Boggle modifiée b
. Autrement dit, vous devez montrer le tableau b
dans votre soumission avec votre code, afin que votre fonction / programme affiche vrai s'il est donné b
et votre code en entrée.
Notation
Le score de votre soumission est la longueur du côté du plus petit tableau b
où vous pouvez adapter votre code. Les égalités sont rompues par les règles habituelles du code-golf , c'est-à-dire la longueur de votre code en octets. La soumission avec le score le plus bas (pour les deux critères) gagne.
Par exemple, from itertools import*\n
a le score de 4 (en utilisant le tableau ci-dessus) et une longueur de code de 23 octets.
Entrée et sortie
Pour la saisie, vous pouvez utiliser n'importe quelle méthode pratique pour B
et s
. Cela comprend une liste de caractères et une liste de codes de caractères, 2D ou aplatis ou tout ce qui a du sens. En outre, vous pouvez éventuellement prendre la taille de la carte comme partie de l'entrée.
Pour la sortie, vous pouvez choisir l'une des options suivantes:
- Valeurs vraies et fausses suivant la convention de votre langue, ou
- Une valeur prédéfinie pour vrai et faux respectivement.
Veuillez spécifier votre méthode d'entrée / sortie dans votre soumission.
+=+=
ou quelque chose comme ça. Le problème est la ==
fonction de sortie ...