Monday, July 17, 2023

11. Write a Prolog program to implement maxlist(List,Max) so that Max is the greatest number in the list of numbers List.

 11. Write a Prolog program to implement maxlist(List,Max) so that Max is the greatest number in the list of numbers List.


max([H|T],R):-

 length(T,L),

 L>0 -> (  max(T,R1),  (   H > R1 ->     R is H    ;     R is R1  ) ) ; R is H.



OUTPUT:

max([6,9,7],X).

X = 9

max([6,9,70],X).

X = 70


10. Write a Prolog program to implement max(X,Y,Max) so that Max is the greater of two numbers X and Y.

 10. Write a Prolog program to implement max(X,Y,Max) so that Max is the greater of two numbers X and Y.


max(X,Y,R):-

 X>=Y ->

  R is X,

  write(R)

 ;

  R is Y,

  write(R).

 

OUTPUT:

max(2,6,X).

6

X = 6



12. Write a Prolog program to implement sumlist(List,Sum) so that Sum is the sum of a given list of numbers List.

  12. Write a Prolog program to implement sumlist(List,Sum) so that Sum is the sum of a given list of numbers List. 


sumlist([],0).

 

sumlist([H|T],R):-

sumlist(T,R1),

  R is H+R1.

OUTPUT:

sumlist([6,9,70],X).

X = 85


14. Write a Prolog program to implement reverse(List,ReversedList) that reverses lists.

 14. Write a Prolog program to implement reverse(List,ReversedList) that reverses lists. 


reverse([],[]).

reverse([X|T],REV):-reverse(T,R),append(R,[X],REV).


OUTPUT:


reverse([1,2,2],X).

X = [2, 2, 1]


13. Write a Prolog program to implement two predicates evenlength(List) and oddlength(List) so that they are true if their argument is a list of even or odd length respectively.

 13. Write a Prolog program to implement two predicates evenlength(List) and oddlength(List) so that they are true if their argument is a list of even or odd length respectively. 

evenlength:-

write('true --> even').

oddlength:-

write('true --> odd').

 

oddeven([_|T]):- length(T,L), L>=0 -> (  L1 is L+1,  L2 is mod(L1,2),  L2=:=0 ->evenlength  ;   oddlength ).




OUTPUT:

 

oddeven([5,8,9]).

true --> odd

1true

oddeven([5,8,6,9]).

true --> even

1true

 



8. Write a Prolog program to implement append for two lists.

  8. Write a Prolog program to implement append for two lists.

app([],L,L).

app([X|M],N,[X|Q]):-

 app(M,N,Q).



OUTPUT:

app([1,2],[3,4],X).

X = [1, 2, 3, 4]

app([1,2],[],X).

X = [1, 2]

 


7. Write a Prolog program, remove-nth(Before, After) that asserts the After list is the Before list with the removal of every n‘th item from every list at all levels.

 7. Write a Prolog program, remove-nth(Before, After) that asserts the After list is the Before list with the removal of every n‘th item from every list at all levels.


del(1,[_|T],T).

del(P,[X|Y],[X|R]):-

 P1 is P-1,

 del(P1,Y,R).



dalpos(P,L,R):-

 P1 is P-1,

 del(P1,L,R1),

 del(P,R1,R).


OUTPUT:


del(2,[10,20,30,40],X).

X = [10, 30, 40]

Next101001,000 Stop


9. Write a Prolog program to implement palindrome (List).

 9. Write a Prolog program to implement palindrome (List). 


pal([]):- write('palindrome').

pal([_]):- write('palindrome').

pal(L) :-

 append([H|T], [H], L),

 pal(T) ;write('Not a palindrome').


OUTPUT:

pal([1,2,1]).

palindrome

1true

Next101001,000 Stop

pal([1,2,2]).

Not a palindrome

1true


6. Write a Prolog program to remove the Nth item from a list.

 6. Write a Prolog program to remove the Nth item from a list. 

del(1,[_|T],T).

del(P,[X|Y],[X|R]):-

 P1 is P-1,

 del(P1,Y,R).


OUTPUT:

del(2,[1,2],X).

X = [1]

Next101001,000 Stop

del(3,[1,2,3,4],X).

X = [1, 2, 4]

Next101001,000 Stop

del(5,[1,2,3,4],X).

false


5. Write a prolog program, insert_nth(item, n, into_list, result) that asserts that result is the list into_list with item inserted as the n‘th element into every list at all levels.

 5. Write a prolog program, insert_nth(item, n, into_list, result) that asserts that result is the list into_list with item inserted as the n‘th element into every list at all levels. 


insert_nth(Item,1,List,[Item|List]).

insert_nth(Item,Pos,[H|List],[H|Result]):-Pos1 is Pos-1,insert_nth(Item,Pos1,List,Result).





OUTPUT:

insert_nth(5,1,[2],X).
X = 2


insert_nth(5,1,[9,8,7,6],Y).
Y = [59876]