This commit is contained in:
Ingy döt Net 2013-10-27 22:24:23 +00:00
parent 6f050a029e
commit 776bba907c
3887 changed files with 59894 additions and 7280 deletions

View file

@ -0,0 +1,8 @@
iter fib() {
var a = 0, b = 1;
while true {
yield a;
(a, b) = (b, b + a);
}
}

View file

@ -0,0 +1,50 @@
class
APPLICATION
create
make
feature
fibonacci (n: INTEGER): INTEGER
require
non_negative: n >= 0
local
i, n2, n1, tmp: INTEGER
do
n2 := 0
n1 := 1
from
i := 1
until
i >= n
loop
tmp := n1
n1 := n2 + n1
n2 := tmp
i := i + 1
end
Result := n1
if n = 0 then
Result := 0
end
end
feature {NONE} -- Initialization
make
-- Run application.
do
print (fibonacci (0))
print (" ")
print (fibonacci (1))
print (" ")
print (fibonacci (2))
print (" ")
print (fibonacci (3))
print (" ")
print (fibonacci (4))
print ("%N")
end
end

View file

@ -0,0 +1 @@
fib(n) = n < 2 ? n : fib(n-1) + fib(n-2)

View file

@ -0,0 +1,5 @@
function fib(n)
x,y = (0,1)
for i = 1:n x,y = (y, x+y) end
x
end

View file

@ -0,0 +1 @@
fib(n) = ([1 1 ; 1 0]^n)[1,2]

View 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

View file

@ -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)) ).

View file

@ -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)

View file

@ -13,7 +13,7 @@ fn main() {
}
for int::range(0,20) |n| {
io::println(fmt!("%?", fib(n)))
for n in range(0,20) {
println(fmt!("%d", fib(n)))
}
}