翠竹的同学都在某德资企业工作,溪兰是翠竹的大学同学,洞松是该德资企业的部门经理。 该德资企业的员工有些来自淮安。该德资企业的员工都曾到德国研修,他们都会说德语。 以下哪项可以从以上陈述中得出?(MBA.2013.51) (A)洞松与溪兰是大学同学。 (B)翠竹的大学同学有些是部门经理。 (C)翠竹与洞松是大学同学。 (D)溪兰会说德语。 (E)洞松来自淮安。
xxxxxxxxxx91work(X,dezi):-tongxue(cuizu,X).2tongxue(cuizu,xilan).3work(dongsong,dezi).4speak(X,deyu):-work(X,dezi).5answer:-6tongxue(cuizu,dongsong).78?- answer.9false.
通过尝试各个选项,可以得出(D)是正确的。
xxxxxxxxxx51answer:-2speak(xilan,deyu).34?- answer.5true.
张老师让小李、小王、小赵和小杨四位同学确认徐州会战、南京保卫战、湘西会战、淞沪会战四场战役的先后顺序。
子集验证函数
xxxxxxxxxx161subset([],_).2subset([X|Y], Z):-3member(X,Z),4subset(Y,Z).56?- subset([],[a,b,c]).7true.89?- subset([c,b],[a,b,c]).10true .1112?- subset([c,d],[a,b,c]).13false.1415?- subset([a,b,c],[a,b]).16false.
元素互异验证函数
xxxxxxxxxx161unique([]).2unique([X|Y]):-3not(member(X, Y)),4unique(Y).56?- unique([]).7true.89?- unique([a,a,b]).10false.1112?- unique([a,b]).13true.1415?- unique([a,b,c]).16true.
匹配计数函数
xxxxxxxxxx201total([], _, 0).2total([A1|A2], [B1|B2], N):-3(A1=B1, N1=1; A1\=B1, N1=0),4total(A2, B2, N2),5N is N1+N2.67?- total([], _, X).8X = 0.910?- total([a,b,d,c],[d,b,a,c],X).11X = 2.1213?- total([a,b,c,d],[d,b,a,c],X).14X = 1.1516?- total([a,b,c],[d,b,a,c],X).17X = 1.1819?- total([a,b,d,c],[d,b,a,c],2).20true.
确定顺序
xxxxxxxxxx171answer:-2Orders=[_,_,_,_],3subset(Orders, [1,2,3,4]),4unique(Orders),5total(Orders, [1,2,3,4], Li),6Li=1,7total(Orders, [1,3,4,2], Wang),8Wang=1,9total(Orders, [4,3,1,2], Zhang),10Zhang=0,11total(Orders, [4,2,3,1], Yang),12Yang=2,13write(Orders).1415?- answer.16[3,2,4,1]17true.
确定顺序函数
xxxxxxxxxx161getOrders(Orders):-2Orders=[_,_,_,_],3subset(Orders, [1,2,3,4]),4unique(Orders),56total(Orders, [1,2,3,4], Li),7Li=1,8total(Orders, [1,3,4,2], Wang),9Wang=1,10total(Orders, [4,3,1,2], Zhang),11Zhang=0,12total(Orders, [4,2,3,1], Yang),13Yang=2.1415?- getOrders(Orders).16Orders = [3, 2, 4, 1].
确定选项函数
xxxxxxxxxx101determineAnswer(X,Orders):-2getOrders(Orders),3((X=a, nth0(1,Orders,1,_));4(X=b, nth0(2,Orders,2,_));5(X=c, \+(nth0(0,Orders,3,_)));6(X=d, \+(nth0(3,Orders,4,_)))).78?- determineAnswer(X,Orders).9X = d,10Orders = [3, 2, 4, 1].
完整程序
321subset([],_).2subset([X|Y], Z):-3member(X,Z),4subset(Y,Z).56unique([]).7unique([X|Y]):-8not(member(X, Y)),9unique(Y).1011total([], _, 0).12total([A1|A2], [B1|B2], N):- (A1=B1, N1=1; A1\=B1, N1=0), total(A2, B2, N2), N is N1+N2.1314getOrders(Orders):-15Orders=[_,_,_,_],16subset(Orders, [1,2,3,4]),17unique(Orders),18total(Orders, [1,2,3,4], Li),19Li=1,20total(Orders, [1,3,4,2], Wang),21Wang=1,22total(Orders, [4,3,1,2], Zhang),23Zhang=0,24total(Orders, [4,2,3,1], Yang),25Yang=2.2627determineAnswer(X,Orders):-28getOrders(Orders),29((X=a, nth0(1,Orders,1,_));30(X=b, nth0(2,Orders,2,_));31(X=c, \+(nth0(0,Orders,3,_)));32(X=d, \+(nth0(3,Orders,4,_)))).