Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Задача Гарднера
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
toxm toxm вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.05.2014
Post Задача Гарднера - 30.05.2014, 18:54

Здравствуйте. Необходима помощь.
Заданы следующие преобразования подстрок (действуют в обе стороны):
EAT = AT
ATE = A
LATER = LOW
PAN = PILLOW
CARP = ME
Определить можно ли, пользуясь этими преобразованиями, перевести одну строку в другую?
Пример:
?-ask('LAP', 'LEAP').
LAP
LATEP
LEATEP
LEAP
Ответить с цитированием
  (#2 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 05.06.2014, 21:00

Можно использовать любую программу поиска пути на графе между двумя вершинами, хоть в глубину, хоть в ширину. Ребра - заданные преобразования. Нужно только немного уметь работать со строками. В Visual Prolog 7.x это очень просто делается.
Ответить с цитированием
  (#3 (permalink)) Старый
toxm toxm вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.05.2014
По умолчанию 25.06.2014, 11:34

Кто сможет написать? Не бесплатно естественно.
Ответить с цитированием
  (#4 (permalink)) Старый
rrrFer rrrFer вне форума
Р.Р.Р.Ф.Е.Р
 
Сообщений: 207
Сказал(а) спасибо: 12
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 08.09.2008
Адрес: Russia, Krasnoyarsk
По умолчанию 25.06.2014, 20:20

Цитата:
Кто сможет написать? Не бесплатно естественно.
ICQ 395-546-218
skype: rrrfer.rrrfer (очень внимательно вводите ник, точка по середине ника решает)


Решенные задачи на Prolog: http://pro-prof.com/forums/forum/programming/prolog-help
Введение в логическое программирование: http://pro-prof.com/archives/2362
Ответить с цитированием
  (#5 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,228
Сказал(а) спасибо: 25
Поблагодарили 49 раз(а) в 49 сообщениях
Регистрация: 16.10.2005
По умолчанию 28.06.2014, 03:45

Цитата:
Сообщение от Alison Посмотреть сообщение
Можно использовать любую программу поиска пути на графе между двумя вершинами, хоть в глубину, хоть в ширину.
Есть риск, что дерево окажется бесконечным. Тогда при отсутствии преобразования поиск зациклится
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,771
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 01.07.2014, 10:53

Чтобы не было зацикливания, нужно один параметр добавить.
Visual Prolog Код:
class facts
    arc : (string, string).
clauses
    arc("EAT", "AT").
    arc("ATE", "A").
    arc("LATER", "LOW").
    arc("PAN", "PILLOW").
    arc("CARP", "ME").

class predicates
    edge : (string [out], string [out]) nondeterm.
    path : (string, string) -> string* nondeterm.
    path : (string, string**, string*, integer) -> string* nondeterm.
clauses
    edge(X, Y):-
        arc(X, Y);
        arc(Y, X).

    path(X, Y) = path(Y, [[X]], [X], 10).

    path(Y, [[Y | Path] | _], _, _) = list::reverse([Y | Path]):- !.
    path(Y, [[X | Path] | Rest], VList, N) = path(Y, list::append(Rest, PathList), V:value, N - 1):-
        N > 0,
        V = varM::new(VList),
        PathList = [[Z, X | Path] ||
            edge(U, W),
            _ = string::search(X, U),
            Z = string::replaceFirst(X, U, W),
            not(list::isMember(Z, VList)),
            V:value := [Z | V:value]].

    run():-
        Path = path("LAP", "LEAP"),
            write(Path), nl,
        fail;
        write("..."),
        _ = readLine().
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача VBA bucha20 Задания за деньги 0 25.05.2013 17:26
Задача на VB haVVVok Visual Basic 0 03.12.2012 10:58
Задача ExTReM13 Задания за деньги 2 07.10.2012 18:06
С++. Задача licenok1_07 Вопросы начинающих программистов 7 19.10.2011 19:32
Помогите, задача по прологу, срочно...задача с высказываниями 4ixOn Prolog 6 10.07.2011 23:29
Помогите, задача по прологу, срочно...задача о станках 4ixOn Prolog 3 09.07.2011 22:48
Задача по MPI 45$ Naikon1988 Задания за деньги 2 22.12.2010 18:12
Д/Р Задача на C++ Tanzilit Задания за деньги 3 05.01.2009 15:07
Задача ,,,'..',,, Prolog 7 29.04.2008 18:09
Задача D-Za Visual Basic 0 19.04.2007 13:51
Задача по TP&7.0 Nook Pascal 1 17.01.2007 22:58



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