diff --git a/sylvester-test.rkt b/sylvester-test.rkt index a260aaa..f639d1a 100644 --- a/sylvester-test.rkt +++ b/sylvester-test.rkt @@ -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)) + + + diff --git a/sylvester.rkt b/sylvester.rkt index acde75b..bfda876 100644 --- a/sylvester.rkt +++ b/sylvester.rkt @@ -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))