sfondo
Boggle è un gioco da tavolo in cui i giocatori devono trovare parole inglesi su un tabellone 4 per 4 di alfabeti casuali. Le parole possono essere costruite selezionando celle sequenzialmente adiacenti sulla lavagna. ("adiacente" significa orizzontale, verticale o diagonale adiacente.) Inoltre, la stessa cella non può essere utilizzata più di una volta in una parola.
Di seguito è riportato un esempio di scheda:
I L A W
B N G E
I U A O
A S R L
In questa scheda, BINGO, ORANGEe WEARSsono parole valide, ma SURGEe RUSSIAnon sono:
SURGE: Non ci sono coppie adiacenti sulla schedaRG.RUSSIA:Snon può essere usato due volte.
Boggle modificato è una versione modificata di Boggle, con le seguenti regole:
- La dimensione della scheda è
n-by-n, dovenpuò essere qualsiasi numero intero positivo. - Ogni cella può contenere un byte qualsiasi compreso tra 0 e 255 inclusi.
- Una cella può essere utilizzata più di una volta, ma non due volte di seguito .
L'uso della scheda di esempio sopra, oltre a BINGO, ORANGEe WEARS, LANGUAGEdiventa una stringa valida (poiché Gviene utilizzata due volte, ma non due volte di seguito) ma non lo RUSSIAè ancora (a causa della SScoppia).
Ecco un altro esempio usando un frammento di codice. La stringa from itertools import*\npuò essere trovata sulla scheda seguente, ma non from itertoosl import*o from itertools import *:
f i ' ' s
r t m l
e o o p
\n * t r
Nota che hai bisogno di due oper abbinare la oosequenza.
Sfida
Scrivi una funzione o un programma che, data una scheda Boggle modificata B(di qualsiasi dimensione) e una stringa s, determina se è spossibile trovarla B.
restrizioni
Il codice stesso dovrebbe anche adattarsi a una scheda Boggle modificata b. Cioè, devi mostrare la scheda bnella tua richiesta insieme al tuo codice, in modo che la tua funzione / programma sia vera se viene data be il tuo codice come input.
punteggio
Il punteggio della tua presentazione è la lunghezza laterale della tavola più piccola in bcui puoi adattare il tuo codice. I legami sono interrotti dalle solite regole del code-golf , ovvero dalla lunghezza del codice in byte. Vince l'invio con il punteggio più basso (per entrambi i criteri).
Ad esempio, from itertools import*\nha il punteggio di 4 (usando la scheda sopra) e la lunghezza del codice di 23 byte.
Ingresso e uscita
Per l'input, puoi prendere qualsiasi metodo conveniente per entrambi Be s. Ciò include un elenco di caratteri e un elenco di caratteri, 2D o appiattiti o qualunque cosa abbia senso. Inoltre, puoi facoltativamente prendere la dimensione della scheda come parte dell'input.
Per l'output, puoi scegliere una delle seguenti opzioni:
- Valori di verità e falsità secondo la convenzione della tua lingua, o
- Un valore predefinito rispettivamente per true e false.
Si prega di specificare il metodo di input / output nell'invio.
+=+=cosa del genere. Il problema è la ==funzione di output ...