Задача про шахматистов - Prolog
Формулировка задачи:
Очень нужна помощь людей, кто разбирается в PROLOG. я к сожалению не очень его понимаю.
В финале турнира шахматистов встретились представители шести воинских званий: майор, капитан, лейтенант, старшина, сержант и ефрейтор.
Все они были разных специальностей : летчик, танкист, артиллерист, минометчик, сапер и связист.
Необходимо определить специальность каждого из шахматистов по следующим данным.
В первом туре лейтенант выиграл у летчика, майор у танкиста, а сержант у минометчика. Во втором туре капитан выиграл у танкиста. В третьем и четвертом турах минометчик из-за болезни не участвовал в турнире, поэтому свободными от игры оказались капитан и ефрейтор. В четвертом туре майор выиграл у связиста. Победителями турнира оказались лейтенант и майор, а хуже всех выступил сапер.
Заранее спасибо.
Решение задачи: «Задача про шахматистов»
textual
Листинг программы
domains d=symbol predicates zvanie(symbol) spec(symbol) rez(symbol,symbol) solution(symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol,symbol) clauses zvanie(major). zvanie(kapitan). zvanie(leitenant). zvanie(starshina). zvanie(serjant). zvanie(efreitor). spec(letchik). spec(tankist). spec(artilerist). spec(minometchik). spec(saper). spec(svazist). rez(X,Y):- zvanie(X),spec(Y),X=major,not(Y=letchik),not(Y=tankist),not(Y=minometchik),not(Y=svazist),not(Y=saper); zvanie(X),spec(Y),X=kapitan,not(Y=tankist),not(Y=minometchik),not(Y=svazist); zvanie(X),spec(Y),X=leitenant,not(Y=letchik),not(Y=tankist),not(Y=minometchik),not(Y=saper); zvanie(X),spec(Y),X=starshina; zvanie(X),spec(Y),X=serjant,not(Y=letchik),not(Y=tankist),not(Y=minometchik); zvanie(X),spec(Y),X=efreitor,not(Y=minometchik),not(Y=svazist). solution(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X5,Y5,X6,Y6):-zvanie(X1),zvanie(X2),zvanie(X3),zvanie(X4),zvanie(X5),zvanie(X6), spec(Y1),spec(Y2),spec(Y3),spec(Y4),spec(Y5),spec(Y6), rez(X1,Y1),rez(X2,Y2),rez(X3,Y3),rez(X4,Y4),rez(X5,Y5),rez(X6,Y6), Y1<>Y2,Y1<>Y3,Y1<>Y4,Y1<>Y5,Y1<>Y6,Y2<>Y3,Y2<>Y4,Y2<>Y5,Y2<>Y6,Y3<>Y4,Y3<>Y5,Y3<>Y6,Y4<>Y5,Y4<>Y6,Y5<>Y6, X1<>X2,X1<>X3,X1<>X4,X1<>X5,X1<>X6,X2<>X3,X2<>X4,X2<>X5,X2<>X6,X3<>X4,X3<>X5,X3<>X6,X4<>X5,X4<>X6,X5<>X6,!.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д