Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
25
Task/Digital-root/Racket/digital-root.rkt
Normal file
25
Task/Digital-root/Racket/digital-root.rkt
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#lang racket
|
||||
(define/contract (additive-persistence/digital-root n (ap 0))
|
||||
(->* (natural-number/c) (natural-number/c) (values natural-number/c natural-number/c))
|
||||
(define/contract (sum-digits x (acc 0))
|
||||
(->* (natural-number/c) (natural-number/c) natural-number/c)
|
||||
(if (= x 0)
|
||||
acc
|
||||
(let-values (((q r) (quotient/remainder x 10)))
|
||||
(sum-digits q (+ acc r)))))
|
||||
(if (< n 10)
|
||||
(values ap n)
|
||||
(additive-persistence/digital-root (sum-digits n) (+ ap 1))))
|
||||
|
||||
(module+ test
|
||||
(require rackunit)
|
||||
|
||||
(for ((n (in-list '(627615 39390 588225 393900588225)))
|
||||
(ap (in-list '(2 2 2 2)))
|
||||
(dr (in-list '(9 6 3 9))))
|
||||
(call-with-values
|
||||
(lambda () (additive-persistence/digital-root n))
|
||||
(lambda (a d)
|
||||
(check-equal? a ap)
|
||||
(check-equal? d dr)
|
||||
(printf ":~a has additive persistence ~a and digital root of ~a;~%" n a d)))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue