Itse tehtävän toteuttaminen ei näyttänyt tuottavan ihmisille juurikaan ongelmia, mutta tehtävänannon tarkka lukeminen osoittautui haasteelliseksi: sekä kohdissa 1. että 2. esiintyi ilmaus muotoa "vähintään x ja korkeintaan y". Tämä tarkoittaa, että y kuuluu vielä joukkoon. Kovin moni oli tulkinnut, että heti kun päästään y:hyn, lopetetaan eikä enää käsitellä sitä.
Toinen erhe oli, että annetun funktion termiä β ei käytetty funktion argumentin kertoimena vaan piirrettävän pisteen x-koordinaatin kertoimena.
;; Sormiharjoitukset
;; 1.
(define (id x) x)
;; 2.
(define (median x y z)
(if (=< x y)
(if (=< z x)
x
(min y z))
(if (=< z y)
y
(min x z))))
;; 3.
(define (average x y)
(/ (+ x y) 2))
;; 4.
(define (mean u t)
(lambda (x y)
(u (average (t x) (t y)))))
;; 5.
(define calls 0)
(define (count)
(set! calls (+ calls 1)))
;; 6.
(define (sum b e)
(if (>= b e)
0
(+ b (sum (+ b 1) e))))
; (define (sum b e)
; (/ (+ (* x x) x y (- (* y y))) 2))
;; 7.
(define (sum/f f b e)
(if (>= b e)
0
(+ (f b) (sum/f f (+ b 1) e))))
;; 8.
(define (sum/p p b e)
(sum/f (lambda (x) (if (p x) x 0)) b e))
;; Itse tehtävä
(load "sxh2003.scm")
;; 1.
(define (plot f b e d)
(if (<= b e)
(begin
(plot-point b (f b))
(plot f (+ b d) e d))))
;; 2.
(define (sum term b n x)
(if (<= b n)
(+ (term b x) (sum term (+ b 1) n x))
0))
;; 3.
(define pi (acos -1))
;; 4.
(define (saw-term k x)
(* (/ 2 (* k pi)) (sin (* 2 k pi x))))
;; 5.
(define (saw n)
(lambda (x)
(sum saw-term 1 n x)))
(define (plot-saw n alpha beta)
(plot (lambda (x) (* alpha ((saw n) (* beta x)))) -15 15 0.05))
(open-graphics)
(setup)
(plot-saw 3 2.0 0.1)