School Commit Init

This commit is contained in:
2024-08-31 12:07:21 +03:00
commit 0b130ee18c
2801 changed files with 4720552 additions and 0 deletions
@@ -0,0 +1,81 @@
%a
%nrOccurences(L:list, E:number, R:number)
%flow model: (i,i,o)
%nrOccurences(l1l2..ln, e) = 0, if n = 0
% 1 + nrOccurences(l2..ln, e), if l1 = e
% nrOccurences(l2..ln, e), if l1 != e
nrOccurences([],_,0).
nrOccurences([H|T],E,R):-
H=:=E,
nrOccurences(T,E,R1),
R is R1+1.
nrOccurences([H|T],E,R):-
H=\=E,
nrOccurences(T,E,R).
%removeElem(L:list, E:number, R:list)
%flow model: (i,i,o)
%removeElem(l1l2..ln, e) = [], if n = 0
% removeElem(l2..ln, e), if l1 = e
% l1 + removeElem(l2..ln, e), if l1 != e
removeElem([],_,[]).
removeElem([H|T],E,R):-
H=:=E,
removeElem(T,E,R).
removeElem([H|T],E,R):-
H=\=E,
removeElem(T,E,R1),
R=[H|R1].
%remove(L:list, R:list)
%flow model: (i,o)
%remove(l1l2..ln) = removeRepetitive(l1l2..ln, l1l2..ln)
remove(L,R):-
removeRepetitive(L,L,R).
%removeRepetitive(L:list, D:list, R:list)
%flow model: (i,i,o)
%removeRepetitive(l1l2..ln, d1d2..dm) = [], if n = 0
% l1 + removeRepetitive(l2..ln, d1d2..dm), if nrOccurences(d1d2..dm, l1) = 1
% removeRepetitive(l2..ln, d1d2..dm), if nrOccurences(d1d2..dm, l1) != 1
removeRepetitive([],_,[]).
removeRepetitive([H|T],D,R):-
nrOccurences(D,H,R1),
R1=:=1,
removeRepetitive(T,D,R2),
R=[H|R2].
removeRepetitive([H|T],D,R):-
nrOccurences(D,H,R1),
R1=\=1,
removeRepetitive(T,D,R).
%b
%max(L:list, E:number)
%flow model: (i,o)
%max(l1l2..ln) = l1, if n = 1
% max(l2..ln), if l1 < max(l2..ln)
% l1, if l1 >= max(l2..ln)
max([E],E).
max([H|T],E):-
max(T,E1),
H>E1,
E is H.
max([H|T],E):-
max(T,E1),
H=<E1,
E is E1.
%removeMax(L:list, R:list)
%flow model: (i,o)
%removeMax(l1l2..ln) = [], if n = 0
% removeElem(l1l2..ln, max(l1l2..ln)), if n > 0
removeMax([],[]).
removeMax(L,R):-
max(L,E),
removeElem(L,E,R).