📄 ass2.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 + -