Functional Problem Solving (CSC 151 2015S) : EBoards
Primary: [Front Door] [Schedule] - [Academic Honesty] [Disabilities] [Email] - [FAQ] [Teaching & Learning] [Grading] [Taking Notes] [Rubric] - [Calendar]
Current: [Assignment] [EBoard am] [EBoard pm] [Lab] [Outline] [Reading]
Sections: [Assignments] [EBoards am] [EBoards pm] [Labs] [Outlines] [Readings] - [Examples] [Handouts]
Reference: [Setup] [VM] [Errors] - [Functions A-Z] [Functions By Topic] - [Racket] [Scheme Report (R5RS)] [R6RS] [TSPL4]
Related Courses: [Davis (2013F)] [Rebelsky (2014F)] [Weinman (2014F)]
Misc: [Submit Questions] - [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] - [Book Office Hours] - [Issue Tracker (Course)]
Overview
None
Can we copy turtle-line! directly into our exam code?
Yes! (You might even cite it, but you are not required to because it appears in the exam.)
Is (cons 'a 'b) the same as (list 'a 'b)?
No
Extra credit to the first person who can explain why I want to say "Rawhide!" during lab.
Multiple strategies for tally-seven-eleven (forthcoming)
Use a let to name the roll
(define tally-seven-eleven (lambda (n) (cond [(<= n 0) 0] [(let ([roll (pair-a-dice)]) (or (= roll 7) (= roll 11))) (+ 1 (tally-seven-eleven (- n 1)))] [else (tally-seven-eleven (- n 1))])))
Use a let to name a procedure that checks whether a roll is 7 or eleven
(define tally-seven-eleven (let ([seven-or-eleven? (lambda (val) (or (= val 7) (= val 11)))]) (lambda (n) (cond [(<= n 0) 0] [(seven-or-eleven? (pair-a-dice)) (+ 1 (tally-seven-eleven (- n 1)))] [else (tally-seven-eleven (- n 1))]))))
Use member?
(define tally-seven-eleven (lambda (n) (cond [(<= n 0) 0] [(member? (pair-a-dice) (list 7 11)) (+ 1 (tally-seven-eleven (- n 1)))] [else (tally-seven-eleven (- n 1))])))