Ошибка visual prolog
Формулировка задачи:
Доброго времени суток!
Написала прогу по задаче:
Познакомим читателей с тремя людьми: Аладаром, Белой и Балашом. Один из них аптекарь, другой - бухгалтер, третий - агроном. Один живет в Будапеште, другой- в Бекешчабе, третий - в Асоде. Требуется выяснить, кто где живет и у какого какая профессия.
Извсетно лишь, что
1 Балаш бывает в Будапеште лишь наездами и то весьма редко, хотя все его родственники постоянно живут в столице;
2 у двух из этих людей название профессий и городов, в которых они живут, начинаются с той же буквы, что и их имена;
3 жена аптекаря доводится Балашу младшей сестрой.
Как правильно составить правила для данной задачи и где мои ошибки? При запуске пишете синтаксис ошибка!
Вот сам код (visual prolog 7.5):
При запуске выдает ошибки: Type Action Description Filename Path
e150 Syntax error main.pro
Листинг программы
- % Copyright
- implement main
- open core
- domains
- name,town,job,condition= string
- predicates
- nondeterm name(string)
- nondeterm town(string)
- nondeterm job(string)
- nondeterm condition1(string,string,string)
- nondeterm condition2(string,string,string)
- nondeterm condition3(string,string,string)
- nondeterm condition4(string,string,string)
- nondeterm condition5(string,string,string)
- nondeterm man(string, string, string,string,string,string,string,string,string)
- clauses
- run() :-
- name(Balash).
- name(Bela).
- name(Aladar).
- town(Budapest).
- town(Bekescsaba).
- town(Aszod).
- job(aptekar).
- job(agronom).
- job(buhgalter).
- /* устанавливаем взаимооднозначные соответствия*/
- /* между множеством имён, городов и профессий X - name, Y - town, Z - job*/
- condition1 (X,Y,Z) :- name(X), town(Y), job(Z),
- X=Balash, not (Y=Budapest), not (Z=aptekar), Y<>Z.
- condition2 (X,Y,Z) :- name(X), town(Y), job(Z),
- X=Balash, not (Y=Aszod), not (Z=agronom), Y<>Z.
- condition3 (X,Y,Z) :- name(X), town(Y), job(Z),
- X=Bela, not(Y=Bekescsaba), not (Z=buhgalter), Y<>Z.
- condition4 (X,Y,Z) :- name(X), town(Y), job(Z),
- X=Bela, not(Y=Aszod), not (Z=agronom), Y<>Z.
- condition5 (X,Y,Z) :- name(X), town(Y), job(Z),
- X=Aladar, not (Y=Bekescsaba), not(Z=agronom), Y<>Z.
- man(X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3):-
- X1=Balash, condition (X1,Y1,Z1),
- X2=Bela, condition (X2,Y2,Z2),
- X3=Aladar, condition (X3,Y3,Z3),
- Y1<>Y2, Y2<>Y3, Y1<>Y3,
- Z1<>Z2, Z2<>Z3, Z1<>Z3.
- % succeed. % place your own code here
- end implement main
- goal
- man(X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3),
- write(X1," town- ",Y1," job- ",Z1),nl,
- write(X2," town- ",Y2," job- ",Z2),nl,
- write(X3," town- ",Y3," job- ",Z3),nl.
- %console::runUtf8(main::run).
Решение задачи: «Ошибка visual prolog»
textual
Листинг программы
- % Copyright
- implement main
- open core
- domains
- name[COLOR="Red"],[/COLOR]town,job,condition= string
- predicates
- [COLOR="red"] n[/COLOR]ondeterm name(string)
- nondeterm town(string)
- nondeterm job(string)
- nondeterm condition(string,string,string)
- nondeterm man(string, string, string,string,string,string,string,string,string)
- clauses
- run() :-
- man(X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3),
- succeed. % place your own code here
- name(Balash).
- name(Bela).
- name(Aladar).
- town(Budapest).
- town(Bekescsaba).
- town(Aszod).
- job(aptekar).
- job(agronom).
- job(buhgalter).
- /* устанавливаем взаимооднозначные соответствия*/
- /* между множеством имён, городов и профессий X - name, Y - town, Z - job*/
- condition(X,Y,Z) :- name(X), town(Y), job(Z),
- X=Balash, not (Y=Budapest), not (Z=aptekar), Y<>Z.
- condition(X,Y,Z) :- name(X), town(Y), job(Z),
- X=Bela, not(Y=Aszod), not (Z=agronom), Y<>Z.
- condition(X,Y,Z) :- name(X), town(Y), job(Z),
- X=Aladar, not (Y=Bekescsaba), not(Z=buhgalter), Y<>Z.
- man(X1,Y1,Z1,X2,Y2,Z2,X3,Y3,Z3):-
- X1=Balash, condition (X1,Y1,Z1),
- X2=Bela, condition (X2,Y2,Z2),
- X3=Aladar, condition (X3,Y3,Z3),
- Y1<>Y2, Y2<>Y3, Y1<>Y3,
- Z1<>Z2, Z2<>Z3, Z1<>Z3.
- end implement main
- goal
- console::runUtf8(main::run).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д