; solution for http://www.spoj.pl/problems/FCTRL/ (use numbers) (define (fact-iter init n) (if (= n 1) init (fact-iter (* init n) (- n 1)))) (define (fact n) (fact-iter 1 n)) (define (z-iter count x) (if (<= x 0) count (if (not (= (+ (modulo x 10) 1) 1)) count (z-iter (+ count 1) (/ x 10))))) (define (z n) (z-iter 0 (fact n))) (define (test) (map z '(3 60 100 1024 23456 8735373))) (test)
; solution for http://www.spoj.pl/problems/FCTRL/
(use numbers)
(define (fact-iter init n)
(if (= n 1)
init
(fact-iter (* init n) (- n 1))))
(define (fact n) (fact-iter 1 n))
(define (z-iter count x)
(if (<= x 0)
count
(if (not (= (+ (modulo x 10) 1) 1))
count
(z-iter (+ count 1) (/ x 10)))))
(define (z n)
(z-iter 0 (fact n)))
(define (test)
(map z '(3 60 100 1024 23456 8735373)))
(test)