Add extend-sylvester-radix operator.

main
Edward L Platt 5 years ago
parent 6fe7635313
commit f1f4613351

@ -18,3 +18,11 @@
(check-equal? (add-sylvester-radix '(0 1 2) '(1 1 2)) '(1 2 4))
(check-equal? (add-sylvester-radix '(1) '(1)) '(0 1))
(check-equal? ((extend-sylvester-radix 4) '()) '(0 0 0 0))
(check-equal? ((extend-sylvester-radix 3) '(1 1)) '(1 1 0))
(check-equal? ((extend-sylvester-radix 2) '(1 1)) '(1 1))
(check-equal? ((extend-sylvester-radix 1) '(1 1)) '(1 1))

@ -41,12 +41,19 @@
;; 1337
sylvester-radix-value
;; add two sylvester-radix numbers
;; Add two sylvester-radix numbers
;;
;; Example:
;; > (add-sylvester-radix '(1 0 1) '(1 0 2))
;; '(0 1 3)
add-sylvester-radix)
add-sylvester-radix
;; Extend length of sylvester-radix number with zero elements.
;;
;; Example:
;; > ((extend-sylvester-radix 4) '(1 2))
;; '(1 2 0 0)
extend-sylvester-radix)
;; —————————————————————————————————
;; Implementation Section
@ -73,6 +80,16 @@
(define (add-sylvester-radix v w)
(normalize-sylvester-radix (add-components v w)))
;; Create procedure to extend list to length n
(define (extend-sylvester-radix n)
(lambda (v)
(if (>= (length v) n)
v
(append v
(build-list
(- n (length v))
(lambda (x) 0))))))
;; Ensure digits are in the required range by carrying surplus value.
(define (normalize-sylvester-radix v)
(normalize-sylvester-helper v 0 0))

Loading…
Cancel
Save