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

Лаб. 2 ФЛП

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

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

%1

sum_pos_squares([X|Y],Res):-

integer(X),X<0,Res1 is abs(X)**2+Res,sum_pos_squares(Y, Res1).

sum_pos_squares([_|Y],Res):-sum_pos_squares(Y,Res).

sum_pos_squares([ ],Res):-write(Res).

%sum_pos_squares([-3,"a",false,-4,1], 0)

%2

dropwhile(_,[ ],[ ]):-!.

dropwhile(Pred,[X|Y],Rest) :-call(Pred,X),!,dropwhile(Pred,Y,Rest).

dropwhile(_,List,List):-!.

fun2(X):-X<10.

%dropwhile(fun2,[1,3,9,11,6],Res)

%3

antimap([ ],_,[ ]):-!.

antimap([Pred1|Pred2],X,[Res1|Res2]):-call(Pred1,X,Res1),antimap(Pred2,X,Res2).

fun3_1(X,Res):-Res is X+2.

fun3_2(X,Res):-Res is X*3.

%antimap([fun3_1,fun3_2],4,Res)

%4

solve(Fun, A, B, Eps, Root) :-

Delta is B - A,

Mid is (A + B) / 2,

( Delta < Eps ->

Root is Mid

;

call(Fun, Mid, FMid),

call(Fun, A, FA),

sign(FA, SignA),

sign(FMid, SignMid),

( SignA =:= SignMid ->

solve(Fun, Mid, B, Eps, Root)

;

solve(Fun, A, Mid, Eps, Root)

)

).

% определение знака

sign(X, 1) :- X >= 0, !.

sign(_, -1).

% функция f(X) = X^2 - 2

f(X, Res) :- Res is X * X - 2.

%solve(f, 0, 2, 0.001, Root)

%5

for(Init, Cond, Step, Body) :-

call(Cond, Init),!,

call(Body, Init),

call(Step, Init, Next),

for(Next, Cond, Step, Body).

for(_,_,_,_):-!.

% условие: пока X < 5

less_than_5(X) :- X < 5.

% шаг: X = X + 1

increment(X, Next):-Next is X + 1.

% тело: вывод X

print_value(X):-writeln(X).

%for(0, less_than_5, increment, print_value).

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