Você foi contratado para desenvolver o Noble Knots, o mais badalado aplicativo de relacionamentos para a nobreza! Com séculos de casamentos entre a realeza, as coisas ficaram… complicadas. Para evitar qualquer situação do tipo opa, somos gêmeos, sua tarefa é construir um sistema que verifica o quão próximo é o parentesco entre duas pessoas.
O Noble Knots foi inspirado no "Islendinga-App" da Islândia, que tem por trás um banco de dados que traça todas as conexões familiares conhecidas entre islandeses desde o povoamento da Islândia. Seu algoritmo vai determinar o grau de separação entre duas pessoas na árvore genealógica da realeza.
Será que seu aplicativo vai ajudar a coroar o par perfeito?
Sua tarefa é determinar o grau de separação entre duas pessoas em uma árvore genealógica. Isso é parecido com a ideia da cultura pop de que todo ator de Hollywood está a seis graus de Kevin Bacon.
Dada a seguinte árvore genealógica:
┌──────────┐ ┌──────────┐ ┌───────────┐
│ Helena │ │ Erdős ├─────┤ Shusaku │
└───┬───┬──┘ └─────┬────┘ └────┬──────┘
┌───┘ └───────┐ └───────┬───────┘
┌─────┴────┐ ┌────┴───┐ ┌─────┴────┐
│ Isla ├─────┤ Tariq │ │ Kevin │
└────┬─────┘ └────┬───┘ └──────────┘
│ │
┌────┴────┐ ┌────┴───┐
│ Uma │ │ Morphy │
└─────────┘ └────────┘
O grau de separação entre Tariq e Uma é 2 (Tariq → Isla → Uma). Não há relação conhecida entre Isla e Kevin, já que não existe conexão nos dados fornecidos. O grau de separação entre Uma e Isla é 1.
Isla e Tariq são irmãos e têm uma separação de 1. Da mesma forma, esta implementação reportaria uma separação de 2 entre você e o irmão do seu pai.
Crie sua conta no Exercism para aprender e dominar Common Lisp com 27 conceitos92 exercícios e mentoria humana de verdade, tudo de graça.