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
Doug Dale's show in Smith
The ideal outcome of a strong liberal arts education is the ability to bullsh*t coherently and compellingly about any topic.
Rawhide!
Multiple strategies
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))])))