Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лифп / Лабораторная работа №3

.docx
Скачиваний:
5
Добавлен:
07.02.2023
Размер:
78.07 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ КЫРГЫЗСКОЙ РЕСПУБЛИКИ

КЫРГЫЗСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ ИМ. И. РАЗЗАКОВА

Лабораторная работа

Бишкек 2023

Лабораторная работа №3

Поменять местами первое и последнее слово.

Листинг кода:

domains

str=string

predicates

main(str,str)

p(str,str,str,str)

clauses

main(A,B):-fronttoken(A,C,D),p(D,"","",E),concat(E,C,B).

p(A,B,C,D):-fronttoken(A,E,F),!,concat(C,B,G),concat(E," ",H),p(F,H,G,D).

p(_,A,B,C):-concat(A,B,C).

goal

main("Pervoe Slovo, Vtoroe",Str1).

Фото результат:

Объяснение кода

Предикат main(A, B) принимает два аргумента, представленных как «A» и «B». Далее используется предикат fronttoken(A, C, D), чтобы разделить входную строку «A» на две части: «C – первую часть» и «D – оставшуюся часть». Затем вызывается предикат p(D,"","",E) с "D", двумя пустыми строками и переменной "E". Затем результат предиката p(D,"","",E) и в concat(E,C,B) объединяется с "C" для создания окончательной выходной строки, хранящейся в "B".

Предикат p(A,B,C,D) принимает четыре аргумента: "A", "B", "C" и "D". Далее предикат p использует предикат fronttoken(A,E,F), чтобы разделить входную строку «A» на две части: «E» и «F». Предикат concat(C,B,G) объединяет "C" и "B" для получения строки "G". Затем concat(E," ",H) объединяет «E» и символ пробела, чтобы получить «H». Затем предикат p(F,H,G,D) вызывается с помощью "F", "H", "G" и "D". Этот процесс продолжается до тех пор, пока fronttoken(A,E,F) не вернет пустую строку из за "!" символа, который используется для остановки возврата. В этом коде он используется в предложении p(A,B,C,D), чтобы остановить дальнейший возврат после того, как будет найдено первое совпадение. Это означает, что после того, как совпадение найдено и конкатенация выполнена, Пролог не будет пытаться найти другое совпадение, даже если в базе данных есть другие возможные совпадения.

Заключительное предложение для предиката p(_,A,B,C) объединяется в предикате concat(A,B,C) "A" и "B" для получения результата "C".

Наконец, определяется цель вызова предиката main("Pervoe Slovo, Vtoroe",Str1) с входной строкой «Первое Слово, Второе» и переменной «Str1». Результатом цели является значение, хранящееся в «Str1».