Exceto pelo Dornish, a sucessão de Westerosi é assim:
-
A sucessão vai para a linha do menino mais velho do rei, significando que mesmo que a criança mais velha esteja morta, a sucessão passou para seus herdeiros, e somente depois que essa linha for explorada nós vá para o próximo passo.
-
Quando um rei não tem filhos homens ou suas linhas se extinguem, a sucessão vai para a linha da criança mais velha.
-
Quando um rei não tem filhos ou suas linhas se extinguem, passamos pelos mesmos passos 1 & 2 mas entre os irmãos do rei (ou seja, os filhos de seu pai).
-
Se ainda não tivermos herdeiros, subiremos um nível . Em outras palavras, procuramos pelos filhos do avô do rei. Se isso falhar, continuamos subindo até que um herdeiro seja encontrado (ou nos deparamos com uma exceção de estouro de pilha;))
No entanto, é preciso lembrar que estas são regras mundiais ideais. Na prática, quando a sucessão se torna complicada pela falta de herdeiros diretos, oportunistas se levantarão reivindicando a sucessão (geralmente apoiados por um grande exército).
Desde que eu tenho certeza que muitos de nós aqui são codificadores (o OP definitivamente é) aqui está minha tentativa de implementação do pseudocódigo. Tenho certeza de que poderia ser feito muito melhor, então sinta-se à vontade para corrigir.
function FindNextKing ( DeadKing ) {
Let NewKing = FindDirectHeir(DeadKing)
While(NewKing == null)
DeadKing = DeadKing.Father
NewKing = FindDirectHeir(DeadKing)
NewKing.LongLive!
}
function FindDirectHeir ( inheritor ) {
if ( inheritor is alive )
return inheritor //We have found an heir!
else
if ( inheritor.children.count > 0 )
Let heirs = inheritor.children
heirs = heirs.SortByAge()
if ( Dornish != true ) heirs = heirs.StableSortByGender(MaleFirst=true)
foreach(child in heirs)
Let Result = FindDirectHeir(child)
if (Result!=null) return Result
// search failed
return null
}