
Лаб. 1 ФЛП
.docxЛабораторная работа 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])