ऐरे के बुनियादी ऑपरेशन लागू कीजिए।
फंक्शनल भाषाओं में length, map और reduce जैसे ऐरे ऑपरेशन बहुत आम हैं। पहले से मौजूद फंक्शन इस्तेमाल किए बिना बुनियादी ऐरे ऑपरेशनों की एक श्रृंखला लागू कीजिए।
लागू किए जाने वाले ऑपरेशनों की सही संख्या और नाम इस बात पर निर्भर करते हैं कि आप किस ट्रैक पर हैं, ताकि मौजूदा नामों से टकराव न हो। आम तौर पर आपको जो ऑपरेशन लागू करने होंगे, उनमें ये शामिल हैं:
append (दो ऐरे दिए जाने पर, दूसरे ऐरे के सारे एलिमेंट पहले ऐरे के अंत में जोड़िए);concatenate (ऐरों की एक श्रृंखला दिए जाने पर, सभी ऐरों के सारे एलिमेंट मिलाकर एक ही समतल ऐरे बनाइए);filter (एक प्रेडिकेट और एक ऐरे दिए जाने पर, वे सारे एलिमेंट वाला ऐरे लौटाइए जिनके लिए predicate(item) सही होता है);length (एक ऐरे दिए जाने पर, उसमें मौजूद कुल एलिमेंट की संख्या लौटाइए);map (एक फंक्शन और एक ऐरे दिए जाने पर, हर एलिमेंट पर function(item) लागू करने के नतीजों वाला ऐरे लौटाइए);foldl (एक फंक्शन, एक ऐरे और शुरुआती एक्युमुलेटर दिए जाने पर, हर एलिमेंट को बाईं ओर से एक्युमुलेटर में फोल्ड (रिड्यूस) कीजिए);foldr (एक फंक्शन, एक ऐरे और एक शुरुआती एक्युमुलेटर दिए जाने पर, हर एलिमेंट को दाईं ओर से एक्युमुलेटर में फोल्ड (रिड्यूस) कीजिए);reverse (एक ऐरे दिए जाने पर, एक ऐसा ऐरे लौटाइए जिसमें सारे मूल एलिमेंट हों, लेकिन उलटे क्रम में)।ध्यान रखिए कि फोल्ड फंक्शनों (foldl, foldr) को आर्गुमेंट किस क्रम में दिए जाते हैं, यह महत्वपूर्ण है।
Rust में इटरेटर की बहुत समृद्ध व्यवस्था है। उनका उपयोग करके यह अभ्यास हल करना बहुत आसान है। कृपया इस अभ्यास को map(), flatten(), filter(), count(), fold(), chain(), rev() जैसे इटरेटर मेथड का सहारा लिए बिना हल करने की कोशिश कीजिए। next() और next_back() मेथड इस गिनती में नहीं आते।
इस अभ्यास को अपने हल में कोई भी अतिरिक्त मेमोरी आवंटन किए बिना हल किया जा सकता है। देखिए कि क्या आप किसी कलेक्शन से इटरेटर बनाने के बजाय अपना खुद का इटरेटर टाइप बना सकते हैं।
Exercism पर साइन अप कीजिए और Rust को 99 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
रिकर्शन का एक व्यावहारिक परिचय पाइए, ऐरे ऑपरेशन के इम्पेरेटिव और फंक्शनल विकल्प जानिए, और टेल-कॉल रिकर्शन तथा एक्युमुलेटर फंक्शनों की गहराई में उतरिए।