Satélite

Satélite

Intermedia

Instrucciones

Imagina que necesitas transmitir un árbol binario a un satélite que se acerca a Alpha Centauri y tienes un ancho de banda limitado. Como el árbol no tiene elementos repetidos, se puede representar de forma única mediante sus recorridos en preorden y en inorden.

Escribe el software del satélite para reconstruir el árbol a partir de los recorridos.

Un recorrido en preorden lee el valor del nodo actual antes (de ahí el «pre») de leer el subárbol izquierdo en preorden. Después se lee el subárbol derecho en preorden.

Un recorrido en inorden lee el subárbol izquierdo en inorden, luego el nodo actual y finalmente el subárbol derecho en inorden. Es decir, en orden de izquierda a derecha.

Por ejemplo, el recorrido en preorden de este árbol es [a, i, x, f, r]. El recorrido en inorden de este árbol es [i, a, f, x, r]

  a
 / \
i   x
   / \
  f   r

Nota: el primer elemento del recorrido en preorden siempre es la raíz.

Deberías implementar este ejercicio usando una gramática de cláusulas definidas (DCG). Las DCG no solo se pueden usar para analizar secuencias (listas), sino también para generarlas, completarlas y comprobarlas.

Biblioteca

Los archivos de implementación inicial incluyen la siguiente línea:

:- use_module(library(dcg/basics)).

Esto asegura que se pueda usar la biblioteca dcg/basics, lo cual debería ser suficiente para resolver este ejercicio.

Recursos

Los siguientes son recursos útiles para empezar con las DCG en Prolog:

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Prolog Exercism

¿Todo listo para empezar Satélite?

Regístrate en Exercism para aprender y dominar Prolog con 109 ejercicios y mentoría humana real, todo gratis.