پرولوگ پرودیکیت (prolog)

پروديكيتي بنويسيد كه مشخص كند كه آيا ليستي عضو ليست
ديگري هست يا خير به صورت پيشوندي (پرولوگ -prolog)
Prefix([x|y],[x|z]) :- Prefix(y,z)
Prefix([],L)
مثال?Prefix([a,b],[a,b,c,d])
YES
پروديكيتي بنويسيد كه دو ليست را با هم جمع كند در پرولوگ
Append([x|y],L,[x|z]) :- Append(y,L,z)
Append([],L,L)
مثال ?Append([a,b],[c,d],x)
x=[a,b,c,d]
ايا عددي عضو يك ليست هست يا خير توسط پرولوگ
Member(x,[y|z]) :- x≠y , Member(x,z)
Member(x,[x|y])
مثال?Member(b,[a,b,c])
YES
بدست آوردن عضو اخر يك ليست توسط پرولوگ
LastItem([x|y],k) :- LastItem(y,z)
LastItem([x],x)
يعني ?LastItem([a,b,c],x)
x=c
چاپ كردن يك ليست توسط پرولوگ
print_list([]):-nl. %nl = newline
print_list([H|T]):-write(H),write(’ ’),print_list(T).
يعني ?-print_list([a,b,c]).
حل فيبوناچي توسط پرولوگ
fib(1,1).
fib(2,1).
fib(N,F):- N>2,
N1 is N-1, fib(N1,F1),
N2 is N-2, fib(N2,F2),
F is F1+F2.
Depth-first search نوشتن الگوريتم اول عمق در پرولوگ
/* Depth-first search: dsearch(Initial,Final,Path) */

dsearch(I,F,P) :- dsearch(I,F,[I],P). % 3rd arg is the history

dsearch(St,F,_,[F]) :- equiv(St,F).
dsearch(St,F,H,[St|R]) :- trans_new(St,H,NSt), dsearch(NSt,F,[NSt|H],R).

trans_new(St,H,NSt) :- trans(St,NSt), new_state(H,NSt).

new_state([],_).
new_state([St|H],NSt) :- not(equiv(St,NSt)), new_state(H,NSt).
breadth-first search نوشتن الگوريم جستجوي اول سطح در پرولوگ
/* Best-first search */

bestf(I,F,P) :- bestf_([I+[]],F,P).  % 1st: list of (node+path) to expand

bestf_(LNs,F,P) :- bestf_end(LNs,F,P). % check final
bestf_(LNs,F,P) :- bestf_exp(LNs,F,P). % expand

bestf_end([N+NP|_],F,[F|NP]) :- equiv(N,F).
bestf_end([_|R],F,P) :- bestf_end(R,F,P).

bestf_exp([N+NP|R],F,P) :- all_(D+[N|NP],trans_new(N,[N|NP],D),LNs),
 append(LNs,R,NL), hsort(NL,SLNs,[]), bestf_(SLNs,F,P).
نوشتن الگوريتم (A*) in prolog
/* A* algorithm */

astar(I,F,P) :- astar_([I+[]],F,P).  % 1st: list of (node+path) to expand

astar_(LNs,F,P) :- astar_end(LNs,F,P). % check final
astar_(LNs,F,P) :- astar_exp(LNs,F,P). % expand

astar_end([N+NP|_],F,[F|NP]) :- equiv(N,F).
astar_end([_|R],F,P) :- astar_end(R,F,P).

astar_exp([N+NP|R],F,P) :- all_(D+[N|NP],trans_new(N,[N|NP],D),LNs),
 append(LNs,R,NL), asort(NL,SLNs,[]), astar_(SLNs,F,P).

asort([],L,L).    % quicksort decreasing
asort([N+NP|R],L,Lr) :- ahr(N+NP,V), apart(R,V,Sm,Lg),
 asort(Lg,L,[N+NP|S]), asort(Sm,S,Lr).

apart([],_,[],[]).
apart([N+NP|R],V,[N+NP|Ln],Lx) :- ahr(N+NP,NV), NV= apart(R,V,Ln,Lx).
apart([N+NP|R],V,Ln,[N+NP|Lx]) :- apart(R,V,Ln,Lx).

ahr(N+NP,V) :- heur(N,A), length(NP,X), D is X+1, dheur(D,B), V is A-B.

نوشتن فاكتوريل با پرولوگ در سپيدان- كامپيوتر (factorial) whit prolog
factorial(0,1).
factorial(N,X):-N>0, N1 is N-1, factorial(N1,S), X is S*N.

حل مساله برجهاي هانوي با پرولوگ در سپيدان -كامپيوتر
hanoi_tower(N):-move(N,a,b,c),!.
move(0,_,_,_):-!.
move(N,X,Y,Z):-M is N-1, move(M,X,Z,Y), info(X,Y), move(M,Z,Y,X).
info(X,Y):-write(’Move disk from ’), write(X), write(’ to ’), write(Y), nl.
move(1,X,Y,_) :-
write('Move top disk from '),
write(X),
write(' to '),
write(Y),
nl.
move(N,X,Y,Z) :-
N>1,
M is N-1,
move(M,X,Z,Y),
move(1,X,Y,_),
برنامه اي به زبان پرولوگ بنويسد كه مساله هشت وزير را حل
نمايد ؟
solution([]).
 solution([X/Y|Others]):-
    solution(Others),
    member(Y,[1,2,3,4,5,6,7,8]),
    noattack(X/Y,Others).
 noattack(_,[]).
 noattack(X/Y,[X1/Y1|Others]):-
  Y=\=Y1,
  Y1=Y=\=X1-X,
  Y1-Y=\=X-X1,
  noattack(X/Y,Others).
 member(Item,[Item|Rest]).
 member(Item,[First|Rest]).
 member(Item,Rest]).
 template([1/Y1,2/Y2,3/Y3,4/Y4,5/Y5,6/Y6,7/Y7,8/Y8]).
حالا در مد محاوره اي وارد نماييد .
?-template(S),soulution(S).
S=[1/4,2/2,3/7,4/3,5/6,6/8,7/5,8/1];
S=[1/5,2/2,3/4,4/7,5/3,6/8,7/6,8/1];
S=[1/3,2/5,3/2,4/8,5/6,6/4,7/7,8/1];
...
برنامه quick sort با پرولوگ (prolog)در سپيدان -كامپيوتر
appendx([],A,A).
appendx([H|T],A,[H|U]):-appendx(T,A,U).
splittotwo(_,[],[],[]).
splittotwo(I,[H|T],[H|U],V):- H=splittotwo(I,[H|T],U,[H|V]):- splittotwo(I,T,U,V).
quick([],[]).
quick([H|T],L):-splittotwo(H,T,U,V), quick(U,X),quick(V,Y), appendx(X,[H|Y],L).

بدست آوردن ماكزيمم يك ليست توسط پرولوگ
maximumx(P,D,V):- P>=D, V=P, !.
maximumx(P,D,V):-V=D.
max([H],H).
max([H|T],X):-max(T,S),maximumx(H,S,X).

 



مطالب مشابه :


زبان برنامه نویسی پرولوگ

مقدمه ای بر زبان برنامه نویسی پرولوگ. عموماً برنامه نویسی ویژوال پرولوگ از چهار بخش برنامه




زبان برنامه نویسی پرولوگ

نکات مهم: 1- زبان های برنامه نویسی هوش مصنوعی ابزار اصلی بررسی و ساخت برنامه های کامپیوتری




پرولوگ پرودیکیت (prolog)

آموزش برنامه نویسی سی و اسمبلی - پرولوگ پرودیکیت (prolog) - آموزش c,c++,asm,نرم افزار




دانلود نرم افزار برنامه نویسی پرولوگ Prolog + آموزش مختصر

نرم افزار برنامه نویسی پرولوگ Prolog + آموزش مختصر. با سلام. این ترم بعضی دوستان هوش مصنوعی دارن




برنامه‌نویسی

مقالات کم یاب - برنامهنویسی - پروژه مقاله تحقیق و مطالب عمومی دانشجوئی دانش آموزی و مذهبی




برنامه نويسی چيست؟

این زبان، مانند زبان برنامه‌نویسی پرولوگ، بیشتر برای برنامهنویسی هوش مصنوعی مورد




برچسب :