Advertisement
Guest User

Untitled

a guest
Oct 18th, 2018
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.49 KB | None | 0 0
  1. #lang racket
  2. ;Task 7 from week 2
  3. (define (divisors-sum n)
  4.   (define (loop i sum)
  5.     (if (< i n)
  6.     (if (zero? (remainder n i))
  7.         (loop (+ i 1) (+ sum i))
  8.         (loop (+ i 1) sum)
  9.  
  10.         )
  11.     sum))
  12.     (loop 1 0))
  13.  
  14. ;Task 8 from week 2
  15. (define (perfect? n)
  16.   (= n (divisors-sum n)))
  17.  
  18. ;Task 9 from week 2
  19. (define (prime? n)
  20.   (define (loop i)
  21.     (cond [(> i (sqrt n)) #t]
  22.           [(zero? (remainder n i)) #f]
  23.           [else (loop (+ i 1))]))
  24.   (if (= n 1)
  25.       #f
  26.       (loop 2)))
  27.  
  28. ;Task 10 from week 2
  29.  
  30. (define (last n)
  31.   (remainder n 10))
  32.  
  33. (define (quot n)
  34.   (quotient n 10))
  35.  
  36. (define (increasing? n)
  37.   (define (loop n)
  38.     (cond [(< n 10) #t]
  39.           [(> (last n) (last (quot n))) (loop (quot n))]
  40.           [else #f]))
  41.   (loop n))
  42.  
  43.  
  44. ;Task 11 from week 2
  45.  
  46. (define (to-binary n)
  47.   (if (< n 2)
  48.       n
  49.       (+ (* 10 (to-binary (quotient n 2)))
  50.          (remainder n 2))))
  51.  
  52. ;Iterative
  53.  
  54. (define (to-binary* n)
  55.   (define (loop n res bits)
  56.     (if (= n 0)
  57.         res
  58.         (loop (quotient n 2)
  59.               (+ res (* (remainder n 2) (expt 10 bits)))
  60.               (+ bits 1))))
  61.   (loop n 0 0))
  62.      
  63.  
  64. ;Accumulate definition
  65. ;It's standart, but should be well known to us.
  66. (define (accumulate op nv a b term next)
  67.   (if (> a b)
  68.       nv
  69.       (op (term a)
  70.           (accumulate op nv (next a) b term next))))
  71.  
  72. ;Task 1 from week 3
  73. (define (!! n)
  74.   (accumulate
  75.    * 1
  76.    (if (even? n) 2 1) n
  77.    (lambda (x) x)
  78.    (lambda (x) (+ x 2))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement