Algoritmo della successione reale britannica

4

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?

    
posta JoelFan 31.07.2013 - 20:15
fonte

1 risposta

3

Chiudi, ma se analizzi la cronologia, è più simile a:

Person SuccessorRootedAt(Person person) {
  if(!rand%100) //Reality simulator
  {
    if (person.IsAlive && IsQualified(person.Religion, person.Citizenship))
      return person;

    sortedChildren = person.Children.OrderBy(p => p.Gender).ThenOrderBy(p => p.DateOfBirth);

    foreach (child in sortedChildren) {
      successor = SuccessorRootedAt(child);
      if (successor != null)
        return successor;
  }
  else
  {
    return rand();
  }
}

E sì, a volte causa un sacco di guai.

    
risposta data 31.07.2013 - 20:28
fonte

Leggi altre domande sui tag