Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
6
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-1.pro
Normal file
6
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-1.pro
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
fib(1, 1) :- !.
|
||||
fib(0, 0) :- !.
|
||||
fib(N, Value) :-
|
||||
A is N - 1, fib(A, A1),
|
||||
B is N - 2, fib(B, B1),
|
||||
Value is A1 + B1.
|
||||
7
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-10.pro
Normal file
7
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-10.pro
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
% Fibonacci sequence generator
|
||||
fib(C, [P,S], C, N) :- N is P + S.
|
||||
fib(C, [P,S], Cv, V) :- succ(C, Cn), N is P + S, !, fib(Cn, [S,N], Cv, V).
|
||||
|
||||
fib(0, 0).
|
||||
fib(1, 1).
|
||||
fib(C, N) :- fib(2, [0,1], C, N). % Generate from 3rd sequence on
|
||||
12
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-11.pro
Normal file
12
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-11.pro
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
% John Devou: 26-Nov-2021
|
||||
% Efficient program to calculate n-th Fibonacci number.
|
||||
% Works fast for n ≤ 1 000 000 000.
|
||||
|
||||
b(0,Bs,Bs).
|
||||
b(N,Bs,Res):- N > 0, B is mod(N,2), M is div(N,2), b(M,[B|Bs],Res).
|
||||
|
||||
f([],A,_,_,A).
|
||||
f([X|Xs],A,B,C,Res):- AA is A^2, BB is B^2, A_ is 2*BB-3*AA-C, B_ is AA+BB,
|
||||
(X =:= 1 -> T is A_+B_, f(Xs,B_,T,-2,Res); f(Xs,A_,B_,2,Res)).
|
||||
|
||||
fib(N,F):- b(N,[],Bs), f(Bs,0,1,2,F), !.
|
||||
19
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-2.pro
Normal file
19
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-2.pro
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
?- time(fib(0,F)).
|
||||
% 2 inferences, 0.000 CPU in 0.000 seconds (88% CPU, 161943 Lips)
|
||||
F = 0.
|
||||
|
||||
?- time(fib(10,F)).
|
||||
% 265 inferences, 0.000 CPU in 0.000 seconds (98% CPU, 1458135 Lips)
|
||||
F = 55.
|
||||
|
||||
?- time(fib(20,F)).
|
||||
% 32,836 inferences, 0.016 CPU in 0.016 seconds (99% CPU, 2086352 Lips)
|
||||
F = 6765.
|
||||
|
||||
?- time(fib(30,F)).
|
||||
% 4,038,805 inferences, 1.122 CPU in 1.139 seconds (98% CPU, 3599899 Lips)
|
||||
F = 832040.
|
||||
|
||||
?- time(fib(40,F)).
|
||||
% 496,740,421 inferences, 138.705 CPU in 140.206 seconds (99% CPU, 3581264 Lips)
|
||||
F = 102334155.
|
||||
9
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-3.pro
Normal file
9
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-3.pro
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
%:- dynamic fib/2. % This is ISO, but GNU doesn't like it.
|
||||
:- dynamic(fib/2). % Not ISO, but works in SWI, YAP and GNU unlike the ISO declaration.
|
||||
fib(1, 1) :- !.
|
||||
fib(0, 0) :- !.
|
||||
fib(N, Value) :-
|
||||
A is N - 1, fib(A, A1),
|
||||
B is N - 2, fib(B, B1),
|
||||
Value is A1 + B1,
|
||||
asserta((fib(N, Value) :- !)).
|
||||
19
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-4.pro
Normal file
19
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-4.pro
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
?- time(fib(0,F)).
|
||||
% 2 inferences, 0.000 CPU in 0.000 seconds (90% CPU, 160591 Lips)
|
||||
F = 0.
|
||||
|
||||
?- time(fib(10,F)).
|
||||
% 37 inferences, 0.000 CPU in 0.000 seconds (96% CPU, 552610 Lips)
|
||||
F = 55.
|
||||
|
||||
?- time(fib(20,F)).
|
||||
% 41 inferences, 0.000 CPU in 0.000 seconds (96% CPU, 541233 Lips)
|
||||
F = 6765.
|
||||
|
||||
?- time(fib(30,F)).
|
||||
% 41 inferences, 0.000 CPU in 0.000 seconds (95% CPU, 722722 Lips)
|
||||
F = 832040.
|
||||
|
||||
?- time(fib(40,F)).
|
||||
% 41 inferences, 0.000 CPU in 0.000 seconds (96% CPU, 543572 Lips)
|
||||
F = 102334155.
|
||||
51
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-5.pro
Normal file
51
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-5.pro
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
?- listing(fib).
|
||||
:- dynamic fib/2.
|
||||
|
||||
fib(40, 102334155) :- !.
|
||||
fib(39, 63245986) :- !.
|
||||
fib(38, 39088169) :- !.
|
||||
fib(37, 24157817) :- !.
|
||||
fib(36, 14930352) :- !.
|
||||
fib(35, 9227465) :- !.
|
||||
fib(34, 5702887) :- !.
|
||||
fib(33, 3524578) :- !.
|
||||
fib(32, 2178309) :- !.
|
||||
fib(31, 1346269) :- !.
|
||||
fib(30, 832040) :- !.
|
||||
fib(29, 514229) :- !.
|
||||
fib(28, 317811) :- !.
|
||||
fib(27, 196418) :- !.
|
||||
fib(26, 121393) :- !.
|
||||
fib(25, 75025) :- !.
|
||||
fib(24, 46368) :- !.
|
||||
fib(23, 28657) :- !.
|
||||
fib(22, 17711) :- !.
|
||||
fib(21, 10946) :- !.
|
||||
fib(20, 6765) :- !.
|
||||
fib(19, 4181) :- !.
|
||||
fib(18, 2584) :- !.
|
||||
fib(17, 1597) :- !.
|
||||
fib(16, 987) :- !.
|
||||
fib(15, 610) :- !.
|
||||
fib(14, 377) :- !.
|
||||
fib(13, 233) :- !.
|
||||
fib(12, 144) :- !.
|
||||
fib(11, 89) :- !.
|
||||
fib(10, 55) :- !.
|
||||
fib(9, 34) :- !.
|
||||
fib(8, 21) :- !.
|
||||
fib(7, 13) :- !.
|
||||
fib(6, 8) :- !.
|
||||
fib(5, 5) :- !.
|
||||
fib(4, 3) :- !.
|
||||
fib(3, 2) :- !.
|
||||
fib(2, 1) :- !.
|
||||
fib(1, 1) :- !.
|
||||
fib(0, 0) :- !.
|
||||
fib(A, D) :-
|
||||
B is A+ -1,
|
||||
fib(B, E),
|
||||
C is A+ -2,
|
||||
fib(C, F),
|
||||
D is E+F,
|
||||
asserta((fib(A, D):-!)).
|
||||
13
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-6.pro
Normal file
13
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-6.pro
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
:- use_module(lambda).
|
||||
fib(N, FN) :-
|
||||
cont_fib(N, _, FN, \_^Y^_^U^(U = Y)).
|
||||
|
||||
cont_fib(N, FN1, FN, Pred) :-
|
||||
( N < 2 ->
|
||||
call(Pred, 0, 1, FN1, FN)
|
||||
;
|
||||
N1 is N - 1,
|
||||
P = \X^Y^Y^U^(U is X + Y),
|
||||
cont_fib(N1, FNA, FNB, P),
|
||||
call(Pred, FNA, FNB, FN1, FN)
|
||||
).
|
||||
4
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-7.pro
Normal file
4
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-7.pro
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
fib([0,1|X]) :-
|
||||
ffib(0,1,X).
|
||||
ffib(A,B,X) :-
|
||||
freeze(X, (C is A+B, X=[C|Y], ffib(B,C,Y)) ).
|
||||
2
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-8.pro
Normal file
2
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-8.pro
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
?- fib(X), length(A,15), append(A,_,X), writeln(A).
|
||||
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
|
||||
10
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-9.pro
Normal file
10
Task/Fibonacci-sequence/Prolog/fibonacci-sequence-9.pro
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
take( 0, Next, Z-Z, Next).
|
||||
take( N, Next, [A|B]-Z, NZ):- N>0, !, next( Next, A, Next1),
|
||||
N1 is N-1,
|
||||
take( N1, Next1, B-Z, NZ).
|
||||
|
||||
next( fib(A,B), A, fib(B,C)):- C is A+B.
|
||||
|
||||
%% usage: ?- take(15, fib(0,1), _X-[], G), writeln(_X).
|
||||
%% [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
|
||||
%% G = fib(610, 987)
|
||||
Loading…
Add table
Add a link
Reference in a new issue