# CS 61A

Time: Tue 10/17/17 5 pm

## Midterm 2 Picky Questions

### Vulcans (sp15-mt2-2)

1. Draw the environment diagram that results from executing the code after the entire program is finished. No errors occur during the execution of this example.

``````def scramble(egg):
return [egg, over(egg)]

def over(easy):
easy[1] = [[easy], 2]
return list(easy[1])

egg = scramble([12, 24])``````

### What color is it? (sp15-mt2-4)

Implement the `look` method of the `Dress` class. The `look` method returns a `Dress` instance's current color when the number of times that the instance's `look` method has ever been invoked evenly divides the total number times that the `look` method of any `Dress` instance has ever been invoked. Otherwise, the instance's `color` changes to the most recently returned color from any call to `look`, and `None` is returned.

``````class Dress:
"""
What color is the dress?

>>> blue = Dress('blue')
>>> blue.look()
'blue'
>>> gold = Dress('gold')
>>> gold.look()
'gold'
>>> blue.look() # 2 does not evenly divide 3; changes to gold
>>> Dress('black').look()
'black'
>>> gold.look() # 2 does not evenly divide 5; changes to black
>>> gold.look() # 3 evenly divides 6
'black'
>>> Dress('white').look()
'white'
>>> gold.look() # 4 evenly divides 8
'black'
>>> blue.look() # 3 evenly divides 9
'gold'
"""

seen = 0
color = None

def __init__(self, color):
self.color = color
self.seen = 0

def look(self):
=
=
if :
=
return
else:
= ``````

### What color is it? (sp15-mt2-4)

Implement `decrypt`, which takes a string `s` and a dictionary `d` that contains words as values and their secret codes as keys. It returns a list of all possible ways in which `s` can be decoded by splitting it into secret codes and separating the corresponding words by spaces.

``````def decrypt(s, d):
"""
List all possible decoded strings of s.

>>> codes = {
... 'alan': 'spooky',
... 'al': 'drink',
... 'antu': 'your',
... 'turing': 'ghosts',
... 'tur': 'scary',
... 'ing': 'skeletons',
... 'ring': 'ovaltine'
... }
>>> decrypt('alanturing', codes)
['drink your ovaltine', 'spooky ghosts', 'spooky scary skeletons']
"""

if s == '':
return []
ms = []
if :
ms.append()
for k in :
first , suffix = s[:k], s[k:]
if :
for rest in :
ms.append()
return ms``````