fork download
  1. ; what is s
  2.  
  3. (define (s x y z)
  4. (let ((s 0))
  5. (do ((i 0 (+ i 1))) ((<= x i) s)
  6. (do ((j (+ i 1) (+ j 1))) ((<= y j))
  7. (do ((k (+ j 1) (+ k 1))) ((<= z k))
  8. (set! s (+ s 1)))))))
  9.  
  10. (display (s 2 4 6)) (newline)
  11.  
  12. (define (f x y z)
  13. (if (<= x y z)
  14. (/ (+ (* 2 x)
  15. (* 3 x x)
  16. (* x x x)
  17. (- (* 3 x y))
  18. (- (* 3 x y y))
  19. (* z (- (* 6 x y) (* 3 x x) (* 3 x))))
  20. 6)
  21. 0))
  22.  
  23. (display (f 2 4 6)) (newline)
  24.  
  25. (define-syntax assert
  26. (syntax-rules ()
  27. ((assert expr result)
  28. (if (not (equal? expr result))
  29. (for-each display `(
  30. #\newline "failed assertion:" #\newline
  31. expr #\newline "expected: " ,result
  32. #\newline "returned: " ,expr #\newline))))))
  33.  
  34. (do ((i 0 (+ i 1))) ((= i 10))
  35. (do ((j 0 (+ j 1))) ((= j 10))
  36. (do ((k 0 (+ k 1))) ((= k 10))
  37. (when (<= i j k)
  38. (assert (s i j k) (f i j k))))))
Success #stdin #stdout 0.06s 43488KB
stdin
Standard input is empty
stdout
14
14