Desafio de pastas (Parte #1)

Um sistema de pastas em um computador poderia ser parecido com a imagem abaixo.

Neste desafio, os sistemas de pastas serão representados por dicionários, nos quais as chaves são pastas X e o valor associado a X é a lista de subpastas de X. Por exemplo, a imagem acima se torna o dicionário a seguir.

{
  "A": ["B", "C", "D"],
  "B": ["E", "F"],
  "D": ["G", "H"],
  "G": ["I", "J"],
  "H": ["K"]
}

As entradas para este desafio serão:

  • Um dicionário que representa um sistema de pastas.
  • Duas pastas, X e Y.

Escreva uma função que determine se "X está dentro de Y" (na ilustração, isso significa que você pode descer de Y até X).

Exemplos

is_it_inside({
  "A": ["B", "C", "D"],
  "B": ["E", "F"],
  "D": ["G", "H"],
  "G": ["I", "J"],
  "H": ["K"]
}, "B",  "A") ➞ True

is_it_inside({
  "A": ["B", "C", "D"],
  "B": ["E", "F"],
  "D": ["G", "H"],
  "G": ["I", "J"],
  "H": ["K"]
}, "B",  "D") ➞ False

is_it_inside({
  "A": ["B", "C", "D"],
  "B": ["E", "F"],
  "D": ["G", "H"],
  "G": ["I", "J"],
  "H": ["K"]
}, "I",  "D") ➞ True

is_it_inside({
  "A": ["B", "C", "D"],
  "B": ["E", "F"],
  "D": ["G", "H"],
  "G": ["I", "J"],
  "H": ["K"]
}, "A", "K") ➞ False

is_it_inside({
  "A": ["B", "C", "D"],
  "B": ["E", "F"],
  "D": ["G", "H"],
  "G": ["I", "J"],
  "H": ["K"]
}, "D", "D") ➞ True

Notas

  • Todos os exemplos acima usam o sistema de pastas da ilustração, mas os testes também usarão outros sistemas de pastas.
  • Para os fins deste desafio, qualquer pasta está dentro de si mesma, como no último exemplo.
  • Este desafio tem uma parte 2.