Задача про ферзя - Prolog

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста. Нужно составить программу, которая проверяет, что два ферзя, расположенные на шахматной доске размером 8×8, бьют друг друга.

Решение задачи: «Задача про ферзя»

textual
Листинг программы
attack(X, _, X, _).
attack(_, Y, _, Y).
attack(X1, Y1, X2, Y2) :- X1 + Y1 =:= X2 + Y2.
attack(X1, Y1, X2, Y2) :- X1 - Y1 =:= X2 - Y2.

Объяснение кода листинга программы

В коде представлены четыре утверждения (правила) в форме, понятной для языка программирования Prolog. Каждое утверждение определяет условие, при котором выполняется действие (аттак) между четырьмя сущностями (X, Y, X2, Y2).

  1. attack(X, , X, ) - это утверждение говорит о том, что если X нападает на , то X побеждает X. Здесь `представляетлюбого противника`.
  2. attack(, Y, , Y) - это утверждение говорит о том, что если любой объект нападает на Y, то Y побеждает Y. Здесь Y представляет себя.
  3. attack(X1, Y1, X2, Y2) :- X1 + Y1 =:= X2 + Y2 - это утверждение говорит о том, что если X1 нападает на Y1, а X2 нападает на Y2, и сумма X1 и Y1 равна сумме X2 и Y2, то X1 побеждает X2.
  4. attack(X1, Y1, X2, Y2) :- X1 - Y1 =:= X2 - Y2 - это утверждение говорит о том, что если X1 нападает на Y1, а X2 нападает на Y2, и разность X1 и Y1 равна разности X2 и Y2, то X1 побеждает X2.

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

8   голосов , оценка 3.75 из 5