चुनौती
एक बाइनरी मैट्रिक्स और एक बाइनरी स्ट्रिंग को देखते हुए, निर्धारित करें कि बाइनरी स्ट्रिंग को मैट्रिक्स में किसी भी बिंदु पर शुरू किया जा सकता है और बाइनरी स्ट्रिंग बनाने के लिए किसी भी बाद में किसी भी दिशा में आगे बढ़ सकता है। यही है, लेकिन क्या स्ट्रिंग को मैट्रिक्स के अंदर मुड़ा हुआ पाया जा सकता है?
स्ट्रिंग को केवल 90 डिग्री या 180 डिग्री (बढ़त कनेक्शन; मैनहट्टन दूरी 1) पर मोड़ा जा सकता है और किसी भी बिंदु पर खुद को ओवरलैप नहीं किया जा सकता है।
उदाहरण
चलो निम्नलिखित उदाहरण लेते हैं:
Matrix:
010101
111011
011010
011011
Snake: 0111111100101
यह एक सत्य परीक्षण मामला है। हम सांप को निम्न स्थिति में मुड़ा हुआ देख सकते हैं:
0-1 0 1 0 1
|
1 1 1-0 1 1
| | | |
0 1 1 0-1-0
| |
0 1-1 0 1 1
नियम
- स्टैंडर्ड लोफॉल्स लागू होते हैं
- यदि आप चाहें तो स्ट्रिंग की लंबाई और मैट्रिक्स की चौड़ाई और ऊंचाई इनपुट के रूप में ले सकते हैं
- आप बाइनरी मैट्रिक्स और बाइनरी स्ट्रिंग को मल्टीलाइन स्ट्रिंग / सरणी ऑफ स्ट्रिंग्स / न्यूलाइन-ज्वाइन स्ट्रिंग / कुछ और-ज्वाइन स्ट्रिंग और एक स्ट्रिंग के रूप में ले सकते हैं
- आप कई तर्कों के बजाय एक समतल सरणी के रूप में आयाम ले सकते हैं
- आपका प्रोग्राम किसी भी 5 x 5 मैट्रिक्स के लिए खत्म होना चाहिए, जिसमें किसी भी तार की लंबाई 10 मिनट तक हो सकती है
सीमाएं
- मैट्रिक्स जरूरी वर्ग नहीं है
- स्ट्रिंग गैर-रिक्त होगी
- स्ट्रिंग लंबाई -1 हो सकती है
- स्ट्रिंग में उपलब्ध से अधिक वर्ग नहीं होंगे (अर्थात,
len(string) <= width(matrix) * height(matrix)
परीक्षण के मामलों
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