⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ass2.pro

📁 it is program discuss prolog
💻 PRO
字号:
% Author:       Tran minh long K51CC
% Date: 5/24/2009

% Bai1--------------- tap day con cua tap cho truoc.---------

subsets([],[]).


subsets([X|X1],[X|X2]):-subsets(X1,X2).


subsets([_|X1],X2):-subsets(X1,X2).



%Tim tat ca tap con cua Set thoa man subsets(Set,S)					
allsubsets(Set,Allsubsets):-findall(S,subsets(Set,S),Allsubsets).






% Bai2--------------xoa ngoac vuong------------------

change([],[]). %Menh de doi cho 2 tap rong

change([A],[A]).%Menh de doi cho 2 tap hop nhu nhau 


 %Su kien Neu doi cho Tail va Rest thi duoc ket qua.
change([First,Second|Tail],[Second,First|Rest]):- change(Tail,Rest).


%lenh flatten de lam phang danh sach da duoc change().
reversepairsandflatten(List,Result):- change(List,Changed), flatten(Changed,Result). 






% Bai3--------------Di chuc.-----------------------



%Quan he cha me trong gia dinh

parents(mark, peter, linda).
parents(fiona, peter, linda).
parents(andrea, andrew, fiona).
parents(john, andrew, fiona).
parents(eileen, alan, andrea).
parents(jane, alan, andrea).


%Bang cap cua tung nguoi
%hold_degree: co bang cap

hold_degree(peter, phd).
hold_degree(mark, phd).
hold_degree(fiona, phd).


hold_degree(mark, msc).
hold_degree(linda, msc).
hold_degree(andrea, msc).

hold_degree(andrew, bsc).
hold_degree(john, bsc).
hold_degree(alan, bsc).
hold_degree(eileen, bsc).
hold_degree(jane, caodang).



% gioi tinh la nam.
male(peter).
male(andrew).
male(alan).
male(john).
male(mark).




% vi tu dinh nghia bang bsc,msc,phd nhu bang uni.
hold_degree(Person,uni):-
	hold_degree(Person,phd),!.
hold_degree(Person,uni):-
	not(hold_degree(Person,phd)),
	hold_degree(Person,bsc),!.
hold_degree(Person,uni):-
	not(hold_degree(Person,phd)),
	not(hold_degree(Person,bsc)),
	hold_degree(Person,msc),!.



% vi tu dinh nghia anh chi em.
sibling(X,Y):-
	parents(X,A,B),
	parents(Y,A,B),
	X \= Y.

% vi tu dinh nghia quan he chu, bac trai.
uncle(X,Y):-parents(X,A,_),sibling(A,Y),male(Y).
uncle(X,Y):-parents(X,_,B),sibling(B,Y),male(Y).
uncle(X,Y):-parents(X,A,_),sibling(A,B),parents(_,Y,B).
uncle(X,Y):-parents(X,_,A),sibling(A,B),parents(_,Y,B).

     
%vi tu dinh nghia quan he co, bac gai.
aunt(X,Y):-parents(X,A,_),sibling(A,Y),not(male(Y)).
aunt(X,Y):-parents(X,_,A),sibling(A,Y),not(male(Y)).
aunt(X,Y):-parents(X,A,_),sibling(A,B),parents(_,B,Y).
aunt(X,Y):-parents(X,_,A),sibling(A,B),parents(_,B,Y).


%Cac vi tu lien quan den thua huong
%chu bac co phd.
uncle_phd(Person,Uncle):-uncle(Person,Uncle),hold_degree(Uncle,phd).
%co di co phd.
aunt_phd(Person,Aunt):-aunt(Person,Aunt),hold_degree(Aunt,phd).
%anh chi em co bang dai hoc.
sibling_uni(Person,Sibling):-sibling(Person,Sibling),hold_degree(Sibling,uni).


% vi tu dem so phan tu trong list.
count([],0):-!.
count([_|R],N):-count(R,N1),N is N1 + 1.




% vi tu dem so chu, bac co phd cua 1 nguoi.
count_uncle_phd(Person,Total):-
	findall(Uncle,uncle_phd(Person,Uncle),List),
	count(List,Total).

% vi tu dem so co, di cua 1 nguoi.
count_aunt_phd(Person,Total):-
	findall(Aunt,aunt_phd(Person,Aunt),List),
	count(List,Total).

% vi tu dem so anh em co bang dai hoc cua 1 nguoi.
count_sibling_uni(Person,Total):-
	findall(Sibling,sibling_uni(Person,Sibling),List),
	count(List,Total).




% tong tien thua huong tu chu,bac co phd.
totalinheritance_from_uncle(Person,Amount):-
	count_uncle_phd(Person,N),
	Amount is N*2000.

% tong tien thua huong tu co, di co phd.
totalinheritance_from_aunt(Person,Amount):-
	count_aunt_phd(Person,N),
	Amount is N*3000.

% tong tien thua huong tu anh chi em co uni.
totalinheritance_from_sibling(Person,Amount):-
	count_sibling_uni(Person,N),
	Amount is N*100.

% tong tien co duoc tu bang phd cua nguoi do la 0 neu khong co.
totalinheritance_from_phd(Person,Amount):-
	not(hold_degree(Person,phd)),
	Amount is 0.

% tong tien co duoc tu bang phd cua nguoi do co phd.
totalinheritance_from_phd(Person,Amount):-
	hold_degree(Person,phd),
	Amount is 100000.



totalinheritance(Person,Total):-
	totalinheritance_from_uncle(Person,Amount1),
	totalinheritance_from_aunt(Person,Amount2),
	totalinheritance_from_sibling(Person,Amount3),
	totalinheritance_from_phd(Person,Amount4),
	Total is Amount1+Amount2+Amount3+Amount4.



	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -