सही शासक कौन है?


18

कौन दायरे पर शासन करेगा?

आपको एक परिवार का पेड़ दिया जाता है जिसमें नाम होता है: प्रत्येक परिवार के सदस्य के लिए नाम, लिंग, जन्म तिथि, मृत्यु की तिथि और वारिसों की सूची। आप पेड़ का प्रतिनिधित्व करने के लिए किसी भी सुविधाजनक (नेस्टेड) ​​सूची प्रारूप का उपयोग कर सकते हैं। निम्नलिखित उदाहरण JSON का उपयोग करेंगे। निर्धारित करें कि कौन दायरे और किस क्रम में शासन करेगा। उत्तराधिकार नियम निम्नलिखित हैं:

  1. जब एक राजा की मृत्यु होती है तो वह अपने सबसे पुराने वैध पुरुष बच्चे के पास जाता है।
  2. यदि कोई नहीं है तो यह सबसे पुराने वैध महिला बच्चे के पास जाता है।
  3. यदि राजा का कोई उत्तराधिकारी नहीं होता है तो सबसे पुराने कानूनी राजा के भाई के पास जाता है
  4. यदि कोई पुरुष भाई नहीं हैं, तो क्षेत्र सबसे पुराने कानूनी राजा की बहन के पास जाएगा
  5. यदि सभी कानूनी रिश्तेदार मर चुके हैं, तो ऊपर दिए गए नियमों को लागू करते हुए दायरे सबसे नज़दीकी कमीनों में जाते हैं
  6. यदि कोई वैध और न ही कमीने रिश्तेदार जीवित प्रिंट नहीं हैं LINE EXTINCT

हम एक वैध पुत्र को उसी के रूप में परिभाषित करते हैं जिसका पिता के समान "घर" नाम है।

उदाहरण:

इनपुट {}

उत्पादन LINE EXTINCT

इनपुट

{
    "name" : "Maegor",
    "house" : "Targaryen",
    "birth" : 12,
    "death" : 48,
    "sex" : "male",
    "heirs" : []
}

उत्पादन 12-48: Maegor, LINE EXTINCT

इनपुट

{
    "name" : "Jaehaerys",
    "house" : "Targaryen",
    "birth" : 34,
    "death" : 103,
    "sex" : "male",
    "heirs" : [
        {
        "name" : "Viserys",
        "house" : "Targaryen",
        "birth" : 77,
        "death" : 129,
        "sex" : "male",
        "heirs" : []
        }
    ]
}

उत्पादन 34-103: Jaehaerys, 103-129: Viserys, LINE EXTINCT

इनपुट

{
        "name" : "Eddard",
        "house" : "Stark",
        "birth" : 263,
        "death" : 299,
        "sex" : "male",
        "heirs" : [
            {
            "name" : "Robb",
            "house" : "Stark",
            "birth" : 283,
            "death" : 300,
            "sex" : "male",
            "heirs" : []
            },
            {
             "name" : "Jon",
             "house" : "Snow",
             "birth" : 284,
             "death" : 384,
             "sex" : "male",
             "heirs" : []
            },
            {
             "name" : "Sansa",
             "house" : "Stark",
             "birth" : 286,
             "death" : 320,
             "sex" : "female",
             "heirs" : []
            },
            {
             "name" : "Arya",
             "house" : "Stark",
             "birth" : 289,
             "death" : 350,
             "sex" : "female",
             "heirs" : []
            },

            {
             "name" : "Brann",
             "house" : "Stark",
             "birth" : 290,
             "death" : 315,
             "sex" : "male",
             "heirs" : []
            },
            {
             "name" : "Rickon",
             "house" : "Stark",
             "birth" : 295,
             "death" : 319,
             "sex" : "male",
             "heirs" : []
            }

        ]
    }

आउटपुट: 263-299: Eddard, 299-300: Robb, 300-315: Brann, 315-319: Rickon, 319-320: Sansa, 320-350: Arya, 350-384: Jon, LINE EXTINCT

ध्यान दें कि आउटपुट को किसी भी तरह से स्वरूपित किया जा सकता है, आप इसकी केवल आवश्यकता यह है कि इसमें शासन का समय और उन वर्षों के दौरान शासन करने वाले राजा का नाम शामिल हो। मैंने ASOIAF से राजाओं को प्रदर्शनकारी उदाहरण के रूप में उपयोग किया है, हालाँकि सभी इनपुट के लिए कोड को मान्य होना आवश्यक है।

आप मान सकते हैं कि कोई जुड़वां पैदा नहीं होगा।

यह एक कोड गोल्फ चुनौती है, इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है

सौभाग्य!!!


1
"कमीनों" का प्रतिनिधित्व कैसे किया जाता है?
ASCIIThenANSI

अपने आप में उन्हें एक विशेषता के रूप में इंगित नहीं किया जाता है, किसी को यह जांचने की आवश्यकता होगी कि क्या उनके परिवार का नाम पिता से अलग है।
विजार्डऑफमेनो

@CamOfMenlo तो क्या उनके घर का नाम उनके परिवार का नाम है?
ASCIIThenANSI

1
@WizardOfMenlo प्वाइंट 3 थोड़ा अस्पष्ट है - In case the king had no sons the realm goes to the oldest legit king's brother। यह बिंदु 2 के साथ संघर्ष करने लगता है (यदि कोई वैध पुत्र नहीं है, तो सबसे पुरानी कानूनी बेटी को ताज पहनाया जाता है)। क्या आपको बिंदु 3 के heirsबजाय मतलब है sons?
कम्मेहा

1
@kamehameha हां, मैं इसे अभी संपादित करूंगा
विज़ार्डऑफमेलो

जवाबों:


6

PHP, 664 बाइट्स

मुझे यकीन नहीं है कि 664 बाइट्स कोड गोल्फिंग के लिए फिट हैं, लेकिन यहां यह है:

$k=json_decode($argv[1]);$s=[];$f='array_shift';$r='heirs';$e='death';$y='year';function s
($k,&$e){uasort($e,function($a,$b)use($k){$c=$a->{$h='house'};$d=$b->$h;$e=$k->$h;if($c==$e
&&$d!=$e)return-1;elseif($c!=$e&&$d==$e)return 1;elseif($a->sex<$b->sex)return 1;elseif($a
->sex>$b->sex)return -1;else return$a->birth-$b->birth;});}function d(&$e,$y){foreach($e 
as$i=>$h)if($h->death<=$y)unset($e[$i]);};($x=(array)$k)&&$k->$y=$k->birth;$l=[];while($x)
{$l[]=$k;$z=$k->$e;s($k,$k->$r);d($k->$r,$k->$e);if($k->$r){$s=$k->$r;$k=$f($s);}else{s($k
,$s);d($s,$k->$e);$k=$f($s);}if(!$k)break;$k->$y=$z;}foreach($l as$k)
echo"{$k->$y}-{$k->$e}: $k->name, ";echo"LINE EXTINCT";

यह पहली कमांड लाइन तर्क के रूप में JSON स्ट्रिंग इनपुट प्राप्त करता है।

एल्गोरिथ्म चुनौती में वर्णित चरणों का पालन करता है (राजा से शुरू होता है, फिर उत्तराधिकारियों और फिर भाई-बहनों को अगले राजा को खोजने के लिए)।

डेमो


यह जल्दी था!
जादूगरऑफमेनो

whilePHP में गोल्फिंग करते समय लूप प्रतिबंधित है :)।
ब्लैकहोल

मुझे लगता है कि कोई गलती है, मैंने इसे यहां परीक्षण किया है और यह लिंक सही ढंग से लाइन के नीचे चला जाता है, हालांकि जॉन स्नो को यह अधिकार देने के बाद वापस नहीं जाता है यह सिंहासन है
विजार्डऑफमेनो

यह कोई गलती नहीं है। यह वास्तव में उन नियमों का पालन करता है जो चालान में परिभाषित किए गए थे। जैसा कि आप देख सकते हैं, अंतिम राजा टायरियन है जो आर्य का पुत्र है। इसका मतलब यह है कि अगला राजा टीयरियन या उसके एक भाई के वारिसों में से होना चाहिए। लेकिन उसका न कोई भाई है, न कोई वारिस। कृपया ध्यान दें कि आपके उदाहरण में JSON के अनुसार, जॉन स्नो टायरियन के चाचा हैं।
रजवन

आप बिलकुल सही कह रहे हैं, मेरे फैनबॉयसम को मेरे लिए सबसे अच्छा मिला
विजार्डऑफमेनो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.