कोइनहोल्ट के रहस्यमय गाँव में आप अपनी बेकरी के काउंटर के पीछे खड़े हैं और पेस्ट्रियों की एक ताज़ा खेप सजा रहे हैं। दरवाज़ा चरमराकर खुलता है, और अंदर डेनारा आती है, जो गुणवत्ता वाले सामान की परख रखने वाली एक कुशल व्यापारी है। जल्दी से खाना खा लेने के बाद वह काउंटर पर एक चमकता सिक्का सरका देती है, जिसकी वैल्यू 100 इकाई है।
आप मुस्कुराते हुए सिक्का लेते हैं और खाने की कुल कीमत पर नज़र डालते हैं: 88 इकाई। इसका मतलब है कि आपको 12 इकाई का बाकी लौटाना है।
डेनारा उम्मीद भरी नज़र से अपना हाथ आगे बढ़ाती है। "मुझे बस सबसे कम सिक्के दीजिए," वह मुस्कुराते हुए कहती है। "मेरी थैली पहले से भरी हुई है, और मैं रास्ते में उन्हें खो देने का जोखिम नहीं लेना चाहती।"
आप जानते हैं कि आपके पास कुछ विकल्प हैं। "बाकी के लिए हमारे पास लुमिस (10 इकाई मूल्य का), विरास (5 इकाई मूल्य का), और ज़ेंथ (2 इकाई मूल्य का) उपलब्ध हैं।"
आप मन ही मन जल्दी से संभावनाएँ निकालते हैं:
"सबसे अच्छा विकल्प दो सिक्के हैं: एक लुमिस और एक ज़ेंथ," आप कहते हैं और उसे बाकी सौंप देते हैं।
डेनारा मुस्कुराती है, साफ़ तौर पर प्रभावित। "हमेशा की तरह, आपने बिल्कुल सही किया।"
ग्राहक को दिए जाने वाले सिक्कों की सबसे कम संख्या तय कीजिए, जिनके मूल्यों का जोड़ बाकी राशि के बराबर हो।
find-fewest-coins ( coins target -- result ) सिक्कों के मूल्यवर्गों का एक ऐरे लौटाता है, जिनका जोड़ target होता है। coins एक हैश सेट है (जैसे HS{ 1 5 10 25 }); इसके साथ काम करने के लिए sets वोकैबुलरी में दिए शब्दों (members, in?, …) का इस्तेमाल कीजिए।
जब coins का कोई भी संयोजन target नहीं बना सकता, तब cannot-make-change एरर फेंकिए।
Exercism पर साइन अप कीजिए और Factor को 47 कॉन्सेप्ट163 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।