Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Офтопик > Работа > Задания за деньги
Перезагрузить страницу Переписать программу из SWI-Prolog в Visual Prolog
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
enulinum enulinum вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 28.05.2014
По умолчанию Переписать программу из SWI-Prolog в Visual Prolog - 28.05.2014, 19:28

Здравствуйте, есть код программы на SWI-Prolog, который нужно переписать на Visual Prolog 5.2 либо Visual Prolog 6.1. Нужно сделать до 2 июня.

Сам код:
prolog Код:
:- dynamic cell/2.
:- dynamic maze/3.
:- dynamic path/1.
 
maze_solve(Lig,Col) :-
    retractall(cell(_,_)),
    retractall(maze(_,_,_)),
    retractall(path(_)),
 
    % initialisation of the neighbours of the cells
    forall(between(0, Lig, I),
           (   forall(between(0, Col, J), assert(maze(I, J, []))))),
 
    % creation of the window of the maze
    new(D, window('Maze')),
    forall(between(0,Lig, I),
           (XL is  50, YL is I * 30 + 50,
        XR is Col * 30 + 50,
        new(L, line(XL, YL, XR, YL)),
        send(D, display, L))),
 
    forall(between(0,Col, I),
           (XT is  50 + I * 30, YT is 50,
        YB is Lig * 30 + 50,
        new(L, line(XT, YT, XT, YB)),
        send(D, display, L))),
 
    SX is Col * 30 + 100,
    SY is Lig * 30 + 100,
    send(D, size, new(_, size(SX, SY))),
    L0 is random(Lig),
    C0 is random(Col),
    assert(cell(L0, C0)),
    \+search(D, Lig, Col, L0, C0),
    send(D, open),
 
    % we look for a path from cell(0, 0) to cell(Lig-1, Col-1)
    % creation of the entrance
    erase_line(D, -1, 0, 0, 0),
 
    % creation of the exit
    Lig1 is Lig-1,
    Col1 is Col-1,
    erase_line(D, Lig1, Col1, Lig, Col1),
 
    % seraching the path
    assert(path([[0, 0], [-1, 0]])),
    walk(Lig, Col),
    path(P),
    display_path(D, P).
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
walk(Lig, Col) :-
    path([[L, C] | _R]),
    L is Lig - 1,
    C is Col - 1,
    retract(path(P)),
    assert(path([[Lig, C]|P])).
 
walk(Lig, Col) :-
    retract(path([[L, C] | R])),
    maze(L, C, Edge),
    member([L1, C1], Edge),
    \+member([L1, C1], R),
    assert(path([[L1,C1], [L, C] | R])),
    walk(Lig, Col).
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
display_path(_, []).
 
display_path(D, [[L, C] | R]):-
    new(B, box(10,10)),
    send(B, fill_pattern, new(_, colour((значок собака)default, 0,0,0))),
    X is C * 30 + 60,
    Y is L * 30 + 60,
    send(D, display, B, point(X,Y)),
    display_path(D, R).
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
search(D, Lig, Col, L, C) :-
    Dir is random(4),
    nextcell(Dir, Lig, Col, L, C, L1, C1),
    assert(cell(L1,C1)),
    assert(cur(L1,C1)),
 
    retract(maze(L, C, Edge)),
    assert(maze(L, C, [[L1, C1] | Edge])),
    retract(maze(L1, C1, Edge1)),
    assert(maze(L1, C1, [[L, C] | Edge1])),
 
    erase_line(D, L, C, L1, C1),
    search(D, Lig, Col, L1, C1).
 
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
erase_line(D, L, C, L, C1) :-
    (   C < C1 -> C2 = C1; C2 = C),
    XT is C2  * 30 + 50,
    YT is L * 30 + 51, YR is (L+1) * 30 + 50,
    new(Line, line(XT, YT, XT, YR)),
    send(Line, colour, white),
    send(D, display, Line).
 
erase_line(D, L, C, L1, C) :-
    XT is  51 + C * 30, XR is 50 + (C + 1) * 30,
    (   L < L1 -> L2 is L1; L2 is L),
    YT is L2 * 30 + 50,
    new(Line, line(XT, YT, XR, YT)),
    send(Line, colour, white),
    send(D, display, Line).
 
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nextcell(Dir, Lig, Col, L, C, L1, C1) :-
    next(Dir, Lig, Col, L, C, L1, C1);
    (   Dir1 is (Dir+3) mod 4,
        next(Dir1, Lig, Col, L, C, L1, C1));
    (   Dir2 is (Dir+1) mod 4,
        next(Dir2, Lig, Col, L, C, L1, C1));
    (   Dir3 is (Dir+2) mod 4,
        next(Dir3, Lig, Col, L, C, L1, C1)).
 
% 0 => northward
next(0, _Lig, _Col, L, C, L1, C) :-
    L > 0,
    L1 is L - 1,
    \+cell(L1, C).
 
% 1 => rightward
next(1, _Lig, Col, L, C, L, C1) :-
    C < Col - 1,
    C1 is C + 1,
    \+cell(L, C1).
 
% 2 => southward
next(2, Lig, _Col, L, C, L1, C) :-
    L < Lig - 1,
    L1 is L + 1,
    \+cell(L1, C).
 
% 3 => leftward
next(2, _Lig, _Col, L, C, L, C1) :-
    C > 0,
    C1 is C - 1,
    \+cell(L, C1).
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,266
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 29.05.2014, 02:32

Пишите в мыло из профиля
Ответить с цитированием
Ads
Ответ

Метки
prolog , swi prolog , visual prolog

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

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

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 в Visual Prolog GGHz Prolog 7 08.12.2012 19:46
код из 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
Написать программу Visual Prolog ket Prolog 4 14.12.2010 21:18
Visual Prolog <--> ISO-Prolog z556 Prolog 33 25.12.2009 09:55
Visual Prolog v5-1 Gorshen Prolog 2 08.12.2009 18:50
Кто возьмется переписать маленькую программу с 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



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