FOOP Practice Midterm 3 -- Recursion & Lists Practice Problems

1.  What is the exact output of each:

`> (cons '(yes you will) '(enjoy winter break))`

`> (append '(yes you will) '(enjoy winter break))`

```; This one is really important to understand. If you have questions, ask!
> (filter (lambda (x) (member? 'a x)) '((yeah) gunn should (have a) second turkey feast))

> (reduce append '((cows on) (toothpicks are) (delicious)))```

```> (define (mystery p? s)
(cond ((empty? s) ‘())
((p? (first s)) (se (first s) (mystery p? (bf s))))
(else (mystery p? (bf s))))) ```
` `
`> (mystery number? '(one 2 three 4 5 six))`

```> (define (f n)
(cond ((< n 3) 1)
(else (+ (f (- n 1)) (f (- n 2))))))```
` `
`> (f 5)`

2. If Mr. Bell could cut his consumption of caffeinated products, it would improve his health. Despite being a math teacher, the only time he uses numbers in sentences is when he discusses his eating habits. Help Mr.Bell by writing the decaffeinate function, which takes a sentence uttered by Mr. Bell and chops the amount of caffeinated foods in half. You can write a helper function if you wish, but the decaffeinate function MUST be written recursively.

`> (decaffeinate '(demand 4 chocolate bars and 16 bottles of Coke)) (demand 2 chocolate bars and 8 bottles of Mexican Coke) `
` `
```> (decaffeinate '(drink 7 cups of tea))
(drink 3.5 cups of tea)```

3. Write the function reversi that takes a sentence of words and returns a sentence containing the reverses of the words in reverse order. It also can take a word as its input and return the word in reverse order.

```> (reversi '())
() ```
` `
```> (reversi 'bautista)
atsituab ```
` `
```> (reversi '(alpha beta gamma))
(ammag ateb ahpla) ```

Fill in the blanks to create reversi:

`(define (reversi input)     `
`        (cond ((empty? input) ________________)        `
`              ((sentence? input) ________________________________________________)           `
`              (else ________________________________________________)))`

4. The function rest-of-word takes a letter and a word as its arguments and returns the rest of the word, starting with the first instance of the letter. If the letter does not appear in the word, rest-of-words returns #f.

```> (rest-of-word 'a 'hippogriff)
#f ```
` `
```> (rest-of-word 'f 'inflammable)
flammable ```
` `
```> (rest-of-word 'a 'fairway)
airway```

5.  Write a procedure called deep-count that counts the number of words in a list

`> (deep-count ‘(the (4 fish) swam through the seaweed (in the (kelp forest))))11`