; what is s
(define (s x y z)
(let ((s 0))
(do ((i 0 (+ i 1))) ((<= x i) s)
(do ((j (+ i 1) (+ j 1))) ((<= y j))
(do ((k (+ j 1) (+ k 1))) ((<= z k))
(set! s (+ s 1)))))))
(display (s 2 4 6)) (newline)
(define (f x y z)
(if (<= x y z)
(/ (+ (* 2 x)
(* 3 x x)
(* x x x)
(- (* 3 x y))
(- (* 3 x y y))
(* z (- (* 6 x y) (* 3 x x) (* 3 x))))
6)
0))
(display (f 2 4 6)) (newline)
(define-syntax assert
(syntax-rules ()
((assert expr result)
(if (not (equal? expr result))
(for-each display `(
#\newline "failed assertion:" #\newline
expr #\newline "expected: " ,result
#\newline "returned: " ,expr #\newline))))))
(do ((i 0 (+ i 1))) ((= i 10))
(do ((j 0 (+ j 1))) ((= j 10))
(do ((k 0 (+ k 1))) ((= k 10))
(when (<= i j k)
(assert (s i j k) (f i j k))))))
OyB3aGF0IGlzIHMKCihkZWZpbmUgKHMgeCB5IHopCiAgKGxldCAoKHMgMCkpCiAgICAoZG8gKChpIDAgKCsgaSAxKSkpICgoPD0geCBpKSBzKQogICAgICAoZG8gKChqICgrIGkgMSkgKCsgaiAxKSkpICgoPD0geSBqKSkKICAgICAgICAoZG8gKChrICgrIGogMSkgKCsgayAxKSkpICgoPD0geiBrKSkKICAgICAgICAgIChzZXQhIHMgKCsgcyAxKSkpKSkpKQoKKGRpc3BsYXkgKHMgMiA0IDYpKSAobmV3bGluZSkKCihkZWZpbmUgKGYgeCB5IHopCiAgKGlmICg8PSB4IHkgeikKICAgICAgKC8gKCsgKCogMiB4KQogICAgICAgICAgICAoKiAzIHggeCkKICAgICAgICAgICAgKCogeCB4IHgpCiAgICAgICAgICAgICgtICgqIDMgeCB5KSkKICAgICAgICAgICAgKC0gKCogMyB4IHkgeSkpCiAgICAgICAgICAgICgqIHogKC0gKCogNiB4IHkpICgqIDMgeCB4KSAoKiAzIHgpKSkpCiAgICAgICAgIDYpCiAgICAgIDApKQoKKGRpc3BsYXkgKGYgMiA0IDYpKSAobmV3bGluZSkKCihkZWZpbmUtc3ludGF4IGFzc2VydAogIChzeW50YXgtcnVsZXMgKCkKICAgICgoYXNzZXJ0IGV4cHIgcmVzdWx0KQogICAgICAoaWYgKG5vdCAoZXF1YWw/IGV4cHIgcmVzdWx0KSkKICAgICAgICAgIChmb3ItZWFjaCBkaXNwbGF5IGAoCiAgICAgICAgICAgICNcbmV3bGluZSAiZmFpbGVkIGFzc2VydGlvbjoiICNcbmV3bGluZQogICAgICAgICAgICBleHByICNcbmV3bGluZSAiZXhwZWN0ZWQ6ICIgLHJlc3VsdAogICAgICAgICAgICAjXG5ld2xpbmUgInJldHVybmVkOiAiICxleHByICNcbmV3bGluZSkpKSkpKQoKKGRvICgoaSAwICgrIGkgMSkpKSAoKD0gaSAxMCkpCiAgKGRvICgoaiAwICgrIGogMSkpKSAoKD0gaiAxMCkpCiAgICAoZG8gKChrIDAgKCsgayAxKSkpICgoPSBrIDEwKSkKICAgICAgKHdoZW4gKDw9IGkgaiBrKQogICAgICAgIChhc3NlcnQgKHMgaSBqIGspIChmIGkgaiBrKSkpKSkp