Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу заменить каждую вторую букву в слове на а
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
lexusRX300 lexusRX300 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2014
По умолчанию заменить каждую вторую букву в слове на а - 20.10.2014, 23:17

нужно в заданном слове поменять каждую вторую букву на "а" и вывести соответственно, время позднее, в голову ничего не идёт, ерунда
prolog Код:
domains sp=string*
predicates t(sp,sp)
clauses t([],[]):-!.
t([b,a,c,d,f],[]):-([],[b,a,c,a,f]).
goal t([b,a,c,d,f]).
, а завтра надо сдать((
ну слово произвольное должно быть
Ответить с цитированием
  (#2 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 20.10.2014, 23:40

Примерно так (не запускал):
Visual Prolog Код:
predicates
p(string,string).
goal
p("wrtwetr",S), write(S).
clauses
p(W,S):-front_str(W,1,C,W1), front_str(W1,1,_,W2),
            concat(C,"a",C1),
            !, p(W2,S1), concat(C1,S1,S).
p(S,S).
Ответить с цитированием
  (#3 (permalink)) Старый
lexusRX300 lexusRX300 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2014
По умолчанию 20.10.2014, 23:56

а вот front_str в предикатах как правильно описать? ато пишется незадекларированный
Ответить с цитированием
  (#4 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 21.10.2014, 01:12

Это стандартный предикат, его объявлять не надо.
Попробуйте frontstr, ибо я уже точно не помню как он пишется в старом Прологе.
Ответить с цитированием
  (#5 (permalink)) Старый
lexusRX300 lexusRX300 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2014
По умолчанию 21.10.2014, 01:24

prolog Код:
p(W,S):-front_str(W,1,C,W1)
там ,где front_str(W,1,C,W1) пишется недопустимый тип переменной

Последний раз редактировалось lexusRX300; 21.10.2014 в 01:27
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
compasses compasses вне форума
Member
 
Сообщений: 44
Сказал(а) спасибо: 1
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 25.02.2014
По умолчанию 21.10.2014, 09:40

prolog Код:
% secondA([a,b,c,s,d,e,q,w,s,a,z], L).
% L = [a, a, c, a, d, a, q, a, s|...]
secondA([],[]).
secondA([H1,_|T], [H1,'a'|Result]) :- secondA(T, Result).
secondA([H|[]], [H]).
из строки в список-обратно переводим стандартными средствами.
Ответить с цитированием
Пользователь сказал cпасибо:
lexusRX300 (21.10.2014)
  (#7 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 21.10.2014, 16:31

compasses, Вы решили задачку в ISO-Прологе, а автор темы, судя по его исходникам, ждёт решения в типизированном Прологе.

Ну и позвольте мне подправить Ваш, compasses, исходник:
prolog Код:
secondA([H1,_|T], [H1,'a'|Result]) :- !,secondA(T, Result).
secondA(T, T).
Ответить с цитированием
  (#8 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,884
Сказал(а) спасибо: 2
Поблагодарили 293 раз(а) в 293 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 21.10.2014, 16:37

Цитата:
Сообщение от lexusRX300 Посмотреть сообщение
там ,где front_str(W,1,C,W1) пишется недопустимый тип переменной
Вы бы посмотрели лучше в справке об этом предикате, так как я вам сказал, что точно не помню его аргументы. Сейчас посмотрел, надо поменять местами первый и второй аргументы:
Visual Prolog Код:
predicates
p(string,string).
goal
p("wrtwetr",S), write(S).
clauses
p(W,S):-front_str(1,W,C,W1), front_str(1,W1,_,W2),
            concat(C,"a",C1),
            !, p(W2,S1), concat(C1,S1,S).
p(S,S).
Ответить с цитированием
Пользователь сказал cпасибо:
lexusRX300 (21.10.2014)
  (#9 (permalink)) Старый
compasses compasses вне форума
Member
 
Сообщений: 44
Сказал(а) спасибо: 1
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 25.02.2014
По умолчанию 21.10.2014, 19:03

Цитата:
Сообщение от Винитарх Посмотреть сообщение
Ну и позвольте мне подправить Ваш, compasses, исходник
да, вы правы. Просто так для начинающих, по-моему, понятней. А так как автор темы новичок, и, по-видимому, ему сдавать все это дело, то решил что так он сможет сам понять для чего это правило
Ответить с цитированием
  (#10 (permalink)) Старый
goal goal вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 2
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 16.10.2014
Wink 21.10.2014, 22:23

Используется стандартный предикат frontchar в двух режимах (i,o,o) и (o,i,i)
prolog Код:
predicates
nondeterm p(string,string).
goal
p("wrtwetr",S), write(S), readchar(_).
clauses
p(W,S):-frontchar(W,C,W1), frontchar(W1,_,W2), p(W2,S1),!,
    frontchar(C1,C,"a"), concat(C1,S1,S).
p(S,S).

Последний раз редактировалось goal; 21.10.2014 в 22:28
Ответить с цитированием
  (#11 (permalink)) Старый
lexusRX300 lexusRX300 вне форума
Member
 
Сообщений: 13
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.10.2014
По умолчанию 21.10.2014, 22:48

спасибо большое за помощь!!!!
Ответить с цитированием
  (#12 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,247
Сказал(а) спасибо: 26
Поблагодарили 51 раз(а) в 51 сообщениях
Регистрация: 16.10.2005
По умолчанию 22.10.2014, 16:51

Цитата:
Сообщение от compasses Посмотреть сообщение
Просто так для начинающих, по-моему, понятней.
Ага, [H|[]] - ну просто очень понятная конструкция. Прелесть, нигде раньше не встречал
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
compasses compasses вне форума
Member
 
Сообщений: 44
Сказал(а) спасибо: 1
Поблагодарили 8 раз(а) в 8 сообщениях
Регистрация: 25.02.2014
По умолчанию 22.10.2014, 23:17

Цитата:
Сообщение от Alexiski Посмотреть сообщение
Ага, [H|[]] - ну просто очень понятная конструкция. Прелесть, нигде раньше не встречал
а что такого? сразу ясно-понятно, что есть только голова. один элемент списка, а дальше ничего.
лично я и друзья когда учили офигивали от конструкций вида secondA(T, T) или secondA([T], [T]) - фиг пойми почему интерпретатор не выбрал эту ветку. она подходит под все!
по началу так кажется во всяком случае. Потом-то понятно что как в этом ЯП)
Ответить с цитированием
Ads
Ответ

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Командная строка каждую минуту metr1x Любые вопросы от новичков 2 27.06.2014 17:31
В каждом слове удалить букву, которая находится между двумя заданными. малюк Lisp 2 31.12.2011 00:50
Ввести ленту символов и вывести ее на экран, закрасив каждую букву в другой цвет Niklaus Assembler 0 08.12.2011 03:36
В каждом слове вставить после заданного 3-буквенного сочетания Loona Lisp 0 17.05.2011 21:39
Поменять порядок следования букв в слове на противоположный. gem Prolog 7 19.04.2011 16:04
Написать функцию, определяющую количество символов в каждом слове Дарья1207 Lisp 1 18.04.2011 21:27
Как по отдельности загнать каждую цифру в слово V_i Assembler 1 12.06.2008 15:04
Во введенном тексте подсчитать количество символов в слове ДжиневЪра Вопросы начинающих программистов 16 23.12.2005 02:56
Как объяснить каждую строчку в программном коде juliek Вопросы начинающих программистов 0 30.05.2005 23:37
Как подсчитать количество букв в последнем слове imported_Алексей_М Вопросы начинающих программистов 3 18.05.2005 21:31
Как узнать букву CD-ROM программно vanya C++ Builder 3 05.10.2004 11:55
Нужен алгоритм подсчета гласных и согласных букв в слове USA Вопросы начинающих программистов 4 05.02.2004 13:44



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