Un exemplu simplu de lucru de utilizare a metodelor de "tăiere și rulare înapoi" și "rulare înapoi după eșec" pentru organizarea ciclurilor în limba Prolog:
% Acest exemplu ilustrează modul de obținere a mai multor soluții posibile.
% Sunt utilizate metode: răsturnarea după eșec (ARF) și trunchierea și răsturnarea (RO)
Scop: obținerea de liste diferite de copii
predicate
copil nedeterminat (simbol, simbol)
all_childs
all_childs_Alisa
all_childs_before_Diana
first_child_Alisa
clauze
% Baza pentru copii
copil (Timur, Kozlov).
copil ("Alice", "Popova").
copil ("Eugene", "Kuznetsova").
copil ("Olya", "Frolova").
copil ("Alice", "Shapochka").
copil ("Petru", "Ivanov").
copil ("Alice", "Rublev").
% Lista tuturor copiilor - Metoda de returnare după eșec (OPN)
all_childs: - copil (X, Y), scrie (X, "", Y), nl, eșuează.
% Lista tuturor copiilor numiți Alice - Metoda de revenire după eșec (ARF)
all_childs_Alisa: - copil (X, Y), X = "Alice", scrie (X, Y), nl, eșuează.
% Lista tuturor copiilor până la Diana inclusiv - Metoda de tăiere și rulare înapoi (OO)
all_childs_before_Diana: - copil (X, Y), scrie (X, Y), nl, X = "Diana".
% Primul copil numit Alice - metoda de tăiere și de rulare înapoi (OO)
first_child_Alisa: - copil (X, Y), X = "Alice", scrie (X, Y), nl.
poartă
% write ("Lista tuturor copiilor:"), nl, all_childs.
% write ("Lista de copii numită Alice:"), nl, all_childs_Alisa.
% write ("Lista tuturor copiilor până la Diana inclusiv:"), nl, all_childs_before_Diana.
scrie ("Primul copil numit Alice:"), nl, first_child_Alisa.
Punctul de exclamare în prologul (așa-numitul operator de cut-off), în cazul în care explica pe degete, functioneaza ceva de genul: Dacă a existat performanța echipei, chiar daca sunt cauzate de regulile anterioare au fost alte soluții pentru examinare - derulare înapoi de la această regulă tot nu ar fi „!“ a făcut. Am interzis revocarea și căutarea altor soluții.
Mai mult (A, 3): - A<3.
Mai mult (A, 5): - A<5.
Mai mult (A, 8): - A<8.
Scopul este mai mare (4, număr).
Va returna răspunsul: number = 5.
Deși au existat două răspunsuri posibile: 4 și 8. Dar înainte de verificarea ultimei reguli nu am ajuns, pentru că în regula "Mai mult (A, 5): - A<5. " запретил нам откатываться к предыдущим правилам своим восклицательным знаком, на который Пролог наткнулись, когда нашёл решение "число=5".
Sam sa încurcat în ceea ce el a scris, dar este ușor de înțeles și explicat rapid))