Tuesday, February 12, 2013

Learn Some Program in Prolog

How to Find Sum of Digit in prolog.
sumofdigits(X, X):-
    X < 10.

sumofdigits(X, Y):-
    X > 9, Y1 is X mod 10, X1 is X // 10, sumofdigits(X1, Z), Y is Y1 + Z.

How to Find Sort in prolog.
sort(A,B) :- permute(A,B), ordered(B).


How to Find Reverse in prolog.
reverse([ ],[ ]).
reverse([H|T],R) :- reverse(T,S), append(S,[H],R).


How to Find Prime in prolog.
divisible(X, Y):-
    N is Y*Y, N =< X, X mod Y =:= 0.

divisible(X, Y):-
     Y < X, Y1 is Y + 1, divisible(X, Y1).

isprime(X):-
    Y is 2, X > 1 , \+divisible(X, Y).

How to Find Permutation in prolog.
del(X,[X|L1],L1).
    del(X,[Y|L1],[Y|L2]):-
        del(X,L1,L2).
    permute([],[]).
    permute(L,[X|P]):-
        del(X,L,L1),
        permute(L1,P).

How to Find Parser in prolog.
s --> np, vp. 
vp --> v, np. 
np --> det, n. 
det --> []. 
det --> [the]. 
n --> [sandy]. 
n --> [egg]. 
n --> [duck]. 
v --> [ate]. 
v --> [saw].

How to Find Odd and Even element in prolog.
even(0).
even(s(s(X))):-even(X).
odd(s(0)).
odd(s(s(X))):-odd(X).


How to Find nth element in prolog.
find([],N) :-
        write("There is no such element in the list"),nl.
find([Element|List],1) :-
        write("The element is ",Element),nl.
find([Element|List],N) :-
        N1 = N-1,
        find(List,N1).

How to Find mergesort in prolog.
mergesort([], []). 
mergesort([A], [A]).

mergesort([A, B | Rest], S) :-
  divide([A, B | Rest], L1, L2),
  mergesort(L1, S1),
  mergesort(L2, S2),
  my_merge(S1, S2, S).

divide([], [], []).
divide([A], [A], []).

divide([A, B | R], [A | Ra], [B | Rb]) :-  divide(R, Ra, Rb).

my_merge(A, [], A).
my_merge([], B, B).

my_merge([A | Ra], [B | Rb], [A | M]) :-
  A =< B,
  my_merge(Ra, [B | Rb], M).
my_merge([A | Ra], [B | Rb], [B | M]) :-
  A > B,
  my_merge([A | Ra], Rb, M).

How to Find Maximum and minimum in prolog.
max(A,B,C):-
    A>B,
    A>C,
    write(A).
max(A,B,C):-
    A>B,
    write(C).
max(_,B,C):-
    B>C,
    write(B).
max(_,_,C):-
    write(C).

min(A,B,C):-
    A
    A
    write(A).
min(A,B,C):-
    A
    write(C).
min(_,B,C):-
    B
    write(B).
min(_,_,C):-
    write(C).

maxmin(A,B,C):-
    max(A,B,C),
    min(A,B,C).

How to Find list length in prolog.
listlength([ ],0).
listlength([_|T],N) :- listlength(T,M), N is 1+M.

How to Find last element in prolog.
last([X]):-
        write("\nLast element is : "),
        write(X).
        
    last([Y|Tail]):-
        last(Tail).

How to Find LCM prolog.
lcm(A,B,LCM):-
LCM=A*B/GCD.
lcm(A,B):-
gcd(A,B,GCD) :- A = B, GCD = A.
gcd(A,B,GCD) :- A < B, NB is B - A, gcd(A,NB,GCD).
gcd(A,B,GCD) :- A > B, NA is A - B, gcd(NA,B,GCD).


No comments:

Post a Comment

Vision