Name: Anonymous 2011-05-15 20:42
def fib(times):
a, b = 0,1
for _ in range(times):
a, b = b, a+b
return aI think I just creamed my pants.
def fib(times):
a, b = 0,1
for _ in range(times):
a, b = b, a+b
return afib: ; calculates (ECX-1)th fibonacci number in EAX
mov eax 1 | cdq
:fibloop
add eax edx | xchg eax edx
loop :fibloop
ret
(define fib
(let* ((√5 (sqrt 5))
(φ (/ (add1 √5) 2)))
(lambda (n)
(round (/ (expt φ n) √5)))))
a = b + (b = a)?
fib: ; calculates (ECX-1)th fibonacci number in EAX mov eax 1 | cdq :fibloop add eax edx | xchg eax edx loop:fibloop ret
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
def fib n
a, b = 0, 1
n.times {a, b = b, a + b}
return a
end
int fib (int a, int b, int n)
{
if (n) return fib (b, a+b, n-1);
else return a;
}
fib (1, 1, times)
(define (fib n)
(fib-iter 1 0 0 1 n))
(define (fib-iter a b p q count)
(cond ((= count 0) b)
((even? count)
(fib-iter a
b
(+ (* p p) (* q q))
(+ (* q q) (* 2 q p))
(/ count 2)))
(else (fib-iter (+ (* b q) (* a q) (* a p))
(+ (* b p) (* a q))
p
q
(- count 1)))))var fibs = -> n (
var rec;
rec = -> a b i (
if !i then
a;
else
rec(b,a+b,i-1);
end;
);
rec 0 1 n;
);
print fibs 10;
fib(5, 5, 8);
def fib(n, a=0, b=1):
if n:
return fib(n-1, b, a+b)
else:
return a
print fib(100)
fib = lambda n : return n + fib(n-1) if n and n - 1 else 1
fib(10);fib is in the stdlib. I win.
fib(1000000000).fib is slow as fuck.fib(1000000000).fib is inaccurate as fuck.
(define fib
(let* ((√5 (inexact->exact (sqrt 5)))
(φ (/ (add1 √5) 2)))
(lambda (n)
(/ (expt φ n) √5))))
Prelude> let fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Prelude> fibs(1000000000)
<interactive>:1:0:
Couldn't match expected type `t1 -> t'
against inferred type `[Integer]'
In the expression: fibs (1000000000)
In the definition of `it': it = fibs (1000000000)
#include <stdio.h>
#define NMAX 10001
void fib (unsigned int times)
{
unsigned char a[NMAX] = {0}, b[NMAX] = {0}, temp[NMAX] = {0};
unsigned int i, t = 0;
b[0] = 1; b[1] = 0; a[0] = a[1] = 1;
while (times-- - 1)
{
for (i = 0; i < a[0]+1; i++)
temp[i] = a[i];
for (i = 1; i <= a[0] || i <= b[0] || t; i++, t /= 10)
a[i] = (t += a[i] + b[i]) % 10;
a[0] = i-1;
for (i = 0; i < a[0]+1; i++)
b[i] = temp[i];
}
for (i = a[0]; i > 0; i--)
printf ("%d", a[i]);
}
int main (void)
{
fib (1000);
return 0;
}# < . >
#
( )
{
[ ] = { }, [ ] = { }, [ ] = { };
, = ;
[ ] = ; [ ] = ; [ ] = [ ] = ;
( -- - )
{
( = ; < [ ]+ ; ++)
[ ] = [ ];
( = ; <= [ ] || <= [ ] || ; ++, /= )
[ ] = ( += [ ] + [ ]) % ;
[ ] = - ;
( = ; < [ ]+ ; ++)
[ ] = [ ];
}
( = [ ]; > ; --)
("% ", [ ]);
}
( )
{
( );
;
}
# ( . )
#
( )
(
( ) = ( ), ( ) = ( ), ( ) = ( );
, = ;
( ) = ; ( ) = ; ( ) = ( ) = ;
( -- - )
(
( = ; < ( )+ ; ++)
( ) = ( );
( = ; <= ( ) || <= ( ) || ; ++, /= )
( ) = ( += ( ) + ( )) % ;
( ) = - ;
( = ; < ( )+ ; ++)
( ) = ( );
)
( = ( ); > ; --)
("% ", ( ));
)
( )
(
( );
;
)