Задача про шахматистов - 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,!.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5