दार्शनिकों ने लंबे समय से ट्रॉली समस्या की ओर इशारा किया है । दुर्भाग्य से, किसी भी मानव ने अभी तक इस समस्या को हल नहीं किया है। सौभाग्य से, प्रोग्रामर के रूप में हम अपने लिए समस्या को हल करने के लिए कंप्यूटर का उपयोग कर सकते हैं!
इनपुट
आपका कार्यक्रम इनपुट के रूप में (अधिकतम एक बढ़त के साथ से ले जाएगा एक (परिमित) निर्देशित ग्राफ x
को y
, किसी के लिए x
और y
) एक निर्दिष्ट नोड के साथ, और ग़ैर-ऋणात्मक पूर्णांक प्रत्येक बढ़त के साथ संलग्न (कि ट्रैक से बंधा लोगों की संख्या का प्रतिनिधित्व) । इसके अलावा, प्रत्येक नोड में कम से कम एक निकास किनारा होता है।
ट्रॉली निर्धारित नोड पर शुरू होती है। प्रत्येक मोड़, यदि ट्रॉली नोड पर है x
, तो उपयोगितावादी एक किनारे का चयन करता है (x,y)
। उस किनारे के लोग मर जाते हैं, और ट्राली अब किनारे पर है y
। यह प्रक्रिया हमेशा जारी रहती है।
ध्यान दें कि लोग केवल एक बार मर सकते हैं, इसलिए यदि किनारे (x,y)
पर n
लोगों को बांध दिया गया है, और ट्रॉली उनके ऊपर चलती है, कहते हैं, 100 बार, यह अभी भी केवल n
मौत का परिणाम होगा ।
उत्पादन
उपयोगितावादी इस तरह से अपनी पसंद बनाता है कि मरने वाले लोगों की संख्या कम से कम हो (जो कि परिमित होने की गारंटी है, क्योंकि केवल परिमित लोग हैं)। आपका प्रोग्राम इस नंबर को आउटपुट करेगा।
इनपुट प्रारूप
आप इनपुट ग्राफ को अपनी पसंद के अनुसार ले सकते हैं। उदाहरण के लिए, आप इसे एक मैट्रिक्स के रूप में ले सकते हैं, और नामित नोड को 0. लेबल के रूप में गिन सकते हैं या आप कुछ का उपयोग कर सकते हैं x1,y1,n1;x2,y2,n2;...
। उदाहरण के लिए 0,a,0;a,b,5;a,c,1;b,b,0;c,c,0
मानक ट्रॉली समस्या (अंत में छोरों के साथ) का प्रतिनिधित्व करने के लिए ।
परीक्षण के मामलों
0,a,0;a,b,5;a,c,1;b,b,0;c,c,0
-> 1 (0 से a, c से (एक व्यक्ति को मार रहा है), और फिर ट्रॉली को c से c तक लूप करते रहें।0,0,1;0,a,5;a,a,0
-> 1 (0 से 0 तक जा रहा है, 1 व्यक्ति पर सभी अनंत काल के लिए चल रहा है),0,a,5;0,b,1;a,a,1;b,b,6
-> 6 (0 -> a -> a -> a -> a -> ... (ध्यान दें कि b पर जाने का लालची समाधान गलत होगा)0,a,1;0,b,5;a,b,1;b,a,1
-> 3 (0 -> a -> b -> a -> b -> ...)0,a,1;0,b,1;a,a,0;b,b,0
-> 1 (ध्यान दें कि दो अलग-अलग विकल्प हैं जो उपयोगितावादी ले सकते हैं कि दोनों केवल एक व्यक्ति को मारते हैं)
यह कोड-गोल्फ है , इसलिए सबसे छोटा उत्तर जीतता है! सौभाग्य।
नोट: कोई बीमार लूप डे लूप नहीं होगा और मल्टीट्रैक ड्रिफ्टिंग पर प्रतिबंध है। इसके अलावा, हालांकि मैं असिमोव के तीन कानूनों (/ s) के संदर्भ में इस समस्या के बारे में सोचना पसंद करता हूं। पीटर टेलर ने सैंडबॉक्स में उल्लेख किया है कि यह समस्या गणितीय रूप से सबसे कम वजन वाले आरएचओ (पाथ लूप्स ऑन द पाथ) खोजने के बराबर है। ।