Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,8 @@
(defun fibonacci-iterative (n &aux (f0 0) (f1 1))
(case n
(0 f0)
(1 f1)
(t (loop for n from 2 to n
for a = f0 then b and b = f1 then result
for result = (+ a b)
finally (return result)))))

View file

@ -0,0 +1,33 @@
(defparameter *fibo-start* '(1 1)) ; elements 1 and 2
;;; Helper functions
(defun grow-fibo (fibo)
(cons (+ (first fibo) (second fibo)) fibo))
(defun generate-fibo (fibo n) ; n must be > 1
(if (equal (list-length fibo) n)
fibo
(generate-fibo (grow-fibo fibo) n)))
;;; User functions
(defun fibo (n)
(cond ((= n 0) 0)
((= (abs n) 1) 1)
(t (let ((result (first (generate-fibo *fibo-start* (abs n)))))
(if (and (< n -1) (evenp n))
(- result)
result)))))
(defun fibo-list (n)
(cond ((< n 1) nil)
((= n 1) '(1))
(t (reverse (generate-fibo *fibo-start* n)))))
(defun fibo-range (lower upper)
(if (<= upper lower)
nil
(reverse (generate-fibo
(list
(fibo (1+ lower))
(fibo lower))
(1+ (- upper lower))))))

View file

@ -0,0 +1,7 @@
(defun fibonacci (n)
(let ((a 0) (b 1) (c n))
(loop for i from 2 to n do
(setq c (+ a b)
a b
b c))
c))

View file

@ -0,0 +1 @@
(loop for x = 0 then y and y = 1 then (+ x y) do (print x))

View file

@ -0,0 +1,4 @@
(defun fibonacci-recursive (n)
(if (< n 2)
n
(+ (fibonacci-recursive (- n 2)) (fibonacci-recursive (- n 1)))))

View file

@ -0,0 +1,4 @@
(defun fibonacci-tail-recursive ( n &optional (a 0) (b 1))
(if (= n 0)
a
(fibonacci-tail-recursive (- n 1) b (+ a b))))

View file

@ -0,0 +1,9 @@
(defun fib (n &optional (a 1) (b 0) (p 0) (q 1))
(if (= n 1) (+ (* b p) (* a q))
(fib (ash n -1)
(if (evenp n) a (+ (* b q) (* a (+ p q))))
(if (evenp n) b (+ (* b p) (* a q)))
(+ (* p p) (* q q))
(+ (* q q) (* 2 p q))))) ;p is Fib(2^n-1), q is Fib(2^n).
(print (fib 100000))

View file

@ -0,0 +1,13 @@
;; Project : Fibonacci sequence
(defun fibonacci (nr)
(cond ((= nr 0) 1)
((= nr 1) 1)
(t (+ (fibonacci (- nr 1))
(fibonacci (- nr 2))))))
(format t "~a" "First 10 Fibonacci numbers")
(dotimes (n 10)
(if (< n 1) (terpri))
(if (< n 9) (format t "~a" " "))
(write(+ n 1)) (format t "~a" ": ")
(write (fibonacci n)) (terpri))

View file

@ -0,0 +1,8 @@
(defmethod fib (n)
(declare ((integer 0 *) n))
(+ (fib (- n 1))
(fib (- n 2))))
(defmethod fib ((n (eql 0))) 0)
(defmethod fib ((n (eql 1))) 1)

View file

@ -0,0 +1,9 @@
(defun fibo (n)
(cond ((< n 0) nil)
((< n 2) n)
(t (let ((leo '(1 0)))
(loop for i from 2 upto n do
(setf leo (cons (+ (first leo)
(second leo))
leo))
finally (return (first leo)))))))