Está en la página 1de 4

1,

-unifica, ya que las expresiones unifican porque hay coincidencias entre los
términos. Estas coincidencias permiten encontrar asignaciones de valores a las
variables que hacen que las expresiones sean idénticas,

-unifica

-no unifica ya que los terminos p(g(f(Y,Z) y p(g(X,B) no tienen una coincidencia para
poder unificarlos

2.

3.
Esta regla establece que X e Y son hermanos si comparten el mismo padre (P) y son
diferentes entre sí (X=Y).

La relación nieto(X, Y) define cuándo X es el nieto (o nieta) de Y.


Esta relación se cumple si se satisfacen las siguientes condiciones:
1. Existe un hijo Z tal que Y es el padre de Z. Esto se expresa con el predicado
padreDe(Y, Z).
2. La persona Z es el padre de X. Esto se expresa con el predicado padreDe(Z,
X).
En resumen, si Y es el padre de Z, y Z es el padre de X, entonces X es el nieto de Y.
por ej alberto(Y) tiene 2 hijos federico y luis(Z) y luis(Z) tiene un hijo francisco(X)
entonces francisco es nieto de alberto

- tio(X,Y) SI EXISTE Z que es el padre de Y y si x es hermano del padre Z


pero en la base de conocimientos no hay una relacion que diga que son tios de
alguien
4.

​ este es un hecho que establece una relación entre un padre y una lista de
hijos. Por ejemplo, padre(pedro,[ana,juan,mauricio]). indica que Pedro
es el padre de Ana, Juan y Mauricio.
​ padreDe/2: Esta es una regla que se utiliza para definir la relación "padre de".
Toma dos argumentos, el padre y el hijo. Utiliza el predicado buscar/2, que
parece estar definido en otro lugar del programa, para buscar si el hijo dado
está en la lista de hijos del padre.
​ primerhijo/2: Esta es otra regla que toma un padre y un hijo como
argumentos. Devuelve el primer hijo de ese padre. Utiliza el patrón
[PrimerHijo|_] para descomponer la lista de hijos y obtener el primer
elemento.

La regla contar_hijos/2 cuenta la cantidad de hijos que tiene un padre. Para ello,

primero obtiene la lista de hijos asociada al padre y luego utiliza el predicado

lista/2 para contar la cantidad de elementos en esa lista. El predicado lista/2

funciona recursivamente: cuando se proporciona una lista no vacía, descompone la

lista en su primer elemento y el resto, y luego cuenta la cantidad de elementos en el

resto de la lista recursivamente. Finalmente, suma 1 a la cantidad de elementos en el

resto de la lista para obtener la longitud total de la lista original, que representa la

cantidad de hijos del padre.

5.

El predicado agregar_elemento toma tres argumentos: Elemento, que es el elemento


que se agregará a la lista; Lista, que es la lista a la que se agregará el elemento; y
NuevaLista, que es la lista resultante después de agregar el elemento.
la parte NuevaLista = [Elemento | Lista] establece que NuevaLista es una lista
que consiste en Elemento seguido de todos los elementos de la lista Lista, lo que
significa que Elemento se agrega al principio de la lista Lista, formando así la
NuevaLista.

?- agregar_elemento(a, [b, c, d], NuevaLista).

8,Predicado inversa Este es el punto de entrada principal de nuestro programa.


Toma dos argumentos: la lista que queremos invertir y la lista invertida resultante.

​ Caso base inversa([], []).: Esta es la primera regla que Prolog buscará
cuando se llame al predicado inversa/2. Establece que si la lista de entrada
está vacía, la lista invertida también debe ser vacía. Es el caso base que
detiene la recursión cuando la lista se ha invertido por completo.
​ Regla recursiva inversa([X|L1], L2) :- inversa(L1, L3), append(L3,
[X], L2).: Esta regla se aplica cuando la lista de entrada [X|L1] no está
vacía. Funciona de la siguiente manera:
● Toma la lista [X|L1], donde X es el primer elemento de la lista y L1 es
la cola (el resto de la lista).
● Llama recursivamente al predicado inversa/2 con la cola L1, lo que
nos dará la lista invertida de la cola L3.
● Utiliza el predicado append para concatenar [X] al final de la lista
invertida L3, produciendo así la lista invertida final L2.

9, palindromo puede ser una frase , numero, o palabras


palindromo(L) es una regla que toma un argumento L, que se espera que sea una
lista, y verifica si es un palíndromo.

reverse(L, L) es una llamada a la función reverse, que toma una lista L y devuelve
su reverso, y luego verifica si este reverso es igual a L.

10,"penúltimo(X, L)" significa que "X" es el penúltimo elemento de la lista "L".

El predicado "append(, [X,], L)" está utilizando el predicado "append" para


descomponer la lista "L" en dos partes. La primera parte (que estamos ignorando
con el guion bajo "_") y la segunda parte, que es una lista que termina con "X"
seguido por algún otro elemento.

También podría gustarte