Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу алгоритм маркова на прологе 5.2
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
maksim24680 maksim24680 вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.09.2014
По умолчанию алгоритм маркова на прологе 5.2 - 30.09.2014, 22:27

Есть алфавит А={f,h,p}.В слове Р заменить на f только первую пару ph, если такая имеется. вот все лабораторные сдал уже, кроме этой, с заменой туговато у меня, помогите пожалуйста!!
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 30.09.2014, 23:07

Воспользуйтесь в цикле предикатом frontstr(P,2,"ph",_). Как только он будет успешен, то подставляйте в собираемую строку "f".
Ответить с цитированием
  (#3 (permalink)) Старый
compasses compasses вне форума
Member
 
Сообщений: 44
Сказал(а) спасибо: 1
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 25.02.2014
По умолчанию 01.10.2014, 10:23

Само условие заложи в пролог и все:
prolog Код:
change_ph_f([],[]).
change_ph_f(['p','h'|T], ['f'|T]) :- !.
change_ph_f([H|T], [H|Result]) :- change_ph_f(T, Result).
:- change_ph_f([p,f,f,f,p,p,p,h], X).
X = [p, f, f, f, p, p, f].
:-change_ph_f([p,f,f,f,p,h,p,h,p], X).
X = [p, f, f, f, f, p, h, p].
Ответить с цитированием
  (#4 (permalink)) Старый
amatory1234 amatory1234 вне форума
Новичок
 
Сообщений: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2014
По умолчанию 01.10.2014, 12:19

Цитата:
Сообщение от Винитарх Посмотреть сообщение
Воспользуйтесь в цикле предикатом frontstr(P,2,"ph",_). Как только он будет успешен, то подставляйте в собираемую строку "f".
мне тоже нужна такая программа, только я в прологе еле разобрался с родителями,родственниками, можете написать всю программу? я буду очень благодарен
Ответить с цитированием
  (#5 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 01.10.2014, 17:57

Цитата:
Сообщение от amatory1234 Посмотреть сообщение
мне тоже нужна такая программа, только я в прологе еле разобрался с родителями,родственниками, можете написать всю программу? я буду очень благодарен
1) Vip5.2 у меня не установлен. Смысла нет. Я работаю в VIP7.5. Но я по старой памяти написал совет-идею использовать frontstr(P,2,"ph",_). Попробуйте сами, а я подскажу, если что не получается.
2) Задача о родственниках уже 100500 раз здесь решалась. Воспользуйтесь поиском или задавайте конкретные вопросы.
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
maksim24680 maksim24680 вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.09.2014
По умолчанию 22.10.2014, 17:37

то есть как то так?
prolog Код:
p(W,S):-frontstr(2,W,C,W1), frontstr(2,W1,"ph",_),
            concat(C,"f",C1),
            !, p(W1,S1), concat(C1,S1,S).
просто допустим один символ на f получается заменить, но чтоб сразу ph на f никак не получется
Ответить с цитированием
  (#7 (permalink)) Старый
goal goal вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 2
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 16.10.2014
По умолчанию 22.10.2014, 20:54

frontstr(2,W,C,W1) отрывает по две буквы. А что будет если перед сочетанием "ph" нечетное число букв?? Например, "fphphp" ? По-моему ваш код работать не будет.
prolog Код:
main:-pfh("fphphp", R), write(R), nl.
  pfh("", "").
  pfh(X, Res):-  frontchar(X, C1, Ost), C1='p', frontchar(Ost, C2, Ost2), C2='h', !,
         concat("f", Ost2, Res).
  pfh(X, Res):- frontchar(X, C1, Ost), pfh(Ost, Res2), frontchar(Res, C1, Res2).
Ответить с цитированием
Пользователь сказал cпасибо:
maksim24680 (22.10.2014)
  (#8 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 22.10.2014, 23:12

От Турбы до VIP5.2:
Visual Prolog Код:
p(W,S):-concat("ph",R,W), concat("f",R,S),!.
p(W,S):-frontchar(W,C,W1),!,p(W1,S1), frontchar(C,S1,S).
p("","").
В современном VIP (например VIP7.5) в классе string есть функция замены первого вхождения подстроки в строку:
Visual Prolog Код:
S = replaceFirst(W,"ph","f")
Ответить с цитированием
Пользователь сказал cпасибо:
maksim24680 (22.10.2014)
  (#9 (permalink)) Старый
maksim24680 maksim24680 вне форума
Member
 
Сообщений: 14
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.09.2014
По умолчанию 22.10.2014, 23:29

prolog Код:
p(W,S):-frontchar(W,C,W1),!,p(W1,S1), frontchar(S,C,S1).
вот так всё считает как надо, огромное спасибо!!!!!!
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Машины Тьюринга, Алгоритмы Маркова dinka Вопросы начинающих программистов 0 28.08.2013 13:10
БД на Прологе BadLady Prolog 5 18.12.2011 18:43
Алгоритм Маркова как с ним работать [k] Вопросы начинающих программистов 0 27.06.2011 04:33
Реализовать на Lisp алгоритм Маркова xmtgx Lisp 16 01.06.2009 19:54
Балда на прологе skyborn21 Prolog 1 30.11.2007 00:51
CGI на прологе Александр Рябов Prolog 3 20.10.2006 00:31
Алгоритм Бута ускоренный алгоритм умножения чисел MrPIT Алгоритмы 0 20.05.2006 18:12
БД на Прологе TTpum Prolog 39 20.04.2006 16:20
Цепи Маркова генерация текста Ігорко Алгоритмы 11 14.02.2006 00:16
Алгоритм Маркова! Help Olli Prolog 1 07.01.2006 22:23
Код программы на Visual Prolog Алгоритм Флойда и Алгоритм Дейкстры r Вопросы начинающих программистов 2 08.12.2005 00:34
На Прологе? PIT!!! Prolog 0 21.04.2005 14:07



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