To jest stara wersja strony!
LAB: Wprowadzenie do środowiska ECLiPSe
ECLiPSe jest jednym ze środowisk do programowania z ograniczeniami. Zapewnia ono szerokie możliwości tworzenia własnych ograniczeń oraz doboru właściwego sposobu poszukiwania rozwiązania. Składnia języka ECLiPSe jest oparta o Prolog. Istotne różnice opisane są w następującym przewodniku: http://eclipseclp.org/doc/tutorial/tutorial023.html.
1. Podstawy środowiska
Proszę utworzyć plik o poniższej zawartości (tradycyjnie pliki z kodem ECLiPSe mają rozszerzenie .ecl):
:- lib(ic).
sendmore(Digits) :-
% zmienne
Digits = [S,E,N,D,M,O,R,Y],
% przypisanie dziedziny
Digits :: [0..9],
% Ograniczenia
alldifferent(Digits),
S #\= 0,
M #\= 0,
1000*S + 100*E + 10*N + D
+ 1000*M + 100*O + 10*R + E
#= 10000*M + 1000*O + 100*N + 10*E + Y,
% szukanie rozwiązania
labeling(Digits).
Opis programu
Jest to program rozwiązujący zagadkę SEND+MORE=MONEY.
Przed uruchomieniem przeanalizuj działanie programu. Pierwsza linijka informuje, że będziemy korzystać ze standardowej biblioteki dla dziedzin skończonych. Predykat sendmore Najpierw unifikuje Digits z listą zmiennych wykorzystywanych do opisu problemu. Następnie zmiennym przypisywana jest dziedzina (liczby całkowite od 0 do 9).
Kolejnym etapem jest określenie ograniczeń. predykat alldifferent zapewnia, że wszystkie zmienne będą różne. Następnie wykorzystywane są operatory #\= oraz #= określające odpowiednio relację różności i równości. Istnieją różwnież analogiczne operatory większości i mniejszości, należy jednak pamiętać o znaku # na początku operatora.
Ostatnia linijka powoduje rozpoczęcie wyszukiwania rozwiązania.
Uruchamianie programu
Uruchom eclipse poleceniem tkeclipse.
Wybierz File>Compile i wskaż utworzony plik.
Wywołaj w Query entry predykat sendmore:
sendmore(Digits)
Zwróć uwagę, aby na liście rozwijanej z lewej strony wybrany był moduł eclipse·
Aby sprawdzić, czy nie istnieje więcej rozwiązań, wciśnij przycisk more.