एक गैराज सेल में आपको बहुत सस्ते दाम पर एक सुंदर पुराना टाइपराइटर मिलता है! उत्साह में भरकर आप घर दौड़ते हैं, कागज़ का एक पन्ना डालते हैं और टाइप करने लगते हैं। लेकिन जब आप आउटपुट देखते हैं, तो आपका उत्साह ठंडा पड़ जाता है: सभी शब्द गड़बड़ निकलते हैं! जैसे, यह "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".
["stone","tones","banana","tons","notes","Seton"]
CREATE TABLE anagram (
subject TEXT NOT NULL,
candidates TEXT NOT NULL, -- json array of strings
result TEXT -- json array of strings
);