आप अपने घर के पास वाले जंगल में पेड़ पर एक घर बनाने की सोच रहे हैं, ताकि आप सूरज के उगने और डूबने को देख सकें।
आपने एक स्थानीय सर्वे कंपनी से ऐसा डेटा लिया है, जिसमें नक्शे के हर आयताकार हिस्से के हर पेड़ की ऊँचाई दर्ज है। आपको नक्शे के हर ग्रिड का विश्लेषण करना होगा, ताकि पता चले कि आपके पेड़ वाले घर के लिए कौन से पेड़ अच्छे हैं।
एक अच्छे पेड़ में ये दोनों बातें होती हैं:
आपको वे संभावित पेड़ ढूँढने हैं जहाँ आप अपना ट्री हाउस बना सकते हैं।
डेटा कंपनी यह डेटा ग्रिड के रूप में देती है, जो पेड़ों की ऊँचाइयाँ दिखाते हैं। ग्रिड की पंक्तियाँ पूर्व-पश्चिम दिशा दर्शाती हैं, और स्तंभ उत्तर-दक्षिण दिशा दर्शाते हैं।
ऐसा पेड़ स्वीकार्य होगा जो अपनी पंक्ति में सबसे बड़ा हो, और साथ ही अपने स्तंभ में सबसे छोटा हो।
हो सकता है कि किसी ग्रिड में कोई अच्छा पेड़ ही न हो। और हो सकता है कि एक हो, या कई हो।
यहाँ एक ऐसा ग्रिड है जिसमें ठीक एक संभावित पेड़ है।
↓
1 2 3 4
|-----------
1 | 9 8 7 8
→ 2 |[5] 3 2 4
3 | 6 6 7 1
तो [2, 1] (पंक्ति: 2, स्तंभ: 1) वाला बिंदु ट्री हाउस बनाने के लिए बढ़िया जगह है।
परंपरा के अनुसार Rust में वैल्यू के क्रमबद्ध समूहों की सामग्री को 0 से शुरू करके क्रमांकित ("इंडेक्स") किया जाता है। यह बात इस README में दिए गए बाकी अभ्यास विवरण की परवाह किए बिना लागू होती है। जैसे कि अगर वहाँ 1 से शुरू होने वाले इंडेक्स का ज़िक्र हो, तो उन इंडेक्स संख्याओं को Rust के इंडेक्स में बदलने के लिए आपको 1 घटाना पड़ेगा।
यह अभ्यास मैट्रिक्स की सामग्री संग्रहीत करने के लिए वेक्टर का वेक्टर इस्तेमाल करता है। यह अभ्यास आपको वेक्टर से जुड़ी बुनियादी बातें समझने में मदद करने के लिए बनाया गया है, जैसे कि इंडेक्सिंग, और यह कि नेस्टेड डेटा टाइप मान्य होते हैं। लेकिन बहुत तेज़ गति वाले मैट्रिक्स बीजगणित के लिए, और बड़ी मात्रा में डेटा को इसी तरह कुशलता से संसाधित करने के लिए, वेक्टर का वेक्टर अच्छा विकल्प नहीं है।
इस कमी की विस्तृत व्याख्या इस अभ्यास के दायरे से बाहर है, और सामान्य रूप से इस लर्निंग ट्रैक के दायरे से भी। इस पहलू को कैश लोकैलिटी कहा जाता है। अगर आप आधुनिक कंप्यूटर आर्किटेक्चर के बारे में और जानना चाहें, तो उस लिंक पर क्लिक करके इसका एक अच्छा परिचय पढ़ सकते हैं।