Арифметическая прогрессия - Prolog
Формулировка задачи:
Дать определение N-ного члена арифметической прогрессии.
Помогите пожалуйста.
Решение задачи: «Арифметическая прогрессия»
textual
Листинг программы
marka("russkie1"). marka("bolgarskie"). marka("chewskie"). marka("russkie2"). odinakovie(X,X). odinakovie("russkie1","russkie2"). odinakovie("russkie2","russkie1"). solution(Y1,Y2,Y3,Y4):- marka(Y1),marka(Y2),not(Y1=Y2), marka(Y3),not(Y1=Y3),not(Y2=Y3), marka(Y4),not(Y1=Y4),not(Y2=Y4),not(Y3=Y4), not(odinakovie(Y1,Y2)), not(odinakovie(Y1,Y4)), not(odinakovie(Y3,Y4)), not(odinakovie(Y1,Y3)), not(odinakovie(Y2,Y4)), not(Y1="bolgarskie").
Объяснение кода листинга программы
В коде присутствуют следующие элементы:
- Три переменные: Y1, Y2, Y3, Y4, которые являются строками.
- Два предиката: marka и odinakovie.
- Предикат marka описывает маркировку элементов. Он принимает два аргумента, первый из которых обозначает текущий элемент, а второй — маркировку этого элемента.
- Предикат odinakovie описывает уникальность элементов. Он принимает три аргумента, первые два из которых обозначают текущие элементы, а третий — их взаимное расположение (первый элемент, второй элемент, взаимное расположение).
- Предикат solution описывает решение задачи. Он принимает четыре аргумента, которые соответствуют четырем найденным элементам.
- В коде присутствуют три строки, которые обозначают маркировку элементов:
russkie1
,bolgarskie
,chewskie
,russkie2
. - В коде присутствуют следующие факты:
— два факта для предиката marka:
— факт marka(
russkie1
) описывает, что первый элемент имеет маркировкуrusskie1
; — факт marka(bolgarskie
) описывает, что второй элемент имеет маркировкуbolgarskie
; — факт marka(chewskie
) описывает, что третий элемент имеет маркировкуchewskie
; — факт marka(russkie2
) описывает, что четвертый элемент имеет маркировкуrusskie2
; — два факта для предиката odinakovie: — факт odinakovie(russkie1
,russkie2
) описывает, что первый и второй элементы не могут быть одинаковыми; — факт odinakovie(russkie2
,russkie1
) описывает, что второй и первый элементы не могут быть одинаковыми; — факт not(Y1=bolgarskie
) описывает, что первый элемент не может иметь маркировкуbolgarskie
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д