हास्केल में 2 डी ग्रिड के बारे में हालिया प्रश्न से प्रेरित, मुझे आश्चर्य है कि सूचियों की सूची में स्थिति का ट्रैक रखने के लिए दो-आयामी जिपर बनाना संभव होगा। एक सूची में एक आयामी जिपर हमें वास्तव में बड़ी सूची में स्थानीय स्तर पर कुशलता से स्थानांतरित करने की अनुमति देता है (सामान्य पाठ पाठ संपादक होने का)। लेकिन कहते हैं कि हम इस तरह की सुविधा देता है एक दूसरे आयाम है:द्वि-आयामी जिपर
grid =
[[ 1, 2, 3, 4, 5]
,[ 6, 7, 8, 9,10]
,[11,12,13,14,15]
,[16,17,18,19,20]
,[21,22,23,24,25]]
हम ज़िपर डेटा संरचना के कुछ प्रकार बना सकते हैं कुशलतापूर्वक न केवल छोड़ दिया और सही, लेकिन ऊपर और ग्रिड यहाँ में नीचे ले जाने के लिए? यदि हां, तो क्या होगा यदि हम सूचियों की सूची को अनंत सूचियों की अनंत सूची के साथ प्रतिस्थापित करते हैं, तो क्या हम अभी भी कुशल आंदोलन प्राप्त कर सकते हैं?
"कैसे ज़िपर काम है कि वे इसे तक पहुँचने के लिए उपयोग किया जाता है एक पथ द्वारा एक संरचना में एक स्थान का प्रतिनिधित्व के महत्वपूर्ण पहलुओं में से एक"। ज़िप्पर के लिए एक महत्वपूर्ण पथ क्यों एक महत्वपूर्ण आवश्यकता है?मैंने सोचा होगा कि डेटा संरचना में "स्थान" का प्रतिनिधित्व करने का कोई भी तरीका –
@ अनुपमजैन पर्याप्त होगा: क्योंकि पुनर्निर्माण के लिए उपयोग किए जाने वाले टुकड़े मूल, अपरिवर्तनीय संरचना के टुकड़े होते हैं, यदि इनमें से एक में "समान" स्थान, जब आप इसे फिर से इकट्ठा करते हैं तो पथ का मूल मूल्य अभी भी होगा। इसे संभालने का एकमात्र तरीका दोनों पथों को चलाना और दोनों प्रतिस्थापन करना है - यानी, दोनों पथों को "अद्वितीय" पथ के रूप में एक साथ विचार करना। –
@ अनुपमजैन: जितना अधिक अनावश्यक मार्ग संभव है, उतनी अधिक अक्षमता आप बनाते हैं। सबसे खराब स्थिति परिदृश्य चक्रीय सूची की तरह कुछ है, जहां पथों की अनंत संख्या होती है और प्रत्येक पथ में संपूर्ण संरचना होती है, जो आपको सबकुछ पुनर्निर्माण करने के लिए मजबूर करती है। –