Sync
This commit is contained in:
parent
6f050a029e
commit
776bba907c
3887 changed files with 59894 additions and 7280 deletions
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
|
||||
|
|
@ -1,8 +1,4 @@
|
|||
fib(X) :-
|
||||
X=[0,1|Z],
|
||||
ffib(Z,X).
|
||||
ffib(Z,X) :-
|
||||
X=[A|Y],
|
||||
Y=[B|_],
|
||||
N is A+B,
|
||||
freeze(Z, (Z=[N|W],ffib(W,Y)) ).
|
||||
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)) ).
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
% 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).
|
||||
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).
|
||||
|
||||
fib(0, 0).
|
||||
fib(1, 1).
|
||||
fib(C, N) :- fib(2, [0,1], C, N). % Generate from 3rd sequence on
|
||||
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