Wer wird das Reich regieren?
Sie erhalten einen Stammbaum mit Namen, Geschlecht, Geburtsdatum, Sterbedatum und einer Liste der Erben für jedes Familienmitglied. Sie können ein beliebiges (verschachteltes) Listenformat verwenden, um den Baum darzustellen. In den folgenden Beispielen wird JSON verwendet. Bestimmen Sie, wer das Reich regieren wird und in welcher Reihenfolge. Die Nachfolgeregeln sind folgende:
- Wenn ein König stirbt, geht das Reich an sein ältestes legitimes männliches Kind.
- Wenn es keine gibt, geht es zum ältesten legitimen weiblichen Kind über.
- Falls der König keine Erben hatte, geht das Reich an den ältesten legitimen Bruder des Königs
- Wenn es keine männlichen Brüder gibt, geht das Reich zur Schwester des ältesten legitimen Königs
- Wenn alle legitimen Verwandten tot sind, geht das Reich zum nächsten Bastard und wendet die obigen Regeln an
- Wenn keine legitimen oder unehelichen Verwandten am Leben sind, drucken Sie
LINE EXTINCT
Wir definieren einen legitimen Sohn als einen, der denselben "Hausnamen" wie sein Vater hat.
Beispiele:
Eingang
{}
Ausgabe
LINE EXTINCT
Eingang
{
"name" : "Maegor",
"house" : "Targaryen",
"birth" : 12,
"death" : 48,
"sex" : "male",
"heirs" : []
}
Ausgabe 12-48: Maegor, LINE EXTINCT
Eingang
{
"name" : "Jaehaerys",
"house" : "Targaryen",
"birth" : 34,
"death" : 103,
"sex" : "male",
"heirs" : [
{
"name" : "Viserys",
"house" : "Targaryen",
"birth" : 77,
"death" : 129,
"sex" : "male",
"heirs" : []
}
]
}
Ausgabe 34-103: Jaehaerys, 103-129: Viserys, LINE EXTINCT
Eingang
{
"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" : []
}
]
}
Ausgabe: 263-299: Eddard, 299-300: Robb, 300-315: Brann, 315-319: Rickon, 319-320: Sansa, 320-350: Arya, 350-384: Jon, LINE EXTINCT
Beachten Sie, dass die Ausgabe beliebig formatiert werden kann. Sie muss lediglich die Regierungszeit und den Namen des regierenden Königs in diesen Jahren enthalten. Ich habe Könige aus der ASOIAF als Demonstrationsbeispiel verwendet, der Code muss jedoch für alle Eingaben gültig sein.
Sie können davon ausgehen, dass keine Zwillinge geboren werden.
Dies ist eine Code-Golf-Herausforderung, daher gewinnt der kürzeste Code in Bytes
Viel Glück!!!
In case the king had no sons the realm goes to the oldest legit king's brother
. Es scheint mit Punkt 2 zu kollidieren (Wenn kein legitimer Sohn, dann wird die älteste legitime Tochter gekrönt). Meinen Sieheirs
stattsons
in Punkt 3?Antworten:
PHP, 664 Bytes
Ich bin nicht sicher, ob 664 Bytes für das Code-Golfen geeignet sind, aber hier ist es:
Es empfängt die JSON-Zeichenfolge als erstes Befehlszeilenargument.
Der Algorithmus folgt den in der Challenge beschriebenen Schritten (beginnt beim König, sortiert dann die Erben und dann die Geschwister, um den nächsten König zu finden).
Demo
quelle
while
Schleife sind beim Golfen in PHP verboten :).