Blame


1 12687dd9 2023-08-04 jrmu ;; The first three lines of this file were inserted by DrScheme. They record metadata
2 12687dd9 2023-08-04 jrmu ;; about the language level of this file in a form that our tools can easily process.
3 12687dd9 2023-08-04 jrmu #reader(lib "htdp-advanced-reader.ss" "lang")((modname |29.3|) (read-case-sensitive #t) (teachpacks ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp") (lib "gui.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #t #t none #f ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp") (lib "gui.ss" "teachpack" "htdp")))))
4 12687dd9 2023-08-04 jrmu ;vector-sum : vector -> number
5 12687dd9 2023-08-04 jrmu ;Given avector, sum all its entries.
6 12687dd9 2023-08-04 jrmu
7 12687dd9 2023-08-04 jrmu (define (vector-sum avector)
8 12687dd9 2023-08-04 jrmu (local ((define (vector-sum-aux i)
9 12687dd9 2023-08-04 jrmu (cond
10 12687dd9 2023-08-04 jrmu [(zero? i) 0]
11 12687dd9 2023-08-04 jrmu [else (+ (vector-ref avector (sub1 i))
12 12687dd9 2023-08-04 jrmu (vector-sum-aux (sub1 i)))])))
13 12687dd9 2023-08-04 jrmu (vector-sum-aux (vector-length avector))))
14 12687dd9 2023-08-04 jrmu
15 12687dd9 2023-08-04 jrmu ;vector-sum-aux : vector N -> number
16 12687dd9 2023-08-04 jrmu ;Given avector and i, sum up the numbers within a vector in [0,i) starting from i-1 to 0.
17 12687dd9 2023-08-04 jrmu
18 12687dd9 2023-08-04 jrmu
19 12687dd9 2023-08-04 jrmu ;vector-sum-lr : vector -> number
20 12687dd9 2023-08-04 jrmu ;Given avector, sums the vector from left to right (like English-reading humans would do).
21 12687dd9 2023-08-04 jrmu
22 12687dd9 2023-08-04 jrmu (define (vector-sum-lr avector)
23 12687dd9 2023-08-04 jrmu (local ((define avec-length (vector-length avector))
24 12687dd9 2023-08-04 jrmu (define (vector-sum-lr-aux i)
25 12687dd9 2023-08-04 jrmu (cond
26 12687dd9 2023-08-04 jrmu [(= avec-length i) 0]
27 12687dd9 2023-08-04 jrmu [else (+ (vector-ref avector i)
28 12687dd9 2023-08-04 jrmu (vector-sum-lr-aux (add1 i)))])))
29 12687dd9 2023-08-04 jrmu (vector-sum-lr-aux 0)))
30 12687dd9 2023-08-04 jrmu
31 12687dd9 2023-08-04 jrmu ;vector-sum-lr-aux : vector N -> number
32 12687dd9 2023-08-04 jrmu ;Given avector and i, sum up the elements within the vector from [0,i) from left to right.
33 12687dd9 2023-08-04 jrmu
34 12687dd9 2023-08-04 jrmu
35 12687dd9 2023-08-04 jrmu (define vector1 (vector 5 6 7 8))
36 12687dd9 2023-08-04 jrmu (equal? (vector-sum vector1) 26)
37 12687dd9 2023-08-04 jrmu (equal? (vector-sum vector1) (vector-sum-lr vector1))