Guest User

Untitled

a guest
Jun 18th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. (define (accum pred proc seed . keywords)
  2. (let-keywords* keywords ((terminal-fun identity)
  3. (cons cons)
  4. (acc-init '()))
  5. (let rec ((seed seed)(acc acc-init))
  6. (if (pred seed)
  7. (terminal-fun acc)
  8. (rec (proc seed)(cons seed acc))))))
  9.  
  10. (define (collatz n)
  11. (accum (pa$ = 1)
  12. (lambda (n)
  13. (if (even? n)
  14. (/ n 2)
  15. (+ 1 (* 3 n))))
  16. n
  17. :terminal-fun (pa$ cons 1)))
  18.  
  19. (collatz 27)
  20. ;; (1 2 4 8 16 5 10 20 40 80 160 53 106 35 70 23 46 92 184 61 122 244 488 976 325 650 1300 433 866 1732 577 1154 2308 4616 9232 3077 6154 2051 4102 1367 2734 911 1822 3644 7288 2429 4858 1619 3238 1079 2158 719 1438 479 958 319 638 1276 425 850 283 566 1132 377 754 251 502 167 334 668 1336 445 890 1780 593 1186 395 790 263 526 175 350 700 233 466 155 310 103 206 412 137 274 91 182 364 121 242 484 161 322 107 214 71 142 47 94 31 62 124 41 82 27)
  21.  
  22. (define (fizzbuzz n)
  23. (accum zero?
  24. (cut - <> 1)
  25. n
  26. :cons (lambda (n acc)
  27. (let1 mul? (compose zero? (pa$ remainder n))
  28. (cons (cond ((mul? 15) "fizzbuzz")
  29. ((mul? 5) "buzz")
  30. ((mul? 3) "fizz")
  31. (else n))
  32. acc)))))
  33.  
  34. (print (fizzbuzz 100))
  35. ;; (1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fizz 13 14 fizzbuzz 16 17 fizz 19 buzz fizz 22 23 fizz buzz 26 fizz 28 29 fizzbuzz 31 32 fizz 34 buzz fizz 37 38 fizz buzz 41 fizz 43 44 fizzbuzz 46 47 fizz 49 buzz fizz 52 53 fizz buzz 56 fizz 58 59 fizzbuzz 61 62 fizz 64 buzz fizz 67 68 fizz buzz 71 fizz 73 74 fizzbuzz 76 77 fizz 79 buzz fizz 82 83 fizz buzz 86 fizz 88 89 fizzbuzz 91 92 fizz 94 buzz fizz 97 98 fizz buzz)
Add Comment
Please, Sign In to add comment