Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
55
Task/Farey-sequence/Scheme/farey-sequence.ss
Normal file
55
Task/Farey-sequence/Scheme/farey-sequence.ss
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
(import (scheme base)
|
||||
(scheme write))
|
||||
|
||||
;; create a generator for Farey sequence n
|
||||
;; using next term formula from https://en.wikipedia.org/wiki/Farey_sequence
|
||||
(define (farey-generator n)
|
||||
(let ((a #f) (b 1) (c #f) (d n))
|
||||
(lambda ()
|
||||
(cond ((not a) ; first item in sequence
|
||||
(set! a 0)
|
||||
(/ a b))
|
||||
((not c) ; second item in sequence
|
||||
(set! c 1)
|
||||
(/ c d))
|
||||
((= c d) ; return #f when finished sequence
|
||||
#f)
|
||||
(else ; compute next term
|
||||
(let* ((f (floor (/ (+ n b) d)))
|
||||
(p (- (* f c) a))
|
||||
(q (- (* f d) b)))
|
||||
(set! a c)
|
||||
(set! b d)
|
||||
(set! c p)
|
||||
(set! d q)
|
||||
(/ p q)))))))
|
||||
|
||||
(define (farey-sequence n display?)
|
||||
(define (display-rat n) ; ensure 0,1 show /1
|
||||
(display n)
|
||||
(when (= 1 (denominator n))
|
||||
(display "/1"))
|
||||
(display " "))
|
||||
;
|
||||
(let ((gen (farey-generator n)))
|
||||
(do ((res (gen) (gen))
|
||||
(count 0 (+ 1 count)))
|
||||
((not res) (when display? (newline))
|
||||
count)
|
||||
(when display? (display-rat res)))))
|
||||
|
||||
;;
|
||||
|
||||
(display "Farey sequence for order 1 through 11 (inclusive):\n")
|
||||
(do ((i 1 (+ i 1)))
|
||||
((> i 11) )
|
||||
(display (string-append "F(" (number->string i) "): "))
|
||||
(farey-sequence i #t))
|
||||
|
||||
(display "\nNumber of fractions in the Farey sequence:\n")
|
||||
(do ((i 100 (+ i 100)))
|
||||
((> i 1000) )
|
||||
(display
|
||||
(string-append "F(" (number->string i) ") = "
|
||||
(number->string (farey-sequence i #f))))
|
||||
(newline))
|
||||
Loading…
Add table
Add a link
Reference in a new issue