परिचय
एक लोकप्रिय शब्द पहेली एक शब्द को दूसरे चरण में बदलना है जो केवल एक अक्षर को प्रतिस्थापित करता है और जिसके परिणामस्वरूप हमेशा एक वैध शब्द होता है। उदाहरण के लिए, BAG को पांच चरणों के माध्यम से DOG में परिवर्तित किया जा सकता है:
BAG -> BAT -> CAT -> COT -> COG -> DOG
इस मामले में छोटे रास्ते भी मौजूद हैं; उदाहरण के लिए:
BAG -> BOG -> DOG
यदि कोई एक ऐसा ग्राफ़ खींचता है, जिसके सिरों को शब्दों द्वारा लेबल किया जाता है, किसी भी शब्द के बीच एक किनारे के साथ जो एक अक्षर से भिन्न होता है, तो "बीएजी" से "डीओजी" तक का सबसे छोटा रास्ता दो किनारों से मिलकर बनेगा।
चुनौती
आपको एक प्रोग्राम लिखना है जो इनपुट के रूप में प्राप्त होता है शब्दों का एक "शब्दकोश" जो सभी की लंबाई समान है, सभी स्वीकार्य शब्दों का प्रतिनिधित्व करता है जो एक पथ के साथ कदम के रूप में प्रकट हो सकते हैं। इसे कम से कम एक "सबसे लंबा सबसे छोटा रास्ता" आउटपुट करना चाहिए, जो कि दो शब्दों के बीच का एक रास्ता है:
उन दो शब्दों के बीच किसी अन्य पथ से अधिक नहीं;
कम से कम जब तक सूची में शब्दों के किसी भी अन्य जोड़ी के बीच कम से कम संभव पथ।
ऊपर वर्णित ग्राफ के संदर्भ में, इस तरह के पथ की लंबाई ग्राफ का व्यास है।
पतित मामले में जहां कोई भी इनपुट शब्द दूसरों में से किसी में भी तब्दील नहीं हो सकता, कम से कम एक पथ की लंबाई शून्य, यानी एक ही शब्द का आउटपुट।
उदाहरण
इनपुट ["बैग", "बैट", "कैट", "कॉट", "डॉट", "डॉग"] को उस क्रम में (या रिवर्स ऑर्डर) सभी छह शब्दों को पीछे छोड़ते हुए एक रास्ता निकालना चाहिए, क्योंकि सबसे छोटा रास्ता " इस शब्दकोश के भीतर "टू" डॉग "पांच चरणों में सबसे लंबे समय तक प्राप्त करने योग्य है।
इनपुट ["बैग", "बैट", "बॉट", "कैट", "कॉट", "डॉट", "डॉग"] पथ "बैग, बैट, बॉट, डॉट, डॉग" और / या इसके रास्ते का उत्पादन करना चाहिए उलट।
इनपुट ["कोड", "गोल्फ", "पुरुष", "बज़", "मोल", "भूमिका", "मोल्ड", "ठंडा", "गोल्ड", "मोड"] को "कोड" के बीच एक रास्ता बनाना चाहिए और "गोल्फ"।
इनपुट ["एक", "दो", "छह", "दस"] बिना किनारों वाले ग्राफ से मेल खाता है, इसलिए एक या अधिक एकल-शब्द (शून्य-लंबाई) पथ का उत्पादन करता है।
यदि इनपुट में असमान लंबाई के दो शब्द हैं, तो आउटपुट अपरिभाषित है।
नियम
- मानक कोड गोल्फ नियम लागू होते हैं
- कई "सबसे छोटे" रास्ते होंगे। आपको कम से कम एक आउटपुट करना होगा, लेकिन आप जितनी चाहें उतने आउटपुट के लिए स्वतंत्र हैं।
- आप यह तय करने के लिए स्वतंत्र हैं कि आपके प्रोग्राम में इनपुट डिक्शनरी कैसे पास की जाती है।
- बाइट्स में सबसे छोटा कोड जीतता है।
[]या [[]])?