Арифметическая прогрессия - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д