एक गैराज सेल में आपको बहुत सस्ते दाम पर एक सुंदर पुराना टाइपराइटर मिलता है! उत्साह में भरकर आप घर दौड़ते हैं, कागज़ का एक पन्ना डालते हैं और टाइप करने लगते हैं। लेकिन जब आप आउटपुट देखते हैं, तो आपका उत्साह ठंडा पड़ जाता है: सभी शब्द गड़बड़ निकलते हैं! जैसे, यह "post" की जगह "stop" छापता है और "stale" की जगह "least"। ध्यान से आप फिर कोशिश करते हैं, लेकिन अब यह "spot" और "slate" छापता है।
कुछ प्रयोग करने के बाद आप पाते हैं कि हर अक्षर छपने से पहले एक अनियमित देरी होती है, जिससे क्रम बिगड़ जाता है। अब आप समझ गए कि उन्होंने इसे इतने कम पैसों में क्यों बेचा!
आपको एहसास होता है कि इसी खूबी से आप एनाग्राम बना सकते हैं, यानी ऐसे शब्द जो किसी दूसरे शब्द के अक्षरों को नए क्रम में रखकर बनते हैं। अपनी खोज से खुश होकर आप दिन का बाकी समय सैकड़ों एनाग्राम बनाने में बिताते हैं।
आपको एक लक्ष्य शब्द और एक या अधिक संभावित शब्द दिए जाते हैं। आपका काम इन संभावित शब्दों में से वे शब्द ढूँढना है जो लक्ष्य के एनाग्राम हैं।
एनाग्राम का मतलब है अक्षरों को दोबारा लगाकर एक नया शब्द बनाना: जैसे "owns" शब्द "snow" का एनाग्राम है।
कोई शब्द अपना ही एनाग्राम नहीं होता: जैसे "stop" शब्द "stop" का एनाग्राम नहीं है।
लक्ष्य शब्द और संभावित शब्द एक या अधिक ASCII अक्षरों से बने होते हैं (A-Z और a-z)।
छोटे और बड़े अक्षर एक ही माने जाते हैं: जैसे "PoTS" शब्द "sTOp" का एनाग्राम है, लेकिन "StoP" शब्द "sTOp" का एनाग्राम नहीं है।
आपको जो शब्द ढूँढने हैं, वे संभावित शब्दों में से ही लेने हैं, और उनमें छोटे-बड़े अक्षरों का वही रूप बना रहना चाहिए।
अगर लक्ष्य शब्द "stone" है और संभावित शब्द "stone", "tones", "banana", "tons", "notes" और "Seton" हैं, तो आपको जो एनाग्राम शब्द ढूँढने हैं वे हैं "tones", "notes" और "Seton".
यह फंक्शन शब्दों की एक स्ट्रिंग लेता है, जिसमें हर शब्द के अंत में एक लाइन ब्रेक लगा होता है।
पहला शब्द वह है जिसके एनाग्राम बाकी सारे शब्द होने चाहिए।
सभी मान्य एनाग्राम की एक स्ट्रिंग लौटाइए, जिसमें हर एनाग्राम के अंत में एक लाइन ब्रेक हो।
इनपुट स्ट्रिंग के लिए बफर लीनियर मेमोरी के बाइट 64 से 319 तक इस्तेमाल करता है।
अगर आप अतिरिक्त मेमोरी आवंटन से बचना चाहते हैं, तो इस बफर को इसी जगह बदल सकते हैं।
Exercism पर साइन अप कीजिए और WebAssembly को 87 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।