Desafío de carpetas (Parte #1)

Un sistema de carpetas en una computadora podría verse como en la imagen de abajo.

En este desafío, los sistemas de carpetas se representarán mediante diccionarios, donde las claves son carpetas X y el valor asociado a X es la lista de subcarpetas de X. Por ejemplo, la imagen anterior se convierte en el siguiente diccionario.

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

Las entradas para este desafío serán:

  • Un diccionario que representa un sistema de carpetas.
  • Dos carpetas, X e Y.

Escribe una función que determine si "X está dentro de Y" (en la ilustración, esto significa que puedes desplazarte hacia abajo desde Y hasta X).

Ejemplos

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 los ejemplos anteriores usan el sistema de carpetas de la ilustración, pero las pruebas también usarán otros sistemas de carpetas.
  • Para los fines de este desafío, cualquier carpeta está dentro de sí misma, como en el último ejemplo.
  • Este desafío tiene una parte 2.