Jump to content
Sign in to follow this  
AM

fibonacci*

Recommended Posts

same with fibonacci

(defun fibonacci* (n &key (offset 0) (every-x 1) (reverse nil))
  (let ((n (* n every-x)) (seq)) 
      (setf seq (find-everyother every-x (subseq (fibonacci 0 (+ n offset)) offset (+ n offset))))
      (if (equal reverse nil)
        seq
        (reverse seq))))


(fibonacci* 5 :offset 2)
=> (1 2 3 5 8)

(fibonacci* 5 :offset 5 :every-x 2)
=> (5 13 34 89 233)

(fibonacci* 5 :offset 5 :every-x 2 :reverse t)
=> (233 89 34 13 5)


;;;; in combination with "reading-list-by-steps"

(defun reading-list-by-steps (&key steps values (start (car values)))
  (let ((pos (car (position-item start values))))
    (append (list (nth pos values))
            (loop for i in steps
              do (setf pos (+ pos i))
              when (> pos (length values))
              do (setf pos (+ 0 i))
              collect (nth pos values)))))

(list-plot
 (reading-list-by-steps :steps '(1 -1 4 -3 2 -1 3 -2 4 1 1 -1)
                        :values (fibonacci* 14 :offset 6 :reverse t)
                        :start 89)
 :join-points t)
 

 

Edited by AM
added some stuff

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×