Qui dirigera le royaume?
On vous donne un arbre généalogique qui contient: nom, sexe, date de naissance, date de décès et une liste des héritiers, pour chaque membre de la famille. Vous pouvez utiliser n'importe quel format de liste (imbriqué) pour représenter l'arbre. Les exemples suivants utiliseront JSON. Déterminez qui dirigera le royaume et dans quel ordre. Les règles de succession sont les suivantes:
- Lorsqu'un roi meurt, le royaume revient à son plus ancien enfant mâle légitime.
- S'il n'y en a pas, il passe à la plus vieille fille légitime.
- Au cas où le roi n'aurait pas d'héritiers, le royaume reviendra au frère aîné du roi légitime
- S'il n'y a pas de frères mâles, le royaume ira à la sœur aînée du roi légitime
- Si tous les parents légitimes sont morts, le royaume va au salaud le plus proche, en appliquant les règles ci-dessus
- Si aucun parent légitime ou bâtard n'est vivant
LINE EXTINCT
Nous définissons un fils légitime comme celui qui a le même nom de «maison» que son père.
Exemples:
Contribution
{}
Production
LINE EXTINCT
Contribution
{
"name" : "Maegor",
"house" : "Targaryen",
"birth" : 12,
"death" : 48,
"sex" : "male",
"heirs" : []
}
Production 12-48: Maegor, LINE EXTINCT
Contribution
{
"name" : "Jaehaerys",
"house" : "Targaryen",
"birth" : 34,
"death" : 103,
"sex" : "male",
"heirs" : [
{
"name" : "Viserys",
"house" : "Targaryen",
"birth" : 77,
"death" : 129,
"sex" : "male",
"heirs" : []
}
]
}
Production 34-103: Jaehaerys, 103-129: Viserys, LINE EXTINCT
Contribution
{
"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" : []
}
]
}
Production: 263-299: Eddard, 299-300: Robb, 300-315: Brann, 315-319: Rickon, 319-320: Sansa, 320-350: Arya, 350-384: Jon, LINE EXTINCT
Notez que la sortie peut être formatée comme vous le souhaitez, sa seule condition est qu'elle contienne le temps du règne et le nom du roi régnant pendant ces années. J'ai utilisé des rois de l'ASOIAF comme exemple démonstratif, mais le code doit être valide pour toutes les entrées.
Vous pouvez supposer qu'aucun jumeau ne naîtra.
Ceci est un défi de golf de code, donc le code le plus court en octets gagne
Bonne chance!!!
In case the king had no sons the realm goes to the oldest legit king's brother
. Il semble entrer en conflit avec le point 2 (s'il n'y a pas de fils légitime, alors la fille légitime la plus âgée est couronnée). Voulez-vous direheirs
au lieu dusons
point 3?Réponses:
PHP, 664 octets
Je ne sais pas si 664 octets conviennent au golf de code, mais voici:
Il reçoit l'entrée de chaîne JSON comme premier argument de ligne de commande.
L'algorithme suit les étapes décrites dans le défi (commence par le roi, puis trie les héritiers puis les frères et sœurs pour trouver le prochain roi).
Démo
la source
while
les boucles sont interdites lors du golf en PHP :).