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

Лаб. 1 ФЛП

.docx
Скачиваний:
0
Добавлен:
29.05.2025
Размер:
308.23 Кб
Скачать

Лабораторная работа 1 Знакомство с языком Пролог. Синтаксис и основные типы данных

%1

ball_volume(R):-V is (4/3)*pi*(R*R*R),write("Volume = "),write(V).

%ball_volume(1)

%2

from_to(N,M):-N>M,nl.

from_to(N,M):-N=<M,write(N),write(" "),N1 is N+1,from_to(N1,M).

%from_to(1,4)

%3

delta([X|Y]):-write(X),write(" "),delta2(X,Y).

delta2(X,[Y|Z]):-Y1 is Y-X,write(Y1),write(" "),delta2(Y,Z).

delta2(_,[ ]):-!.

%delta([1,2,4,3])

%4

int_to_binary(0):-!.

int_to_binary(X):-X>=0,X1 is X mod 2,X2 is X div 2,int_to_binary(X2),write(X1).

int_to_binary(X):-X<0,write("-"),X1 is X*(-1),int_to_binary(X1).

%int_to_binary(8)

%int_to_binary(-2)

%5

rle_encode([X|Y]):-rle_encode2(X,Y).

rle_encode2(X,[ ]):-write(X),write(" ").

rle_encode2(X,[Y|Z]):-X=\=Y,write(X),write(" "),rle_encode2(Y,Z).

rle_encode2(X,[Y|Z]):-X=:=Y,N is 2,rle_encode3(X,N,Z).

rle_encode3(X,N,[ ]):-write("{"),write(X),write(","),write(N),write("} ").

rle_encode3(X,N,[Y|Z]):-X=\=Y,write("{"),write(X),write(","),write(N),write("} "),rle_encode2(Y,Z).

rle_encode3(X,N,[Y|Z]):-X=:=Y,N1 is N+1,rle_encode3(X,N1,Z).

%rle_encode(["a","a","a","b","c","c","a","a"])

%6

intersect([X1|Y1],[X2|Y2]):-X1=:=X2,write(X1),write(" "),intersect(Y1,[X2|Y2]).

intersect([X1|Y1],[X2|Y2]):-X1=\=X2,intersect2(X1,Y1,[X2|Y2],Y2).

intersect([ ],[_|_]):-!.

intersect2(X,Y1,Y2,[Z|_]):-X=:=Z,write(X),write(" "),intersect(Y1,Y2).

intersect2(X,Y1,Y2,[Z|T]):-X=\=Z,intersect2(X,Y1,Y2,T).

intersect2(_,Y1,Y2,[ ]):-intersect(Y1,Y2).

%intersect([1, 3, 2, 5], [2, 3, 4])

%intersect([1, 6, 5], [2, 3, 4])

Соседние файлы в предмете Функциональное и логическое программирование