Sfida
Data una matrice binaria e una stringa binaria, determinare se tale stringa binaria può essere trovata a partire da qualsiasi punto della matrice e spostandosi in qualsiasi direzione in qualsiasi punto successivo per formare la stringa binaria. Cioè, la stringa può essere trovata piegata ma all'interno della matrice?
La corda può essere piegata solo a 90 gradi o 180 gradi (connessioni ai bordi; Manhattan Distance 1) e non può sovrapporsi in alcun punto.
Esempio
Facciamo il seguente esempio:
Matrix:
010101
111011
011010
011011
Snake: 0111111100101
Questo è un vero caso di prova. Possiamo vedere il serpente piegato nella seguente posizione:
0-1 0 1 0 1
|
1 1 1-0 1 1
| | | |
0 1 1 0-1-0
| |
0 1-1 0 1 1
Regole
- Si applicano scappatoie standard
- Se lo desideri, puoi prendere la lunghezza della stringa e la larghezza e l'altezza della matrice come input
- È possibile prendere la matrice binaria e la stringa binaria come una stringa multilinea / matrice di stringhe / stringa unita a newline / qualsiasi altra stringa unita e una stringa
- È possibile prendere le dimensioni come una matrice piatta anziché diversi argomenti
- Il programma deve terminare per qualsiasi matrice 5 x 5 con una stringa fino a 10 in meno di un minuto
limitazioni
- La matrice non è necessariamente quadrata
- La stringa sarà non vuota
- La stringa può essere lunghezza-1
- La stringa non conterrà più quadrati di quelli disponibili (ovvero
len(string) <= width(matrix) * height(matrix)
Casi test
Truthy
01010
10101
01010
10101
01010
0101010101010101010101010
01110
01100
10010
10110
01101
011111000110100
0
0
10
01
1010
100
010
001
100010001
Falsy
00000
00000
00000
00000
00000
1
10101
01010
10101
01010
10101
11
100
010
001
111
10001
01010
00100
01010
10001
1000100010001000101010100