Строки Лекция 10
План Стандартные предикаты по работе со строками Преобразование строки в список символов Преобразование списка символов в строку Количество вхождений символа в строку Позиция первого вхождения символа в строку Замена всех вхождений символа на другой Удаление части строки Копирование части строки Вставка подстроки в строку Количество цифр, входящих в строку
Стандартные предикаты по работе со строками str_len (string, integer) concat (string, string, string) frontchar (string, char, string) frontstr (integer, string, string) fronttoken (string, atom, string) isname (string)
Преобразование строки в список символов str_list(,[]). str_list(S,[H|T]):– frontchar(S,H,S1), str_list(S1,T).
Преобразование списка символов в строку list_str([],). list_str([H|T],S):– list_str(T,S1), frontchar(S,H,S1).
Количество вхождений символа в строку char_count(,_,0). char_count(S,C,N):– frontchar(S,C,S1),!, char_count(S1,C,N1), N=N1+1. char_count(S,C,N):– frontchar(S,_,S1), char_count(S1,C,N).
Позиция первого вхождения символа в строку str_pos(C,S,1):– frontchar(S,C,_),!. str_pos(C,S,N) :– frontchar(S,_,S1), str_pos(C,S1,N1), N10,!, N=N1+1. str_pos(_,_,0).
Замена всех вхождений символа на другой str_replace(,_,_,):–!. str_replace(S,C,C1,SO):– frontchar(S,C,S1),!, str_replace(S1,C,C1,S2), frontchar(SO,C1,S2). str_replace(S,C,C1,SO):– frontchar(S,C2,S1), str_replace(S1,C,C1,S2), frontchar(SO,C1,S2).
Удаление части строки str_delete(S,I,C,SO) :– I1=I–1, frontstr(I1,S,S1,S2), frontstr(C,S2,_,S3), concat(S1,S3,SO).
Копирование части строки str_copy(S,I,C,SO) :– I1=I–1, frontstr(I1,S,_,S1), frontstr(C,S1,SO,_).
Вставка подстроки в строку str_insert(S,S1,I,SO) :– I1=I–1, frontstr(I1,S1,S1_1,S1_2), concat(S1_1,S,S2), concat(S2,S1_2,SO).
Количество цифр, входящих в строку dig(C,1):– 0
Задача для самостоятельного решения 1.Последняя позиция вхождения символа в строку. 2.Общее количество латинских букв в списке символов. 3.Количество русских гласных букв в строке. 4.Слово, в котором наибольшее количество русских гласных букв. 5.Удалить из данной строки все вхождения заданного символа. 6.Удалить из данной строки все повторные вхождения символов. 7.Дублирование вхождения каждого символа в строку. 8.«Переворот» строки 9.Проверка, является ли данная строка палиндромом. 10.Список символов, которые входят одновременно в обе данные строки. 11.Слово максимальной (минимальной) длины. 12.Преобразование строки в список слов, состоящих из четного количества символов. 13.Преобразование строки в список слов, которые упорядочены по длине. 14.Преобразование строки в список слов, которые упорядочены в лексикографическом порядке. 15.Преобразование исходной строки в строку, состоящую из первых букв слов первоначальной строки. 16.Преобразование исходной строки в строку, состоящую из последних букв слов первоначальной строки. 17.Проверка правильности расстановки скобок в исходной строке. 18.Замена местами первой и последней буквы в каждом слове исходной строки.