ПредишенСледващото

Работата е един прост пример с помощта на "прекъсването и връщане назад" и "намаление на цените след провала" за организиране на Prolog цикли:

% Този пример показва как да получите най-различни възможни решения.
% Използваните методи: натиск след недостатъчност (ARF) и подрязване и натиск (GS)


% Целта на задачата: да получите различни списъци на децата

предикати
nondeterm дете (символ, символ)

all_childs
all_childs_Alisa
all_childs_before_Diana
first_child_Alisa

клаузи
База% от децата
дете ( "Тимур", "коза").
дете ( "Алиса", "Попова").
дете ( "Джак", "Кузнецов").
дете ( "Олга", "Фролов").
дете ( "Алиса", "Shapochkina").
дете ( "Петър", "Иванов").
дете ( "Алиса", "Рубльов").


% Списък на всички деца - метод на намаление на цените след провала (ОБН)
all_childs: - дете (X, Y), пише (X "," Y), NL, се провалят.

Списък% от всички деца с име Алис - метод намаление на цените след провала (ОБН)
all_childs_Alisa: - дете (X, Y), X = "Алис", пишат (X, Y), NL, се провалят.


% Списък на всички деца до и включително Диана - клипинг и намаление на цените Метод (OO)
all_childs_before_Diana: - дете (X, Y), пише (X, Y), NL, X = "Диана".

% Първо дете на име Алис - стреляйки метод и намаление на цените (GS)
first_child_Alisa: - дете (X, Y), X = "Алис", пишат (X, Y), NL.

гол
% Write ( "списък на всички деца:"), NL, all_childs.
% Write ( "Списъкът на деца с име Алиса:"), NL, all_childs_Alisa.
% Write ( "Списък на всички деца до и включително Диана"), NL, all_childs_before_Diana.
пиша ( "Първото дете на име Алиса:"), NL, first_child_Alisa.


Удивителният знак в пролога (т.нар оператор прекъсването), ако обяснете на пръстите на ръцете, работи по следния начин: Ако е имало представяне на отбора, дори и ако причинени от предишните правила са и други решения за разглеждане - намаление на цените от това правило все още няма да е "!" направен. Забранено ни е да се връщам и да намерят други решения.

Повече (A 3): - А<3.
Повече (A 5): - А<5.
Повече (А 8): - А<8.

Гол-голям (4 дни).

Ще дам отговора: Броят = 5.

Въпреки, че имаше две възможни отговори: 4 и 8. Но ние не сме достигнали последните правила за инспекция, тъй като в регулация "Повече (A 5): - А<5. " запретил нам откатываться к предыдущим правилам своим восклицательным знаком, на который Пролог наткнулись, когда нашёл решение "число=5".

Самият заплете в това, което е написано, но е ясно, и е трудно да се обясни най-бързо))

Подкрепете проекта - споделете линка, благодаря!