Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Нужно перевести код из Turbo Prolog в Visual Prolog
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
GGHz GGHz вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.12.2012
Post Нужно перевести код из Turbo Prolog в Visual Prolog - 06.12.2012, 21:25

Здравствуйте.
Нашел вроде бы рабочий код по поиску пути в лабиринте, но он на Turbo Prolog, а нужно чтобы был на Visual Prolog. Кто может помогите пожалуйста.
Visual Prolog Код:
trace
domains
    m=a*   
    a=a(i,j)
    j=integer
    i=integer
   
database
waydb(m,i) %база данных

predicates
    can_go(a,m)
    wall(i,j)  
    no_wall(i,j)
    member(a,m)
    finish(i,j)
    way(a,m,m)
    writemaze(i,j)
    draw(m)
    all(m)
    short(a,m)
    shortest(m,i,i,m)
    length(m,i)
clauses
    wall(1,1).
    wall(2,1).
    wall(3,1).
    wall(5,1).
    wall(6,1).
    wall(1,2).
    wall(2,2).
    wall(6,2).
    wall(1,4).
    wall(2,4).
    wall(3,4).
    wall(5,4).
    wall(6,4).
    wall(2,5).
    wall(1,5).
    wall(3,5).
    wall(6,5).
    wall(1,6).
    wall(2,6).
    wall(3,6).
    wall(4,6).
    wall(6,6).
    no_wall(1,3).
    no_wall(2,3).
    no_wall(3,3).
    no_wall(4,3).
    no_wall(5,3).
    no_wall(6,3).
    no_wall(4,4).
    no_wall(5,5).
    no_wall(5,6).
    no_wall(4,5).
    no_wall(4,1).
    no_wall(4,2).
    no_wall(3,2).
    no_wall(5,2).
    finish(1,3).
    finish(5,6).
    finish(6,3).
draw(P):-short(a(4,1),P),writemaze(1,1). %находит сымый короткий путь и рисует лабиринт
all(P):-way(a(4,1),P,[a(4,1)]).   %выводит все пути



way(a(I,J),[a(I,J)],_):-finish(I,J).


way(a(I,J),[a(I,J)|P],Was):-
 K = I-1,
 can_go(a(K,J),Was),
 way(a(K,J),P,[a(K,J)|Was]).

way(a(I,J),[a(I,J)|P],Was) :-
K = I+1,
can_go(a(K,J),Was),
way(a(K,J),P,[a(K,J)|Was]).

way(a(I,J),[a(I,J)|P],Was) :-
L = J-1,
can_go(a(I,L),Was),
way(a(I,L),P,[a(I,L)|Was]).

way(a(I,J),[a(I,J)|P],Was) :-
L = J+1,
can_go(a(I,L),Was),
way(a(I,L),P,[a(I,L)|Was]).

can_go(a(I,J),Was) :-
no_wall(I,J),
not(member(a(I,J), Was)).

member(I,[I|_]).
member(I,[_|P]):-member(I,P).

writemaze(6,7):-write("\10\13"),!.
writemaze(N,7):-B=N+1,write("\10\13"), writemaze(B,1).
writemaze(N,M):- wall(N,M), write("***"),K=M+1, writemaze(N,K);
         no_wall(N,M), write("   "),K=M+1, writemaze(N,K).


short(a(I,J),Pos):-
assert(waydb([],10000)), %добавление в БД
way(a(I,J),New,[a(I,J)]),
length(New,New_length),nl, %подсчитываем длину найденного пути
waydb(_,Old_length),
shortest(New,New_length,Old_length,Pos).

short(_,P):-retract(waydb(P,_)).

shortest(New, New_length, Old_length, Pos):-
New_length<Old_length,nl, %nl -переход на новую строку
retract(waydb(_,Old_length)), %удаление старого, более длинного пути
Pos=New,
assert(waydb(New,New_length)),fail. %добавление нового пути в БД

length([],0).
length([_|H],New_length):-length(H,L1),New_length=L1+1.

Последний раз редактировалось Винитарх; 06.12.2012 в 22:12
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,955
Сказал(а) спасибо: 2
Поблагодарили 302 раз(а) в 302 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 06.12.2012, 22:13

Какой версии Visual Prolog?
Ответить с цитированием
  (#3 (permalink)) Старый
GGHz GGHz вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.12.2012
По умолчанию 06.12.2012, 22:45

Visual Prolog 5.2
Ответить с цитированием
  (#4 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,955
Сказал(а) спасибо: 2
Поблагодарили 302 раз(а) в 302 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 07.12.2012, 00:54

Ничего переводить не надо. Только удалите первую строчку (trace)
Ответить с цитированием
  (#5 (permalink)) Старый
GGHz GGHz вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 06.12.2012
По умолчанию 07.12.2012, 01:38

Уже пробовал, вылетает ошибка:
E;Test_Goal, pos: 1, 427 To generate an object module the program must contain a goal
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,955
Сказал(а) спасибо: 2
Поблагодарили 302 раз(а) в 302 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 07.12.2012, 19:49

Ну так добавьте раздел goal. Он там, где Вы взяли прогу.
Ответить с цитированием
  (#7 (permalink)) Старый
aag aag вне форума
ушёл... не вернётся)))
 
Сообщений: 3,400
Сказал(а) спасибо: 0
Поблагодарили 82 раз(а) в 82 сообщениях
Регистрация: 29.11.2008
По умолчанию 07.12.2012, 22:01

Цитата:
Сообщение от GGHz Посмотреть сообщение
Нашел вроде бы рабочий код по поиску пути в лабиринте
И Вы проверяли, что рабочий?!)))
Ответить с цитированием
  (#8 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,781
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 08.12.2012, 19:46

Да уж (дореформились )
Visual Prolog Код:
goal
draw(P).
или
Visual Prolog Код:
goal
all(P).
В коде ведь комментарии есть! Хотя бы посмотреть на него надо было бы.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос программ из {TurboProlog.....Visual Prolog 5.2} в Visual Prolog 7 imported_Jenny_ Prolog 30 25.03.2013 19:15
turbo prolog seadevil Prolog 1 29.11.2011 17:48
код из turbo prolog в visual prolog posleg Prolog 4 13.06.2011 00:33
Экспертная система на pdc prolog или visual prolog Anton7 Prolog 8 12.05.2011 13:39
Помогите переделать задачу из Turbo Prolog в Visual Prolog 5 imported_Anneta Prolog 3 23.12.2010 22:59
Turbo Prolog VeRRa Задания за деньги 4 17.11.2009 11:20
Кто возьмется переписать маленькую программу с Turbo Prolog на Visual Prolog 5.0 (за плату) olik567 Prolog 4 07.10.2009 17:46
Возможно ли перевести эту программу на Visual Prolog? byshevski Prolog 5 19.11.2008 16:47
Кто возьмется переписать маленькую программу с Turbo Prolog на Visual Prolog 5.0 (за плату) Игоревна Задания за деньги 16 04.01.2008 17:20
Нужно решить задачу на TURBO-PROLOG Надюшка Prolog 6 12.10.2006 22:28
Отличие SWI-Prolog от Turbo Prolog ndn Prolog 1 25.01.2006 12:47
Как переделать Prolog-D на Turbo-Prolog Anonymous Prolog 19 02.01.2004 20:05



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов