Functional Problem Solving (CSC 151 2013F) : EBoards

CSC151.02 2013F, Class 37: Randomized (Unpredictable) Drawing


Overview

Admin

Question on Vector-Fill!

; Goal of vector-fill!: Fill an existing vector with a particular value
> (define v (vector 1 2 3))
> v
'#(1 2 3)
> (vector-fill! v 0)
> v
'#(0 0 0)

; An INCORRECT solution
(define vector-fill!
  (lambda (vec val)
    (make-vector (vector-length vec) val)))
; This does not achieve the required goals.  Yes, it gives a vector
; of the required form, but it's a NEW vector.  (It doesn't mutate.)

(define vector-phil!
  (lambda (vec val)
    (for-each (lambda (i) (vector-set! vec i val))
              (iota (vector-length vec)))))

(define vector-pfil!
  (lambda (vec val)
    (let kernel ([pos 0])
      (when (< pos (vector-length vec))
        (vector-set! vec pos val)
        (kernel (+ pos 1))))))

Does it make a difference if you iteratire from vector-length to 0 or from 0 to vector-length?

Not really, it depends on the problem. Try one, see how well it works.

Questions on Homework

Random art

Why use randomness

The procedure

Simulation


Samuel A. Rebelsky, rebelsky@grinnell.edu

Copyright (c) 2007-2013 Janet Davis, Samuel A. Rebelsky, and Jerod Weinman. (Selected materials are copyright by John David Stone or Henry Walker and are used with permission.)

Creative Commons License

This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.