added lists.pro
This commit is contained in:
parent
26ef9a7766
commit
7e9bf70d73
|
@ -0,0 +1,93 @@
|
||||||
|
|
||||||
|
% iterate over list in sucessive order
|
||||||
|
% prints each element
|
||||||
|
%
|
||||||
|
% example: iter_nth([1,2,3,4,5,6,7,8,9])
|
||||||
|
% output: [1,2,3,4,5,6,7,8,9]
|
||||||
|
iter([]).
|
||||||
|
iter([H|T]):-writeln(H), iter(T).
|
||||||
|
|
||||||
|
% iterate over list in reverse order
|
||||||
|
% prints each element
|
||||||
|
%
|
||||||
|
% example: iter_nth([1,2,3,4,5,6,7,8,9])
|
||||||
|
% output: [9,8,7,6,5,4,3,2,1]
|
||||||
|
iter_rev([A]):-writeln(A).
|
||||||
|
iter_rev([H|T]):-iter_rev(T), writeln(H).
|
||||||
|
|
||||||
|
% prints every 2nd element from the supplied list
|
||||||
|
iter_every_2nd([]).
|
||||||
|
iter_every_2nd([_|[H2|T]]):-writeln(H2), iter_every_2nd(T).
|
||||||
|
|
||||||
|
% iterate over every nth element in the list
|
||||||
|
%
|
||||||
|
% example: iter_nth([1,2,3,4,5,6,7,8,9], 3)
|
||||||
|
% output: [3, 6, 9]
|
||||||
|
iter_nth([], _, _).
|
||||||
|
iter_nth([H|T], E, 0):-
|
||||||
|
R is E - 1,
|
||||||
|
iter_nth(T, E, R),
|
||||||
|
writeln(H).
|
||||||
|
|
||||||
|
iter_nth([_|T], E, L):-
|
||||||
|
R is L - 1,
|
||||||
|
iter_nth(T, E, R).
|
||||||
|
|
||||||
|
iter_nth(L, N):-
|
||||||
|
R is N - 1,
|
||||||
|
iter_nth(L, N, R).
|
||||||
|
|
||||||
|
% iterate over all elements with an even index
|
||||||
|
iter_even(L):-iter_nth(L, 2).
|
||||||
|
|
||||||
|
% iterate over all elements with an odd index
|
||||||
|
iter_odd(L):-iter_nth(L, 2, 0).
|
||||||
|
|
||||||
|
% counts the amount of items in the supplied list
|
||||||
|
%
|
||||||
|
% example: len([1,2,3,4,5,6], X)
|
||||||
|
% output: X = 6
|
||||||
|
len([], L):-L is 0.
|
||||||
|
len([_|T], L):-
|
||||||
|
len(T, Tmp),
|
||||||
|
L is Tmp + 1.
|
||||||
|
|
||||||
|
% count the amounts an element `E` is present in the supplied list
|
||||||
|
%
|
||||||
|
% example: count([a,b,c,a], a, X)
|
||||||
|
% output: X = 2
|
||||||
|
count([], _, L):-L is 0.
|
||||||
|
count([H|T], E, L):-
|
||||||
|
H == E,
|
||||||
|
count(T, E, R),
|
||||||
|
L is R + 1.
|
||||||
|
count([_|T], E, L):-
|
||||||
|
count(T, E, R),
|
||||||
|
L is R.
|
||||||
|
|
||||||
|
% return the nth element of the supplied list.
|
||||||
|
% indexing starts with 0
|
||||||
|
%
|
||||||
|
% example: nth([a,b,c,d,e], 3, X)
|
||||||
|
% output: X = d
|
||||||
|
nth([],_).
|
||||||
|
nth([H|_], 0, O):-O is H.
|
||||||
|
nth([_|T], C, O):-
|
||||||
|
C1 is C - 1,
|
||||||
|
nth(T,C1, K),
|
||||||
|
O is K.
|
||||||
|
|
||||||
|
% return the index of the first occurance of the element
|
||||||
|
% in a list
|
||||||
|
% indexing starts with 0
|
||||||
|
%
|
||||||
|
% example: indexof([0,1,3,4,5,6,7,8,9], 3, X)
|
||||||
|
% output: X = 2
|
||||||
|
indexof([],_,C):-C is 0.
|
||||||
|
indexof([H|_],E,C):-
|
||||||
|
H == E,
|
||||||
|
C is 0.
|
||||||
|
indexof([_|T],E,C):-
|
||||||
|
indexof(T,E,R),
|
||||||
|
C is R + 1.
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
# Prolog
|
# Prolog
|
||||||
|
|
||||||
Code written for the class "Grundlagen und Logik". The repository contais source written in the Prolog programming language compatible with the SWISH online environment.
|
Code written for the class "Grundlagen und Logik". The repository contais source written in the Prolog programming language compatible with the SWISH online environment.
|
||||||
|
|
||||||
|
Note that the offical file extension for prolog is ".pl" which conflicts with perls ".pl" extension. Due to this all prolog source files in this repository will have the ".pro" file extension.
|
||||||
|
|
||||||
|
## Run
|
||||||
|
|
||||||
|
You can run the code by visiting [SWISH Prolog](https://swish.swi-prolog.org/https:/).
|
||||||
|
|
Loading…
Reference in New Issue