Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % Place your solution here
- % task 10
- % В одном городе живут 5 человек. Их имена Леонид, Михаил, Николай, Олег и Петр. Их фамилии Атаров, Бартенев, Кленов, Данилин и Иванов. Бартенев знаком только с двумя из перечисленных мужчин. Петр знаком со всеми, кроме одного. Леонид знаком только с одним из всех. Данилин и Михаил незнакомы. Николай и Иванов знают друг друга. Михаил, Николай и Олег знакомы между собой. Атаров незнаком только с одним из всех. Только один из всех знаком с Кленовым. Назовите имена и фамилии каждого. С кем знаком каждый из них?
- %names: l m n o p
- %surnames: a b k d i
- knows(X, X).
- % knows(a,b).
- %knows(X,Y):-
- % knows(Y,X).
- knows(n,m).
- knows(m,o).
- knows(n,o).
- knowsMutual(X, Y):-
- knows(X, Y),!;
- knows(Y, X),!.
- %knowsSeq(X, Y):-
- % knowsMutual(X, Z),knowsMutual(Y,Z).
- knows1(X, Y, Ans) :-
- (knowsMutual(X, Y), Ans is 1,!;
- \+ knowsMutual(X, Y), Ans is 0),!.
- count_knows(_,[],0).
- count_knows(X, [Head|Tail],L):-
- count_knows(X, Tail, L1),
- knows1(X, Head, Fits),
- L is L1+Fits,
- !.
- count_knows(l,[l,m,n,o,p],1).
- count_knows(p,[l,m,n,o,p],4).
- generate([A,B,K,D,I]) :-
- Surnames=[A,B,K,D,I],
- Names=[l,m,n,o,p],
- permutation([l,m,n,o,p],[A,B,K,D,I]),
- writeln("\n A,B,K,D,I"),
- writeln([A,B,K,D,I]),
- \+ knowsMutual(m, D),
- %writeln(true),
- knowsMutual(n,I),
- writeln(true),
- count_knows(K,[l,m,n,o,p],1),
- %writeln(true),
- count_knows(B,[l,m,n,o,p],2),
- %writeln(true),
- count_knows(A,[l,m,n,o,p],4).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement