IA Listas Prolog
Listas
1. Define los siguientes predicados:
concatena(Xs,Ys,XsYs) XsYs es la concatenación de las listas Xs eYs.
selecciona(X,AsXBs,AsBs) AsBs es la lista AsXBs con una aparición menos del elemento X.
suma(Xs,N) N es la suma de todos los elementos de la lista Xs.todosmayores(Xs,N) todos los elementos de la lista Xs son mayores que N.
concatena([],Ys,Ys).
concatena([X|Xs],Ys,[X|Zs]):-
concatena(Xs,Ys,Zs).selecciona(X,[X|Xs],Xs).
selecciona(X,[Y|Ys],[Y|Zs]):-
selecciona(X,Ys,Zs).
suma([],0).
suma([X|Xs],N):-
suma(Xs,N1),
N is X+N1.
todosmayores([],_N).todosmayores([X|Xs],N):-
X>N,
todosmayores(Xs,N).
2. Define un predicado premax(PsRs,N,Ps,Rs) que devuelva en Ps el prefijo no vacío más largo posible de la lista PsRs, tal quela suma de sus elementos no supere el valor N, y devuelva en Rs el resto de PsRs. Ejemplo:
?- premax([3,6,2,1,6,4],10,Ps,Rs).
Ps = [3,6] Rs = [2,1,6,4]
?-premax([13,6,2,1,6,4],10,Ps,Rs).
No
premax([X|Xs],N,[X|Xs],[]):-
suma([X|Xs],M),
M= N.
3. Define un predicado partir(Ls,N,Es) que devuelva en Es la lista de lassublistas lo más largas posible de Ls tales que la suma de sus elementos no supere el valor N.
?- partir([3,6,2,1,6,4],10,Es).
Es = [[3,6],[2,1,6],[4]]
?-partir([3,6,2,12,6,4],10,Es).
No
partir([],_,[]).
partir([X|Xs],N,[As|Yss]):-
premax([X|Xs],N,As,Bs),
partir(Bs,N,Yss).
4. Escriba las reglas necesarias paraimprimir una lista de la siguiente forma.
Solución
5. Escriba las reglas necesarias para agregar un elemento al principio de una lista.
Solución
Regístrate para leer el documento completo.