Flower Field लोकप्रिय गेम Minesweeper की एक दयालु पुनर्कल्पना है। खेल का उद्देश्य है बगीचे में सारे फूल ढूँढना, ऐसे संख्यात्मक संकेतों का उपयोग करके जो बताते हैं कि किसी वर्ग से सीधे सटे हुए (आड़ी, खड़ी या तिरछी दिशा में) कितने फूल हैं। Flower Field, Microsoft Windows के इटली, जर्मनी, दक्षिण कोरिया, जापान और ताइवान के क्षेत्रीय संस्करणों में शामिल था।
आपको एक तैयार फ्लावर फील्ड बगीचे के खाली खानों में फूलों की गिनती जोड़नी है। बगीचा खुद आयत (rectangle) के आकार का एक बोर्ड होता है, जो ऐसे खानों से बना है जो या तो खाली होते हैं (' ') या जिनमें एक फूल ('*') होता है।
हर खाली खाने के लिए गिनिए कि उसके आस-पास कितने फूल हैं (आड़ी दिशा, खड़ी दिशा या तिरछी दिशा में)। अगर उस खाली खाने के आस-पास कोई फूल नहीं है, तो उसे खाली ही रहने दीजिए। वरना उसे आस-पास के फूलों की गिनती से बदल दीजिए।
उदाहरण के लिए, आपको 5 x 4 का ऐसा बोर्ड मिल सकता है (यहाँ स्क्रीन पर दिखाने के लिए खाली जगहों को '·' अक्षर से दिखाया गया है):
·*·*·
··*··
··*··
·····
आपका कोड इसे इस तरह बदलेगा:
1*3*1
13*31
·2*2·
·111·
सारे इनपुट और आउटपुट ASCII में होते हैं।
Rust के String और &str utf8 होते हैं, इसलिए कोई यह सोच सकता है कि "Hello".chars() आसान होगा, पर असल में हर अक्षर के लिए यह जाँचना पड़ता है कि वह 1, 2, 3 या 4 u8 लंबा है या नहीं।
अगर हमें पता हो कि कोई &str ASCII है, तो हम .as_bytes() कॉल कर सकते हैं और नीचे के डेटा को &[u8] (बाइट स्लाइस) कह सकते हैं।
ASCII बाइट के स्लाइस पर इटरेशन करना बहुत तेज़ होता है, क्योंकि इसमें कोई कोडपॉइंट शामिल नहीं होता। हर ASCII बाइट एक u8 लंबी होती है।
क्या आप इनपुट को क्लोन किए बिना यह चैलेंज पूरा कर सकते हैं?
Exercism पर साइन अप कीजिए और Rust को 99 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।
हम नेस्टेड for लूप, बाउंड जाँच आसान बनाने के लिए min/max का चतुर उपयोग, फंक्शनल पाइपलाइन और द्वि-आयामी मैट्रिक्स देखेंगे।