Untitled

mail@pastecode.io avatar
unknown
prolog
6 months ago
1.1 kB
1
Indexable
Never
% % length ЕСТЬ в SWI_Prolog
% my_length([], 0).
% my_length([_|T], L) :- my_length(T, L1), L is L1+1.

% % member ЕСТЬ в SWI_Prolog
% my_member(H, [H|_]).
% my_member(H, [_|T]) :- my_member(H, T).

% % append
% my_append([], X, X).
% my_append([A|X], Y, [A|Z]) :- append(X,Y,Z).

% % remove
% my_remove(X, [X|T], T).
% my_remove(X, [Y|T], [Y|T1]) :- my_remove(X, T, T1).

% % permute
% my_permute([],[]).
% my_permute(L,[X|T]) :- my_remove(X,L,R), my_permute(R,T).

% % sublist
% my_sublist(S, L) :- my_append(_, L1, L), my_append(S,_, L1).

% №1.1 Variant 10
%insert
% Вставляем элемент Elem на позизию 0 в список L получаем список,
% где Elem - голова, L - хвост результирующего списка
% my_insert(Elem, 0, L, [Elem|L]).
% my_insert(Elem, I, [H|L], [H|T]) :- I1 is I-1, my_insert(Elem, I1, L, T).

% №1.2 Variant 15
% Вычисление позиции первого отрицательного элемента в списке

first_neg([H|_], 0) :- H < 0, !.
first_neg([_|T], I) :- first_neg(T, I1), I is I1 + 1.