Problem 3. An old Countess from Europe wishes to buy a program from your company that counts how often a name starts with "de" in her (huge) list of friends. Your manager wants to make a quick buck and therefore asks you to design the function count, which consumes a list of strings and counts how many of them start with "de". Since he was in a good mood, he also supplied the essential data definition:
;; List of string: ;; ;; A LOS is one of: ;; -- empty ;; -- (cons String LOS)
and then walked off mumbling substring, 0, 2 and things like that.
Solution:
;; Grader: Ryan ;; You may assume that strings are 2 chars or longer. ;; count: LOS -> Number [PT 1] ;; count how often a string starting with ;; "de" occurs in los [PT 1] (define (count los) (cond ;; [PT 2: for two cond lines] [(empty? los) 0] ;; [PT 1, for base case] [else (cond ;; [PT 3: 1 for natural recursions, ;; 1 for nested conditional, ;; 1 for correctness] [(string=? (substring (first los) 0 2) "de") (+ 1 (count (rest los)))] [else (count (rest los))])])) ;; Examples/tests: ;; [PT 2; for a non-trivial example or two examples] (equal? (count (cons "de he" (cons "le" (cons "de ri" (cons "le" (cons "ri" empty)))))) 2)