Hintergrund
Boggle ist ein Brettspiel, bei dem die Spieler auf einem 4-mal-4-Brett aus zufälligen Alphabeten nach englischen Wörtern suchen müssen. Wörter können konstruiert werden, indem nacheinander benachbarte Zellen auf der Tafel ausgewählt werden. ("benachbart" bedeutet horizontal, vertikal oder diagonal benachbart.) Dieselbe Zelle kann auch nur einmal in einem Wort verwendet werden.
Das Folgende ist eine Beispieltafel:
I L A W
B N G E
I U A O
A S R L
Auf diesem Board BINGO
, ORANGE
und WEARS
gelten Worte, aber SURGE
und RUSSIA
nicht sind:
SURGE
: Es gibt kein benachbartes Paar auf dem BrettRG
.RUSSIA
:S
kann nicht zweimal verwendet werden.
Modified Boggle ist eine modifizierte Version von Boggle mit den folgenden Regeln:
- Die
n
Boardgröße ist -by-n
, wobein
jede positive ganze Zahl sein kann. - Jede Zelle kann ein beliebiges Byte zwischen 0 und 255 enthalten.
- Eine Zelle kann mehrmals verwendet werden, jedoch nicht zweimal hintereinander .
Unter Verwendung des Beispiels Platine oben, zusätzlich zu BINGO
, ORANGE
und WEARS
, LANGUAGE
wird eine gültige Zeichenfolge (da G
zweimal verwendet wird, aber nicht zweimal hintereinander) , aber RUSSIA
ist immer noch nicht (durch SS
pair).
Hier ist ein weiteres Beispiel mit einem Codefragment. Die Zeichenfolge from itertools import*\n
befindet sich auf der folgenden Tafel, aber nicht from itertoosl import*
oder from itertools import *
:
f i ' ' s
r t m l
e o o p
\n * t r
Beachten Sie, dass Sie zwei benötigen o
, um der oo
Sequenz zu entsprechen.
Herausforderung
Schreiben Sie eine Funktion oder ein Programm, das anhand einer modifizierten Boggle-Platine B
(beliebiger Größe) und einer Zeichenfolge s
feststellt, ob s
es sich auf befindet B
.
Beschränkungen
Ihr Code selbst sollte auch auf eine modifizierte Boggle-Platine passen b
. Das heißt, Sie müssen das Board b
in Ihrem Beitrag zusammen mit Ihrem Code anzeigen, damit Ihre Funktion / Ihr Programm true ausgibt, wenn es angegeben ist, b
und Ihren Code als Eingabe.
Wertung
Das Ergebnis Ihrer Einreichung ist die Seitenlänge des kleinsten Brettes, auf b
das Sie Ihren Code einfügen können. Krawatten werden durch die üblichen Code-Golf- Regeln gebrochen , dh die Länge Ihres Codes in Bytes. Die Einsendung mit der niedrigsten Punktzahl (für beide Kriterien) gewinnt.
Hat zum Beispiel from itertools import*\n
die Punktzahl 4 (unter Verwendung der obigen Karte) und eine Codelänge von 23 Bytes.
Ein- und Ausgang
Für die Eingabe können Sie eine beliebige Methode für B
und verwenden s
. Dies beinhaltet eine Liste von Zeichen und eine Liste von Zeichencodes, 2D oder abgeflacht oder was auch immer sinnvoll ist. Optional können Sie die Kartengröße als Teil der Eingabe verwenden.
Für die Ausgabe können Sie eine der folgenden Optionen auswählen:
- Wahrheits - und Falschheitswerte gemäß der Konvention Ihrer Sprache oder
- Ein vordefinierter Wert für true bzw. false.
Bitte geben Sie Ihre Eingabe- / Ausgabemethode in Ihrem Beitrag an.
+=+=
etwas. Das Problem ist die ==
Ausgabefunktion ...