Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 1.33 KB | None | 0 0
  1. (define (numbers count)
  2.   (define (seq number result)
  3.     (if (= 0 number)
  4.         result
  5.       (seq (- number 1) (cons number result))))
  6.   (seq count '()))
  7.  
  8. (define (read-chapters chapters-left problem-counts)
  9.   (if (= 0 chapters-left)
  10.       (reverse problem-counts)
  11.     (read-chapters (- chapters-left 1) (cons (read) problem-counts))))
  12.  
  13. (define (page-numbers problem-count starting-page per-page)
  14.   (define (seq number result)
  15.     (if (> number problem-count)
  16.         result
  17.       (seq (+ number 1) (cons (+ starting-page (quotient (- number 1) per-page)) result))))
  18.   (reverse (seq 1 '())))
  19.  
  20. (let* ((chapters (read))
  21.        (problems-per-page (read))
  22.        (problem-counts (read-chapters chapters '()))
  23.        (page 1))
  24.   (writeln (foldl (lambda (problem-count result)
  25.                     (let ((specials
  26.                            (foldl (lambda (problem-number page-number result)
  27.                                     (+ result (if (= problem-number page-number) 1 0)))
  28.                                   0
  29.                                   (numbers problem-count)
  30.                                   (page-numbers problem-count page problems-per-page))))
  31.                       (set! page (+ page (ceiling (/ problem-count problems-per-page))))
  32.                       (+ result specials)))
  33.                   0 problem-counts)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement