Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define (numbers count)
- (define (seq number result)
- (if (= 0 number)
- result
- (seq (- number 1) (cons number result))))
- (seq count '()))
- (define (read-chapters chapters-left problem-counts)
- (if (= 0 chapters-left)
- (reverse problem-counts)
- (read-chapters (- chapters-left 1) (cons (read) problem-counts))))
- (define (page-numbers problem-count starting-page per-page)
- (define (seq number result)
- (if (> number problem-count)
- result
- (seq (+ number 1) (cons (+ starting-page (quotient (- number 1) per-page)) result))))
- (reverse (seq 1 '())))
- (let* ((chapters (read))
- (problems-per-page (read))
- (problem-counts (read-chapters chapters '()))
- (page 1))
- (writeln (foldl (lambda (problem-count result)
- (let ((specials
- (foldl (lambda (problem-number page-number result)
- (+ result (if (= problem-number page-number) 1 0)))
- 0
- (numbers problem-count)
- (page-numbers problem-count page problems-per-page))))
- (set! page (+ page (ceiling (/ problem-count problems-per-page))))
- (+ result specials)))
- 0 problem-counts)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement