Stavo leggendo le regole per la successione reale della monarchia britannica e pensavo che il modo più semplice per capire che fosse con il codice (o lo pseudo-codice). Ho trovato questo (in uno pseudo-codice simile a C #):
EventHandler CurrentMonarch_Died {
CurrentMonarch = SuccessorRootedAt(Person.Electress_Sophia_Of_Hanover);
}
enum Gender { Male, Female }; // Male must come before Female
Person SuccessorRootedAt(Person person) {
if (person.IsAlive && IsQualified(person.Religion, person.Citizenship))
return person;
sortedChildren = person.Children.OrderBy(p => p.Gender).ThenBy(p => p.DateOfBirth);
foreach (child in sortedChildren) {
successor = SuccessorRootedAt(child);
if (successor != null)
return successor;
}
return null;
}
È corretto?