Meydan okuma
İkili bir matris ve bir ikili dize verildiğinde, bu ikili dizginin matristeki herhangi bir noktada başlayıp, ikili dizgiyi oluşturmak için sonraki herhangi bir noktada herhangi bir yönde hareket edip edemeyeceğini belirleyin. Diğer bir deyişle, mat, matrisin içinde katlanmış halde bulunabilir mi?
Tel yalnızca 90 derece veya 180 derece katlanabilir (kenar bağlantıları; Manhattan Mesafe 1) ve herhangi bir noktada kendiliğinden üst üste gelemez.
Örnek
Aşağıdaki örneği ele alalım:
Matrix:
010101
111011
011010
011011
Snake: 0111111100101
Bu bir truthy test durumudur. Yılanın aşağıdaki konumda katlandığını görebiliriz:
0-1 0 1 0 1
|
1 1 1-0 1 1
| | | |
0 1 1 0-1-0
| |
0 1-1 0 1 1
kurallar
- Standart Loopholes Uygula
- Dize uzunluğunu ve matrisin genişliğini ve yüksekliğini isterseniz girdi olarak alabilirsiniz.
- İkili matrisi ve ikili diziyi çok satırlı bir dize / dizi dizisi / newline birleştirilmiş dize / başka bir birleştirilmiş dize ve bir dize olarak alabilirsiniz.
- Boyutları birkaç argüman yerine düz bir dizi olarak alabilirsiniz.
- Programınız 5 x 5'lik bir matris için, bir dakikanın altında 10 metreye kadar olan herhangi bir dizeyle bitmelidir.
Sınırlamalar
- Matris mutlaka kare değildir
- Dize boş olmayacak
- Dize uzunluğu-1 olabilir
- Dize mevcut olandan daha fazla kare içermez (yani,
len(string) <= width(matrix) * height(matrix)
Test Kılıfları
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