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-beginner-reader.ss" "lang")((modname 11.3.1) (read-case-sensitive #t) (teachpacks ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp"))) (htdp-settings #(#t constructor repeating-decimal #f #t none #f ((lib "draw.ss" "teachpack" "htdp") (lib "arrow.ss" "teachpack" "htdp")))))
4 12687dd9 2023-08-04 jrmu ;;Produces an intenger between n and m-1
5 12687dd9 2023-08-04 jrmu
6 12687dd9 2023-08-04 jrmu ;; random-n-m : integer integer -> integer
7 12687dd9 2023-08-04 jrmu ;; ...
8 12687dd9 2023-08-04 jrmu ;; Assume: n < m
9 12687dd9 2023-08-04 jrmu (define (random-n-m n m)
10 12687dd9 2023-08-04 jrmu (+ (random (- m n)) n))
11 12687dd9 2023-08-04 jrmu
12 12687dd9 2023-08-04 jrmu ;Data Definition
13 12687dd9 2023-08-04 jrmu ;A natural-number is either
14 12687dd9 2023-08-04 jrmu ;1. 0 or
15 12687dd9 2023-08-04 jrmu ;2. (add1 n) where n is a natural-number.
16 12687dd9 2023-08-04 jrmu ;
17 12687dd9 2023-08-04 jrmu ;A list-of-numbers is either
18 12687dd9 2023-08-04 jrmu ;1. an empty list or
19 12687dd9 2023-08-04 jrmu ;2. (cons n lon) where n is a number and
20 12687dd9 2023-08-04 jrmu ;lon is a list-of-numbers.
21 12687dd9 2023-08-04 jrmu ;
22 12687dd9 2023-08-04 jrmu ;tie-dyed : natural-number -> list-of-numbers
23 12687dd9 2023-08-04 jrmu ;Consumes a natural-number n and produces a list
24 12687dd9 2023-08-04 jrmu ;with that many randomly numbers between
25 12687dd9 2023-08-04 jrmu ;20 and 120.
26 12687dd9 2023-08-04 jrmu ;
27 12687dd9 2023-08-04 jrmu ;Template
28 12687dd9 2023-08-04 jrmu ;(define (tie-dyed n)
29 12687dd9 2023-08-04 jrmu ; (cond
30 12687dd9 2023-08-04 jrmu ; [(zero? n) ...]
31 12687dd9 2023-08-04 jrmu ; [(>= n 1) ... (tie-dyed (sub1 n))]
32 12687dd9 2023-08-04 jrmu ; [else (error 'tie-dyed "Not a natural number")]))
33 12687dd9 2023-08-04 jrmu
34 12687dd9 2023-08-04 jrmu ;Examples
35 12687dd9 2023-08-04 jrmu ;(tie-dyed 0)
36 12687dd9 2023-08-04 jrmu ;empty
37 12687dd9 2023-08-04 jrmu ;(tie-dyed 1)
38 12687dd9 2023-08-04 jrmu ;(cons (random-n-m 20 121) empty)
39 12687dd9 2023-08-04 jrmu ;(tie-dyed 2)
40 12687dd9 2023-08-04 jrmu ;(cons (random-n-m 20 121)
41 12687dd9 2023-08-04 jrmu ; (cons (random-n-m 20 121) empty))
42 12687dd9 2023-08-04 jrmu
43 12687dd9 2023-08-04 jrmu (define (tie-dyed n)
44 12687dd9 2023-08-04 jrmu (cond
45 12687dd9 2023-08-04 jrmu [(zero? n) empty]
46 12687dd9 2023-08-04 jrmu [(>= n 1) (cons (random-n-m 20 121) (tie-dyed (sub1 n)))]
47 12687dd9 2023-08-04 jrmu [else (error 'tie-dyed "Not a natural number")]))
48 12687dd9 2023-08-04 jrmu
49 12687dd9 2023-08-04 jrmu ;Contract, Purpose, Header
50 12687dd9 2023-08-04 jrmu ;draw-circles : posn list-of-numbers -> boolean
51 12687dd9 2023-08-04 jrmu ;Given p and a-list, draw-circles draws concentric circles centered at p
52 12687dd9 2023-08-04 jrmu ;with radius given by the elements of a-list. Each circle is drawn
53 12687dd9 2023-08-04 jrmu ;by calling draw-circle.
54 12687dd9 2023-08-04 jrmu ;
55 12687dd9 2023-08-04 jrmu ;Template
56 12687dd9 2023-08-04 jrmu
57 12687dd9 2023-08-04 jrmu (define (draw-circles p a-list)
58 12687dd9 2023-08-04 jrmu (cond
59 12687dd9 2023-08-04 jrmu [(empty? a-list) true]
60 12687dd9 2023-08-04 jrmu [(draw-circle p (first a-list) 'red) (draw-circles p (rest a-list))]
61 12687dd9 2023-08-04 jrmu [else false]))
62 12687dd9 2023-08-04 jrmu
63 12687dd9 2023-08-04 jrmu (start 200 200)
64 12687dd9 2023-08-04 jrmu (draw-circles (make-posn 100 100) (tie-dyed 1000))