HW 1

Homework 1 - aimed at getting familiar with Python language. Not too difficult, for someone with programming experience.

Instructions: https://inst.eecs.berkeley.edu/~cs61a/su19/hw/hw01/arrow-up-right

Solution: https://github.com/tomthestrom/cs61a/blob/master/homeworks/hw01/hw01.pyarrow-up-right

Q1: A Plus Abs B

Fill in the blanks in the following function for adding a to the absolute value of b, without calling abs. You may not modify any of the provided code other than the two blanks.

from operator import add, sub

def a_plus_abs_b(a, b):
    """Return a+abs(b), but without calling abs.

    >>> a_plus_abs_b(2, 3)
    5
    >>> a_plus_abs_b(2, -3)
    5
    """
    if b < 0:
        f = _____
    else:
        f = _____
    return f(a, b)

Q1 - Solution

Q2: Two of Three

Write a function that takes three positive numbers and returns the sum of the squares of the two largest numbers. Use only a single line for the body of the function.

Q2 - Solution

Q3: Largest Factor

Write a function that takes an integer n that is greater than 1 and returns the largest integer that is smaller than n and evenly divides n.

Q3 - Solution

Q4: If Function vs Statement

Let's try to write a function that does the same thing as an if statement.

Despite the doctests above, this function actually does not do the same thing as an if statement in all cases. To prove this fact, write functions c, t, and f such that with_if_statement prints the number 2, but with_if_function prints both 1 and 2.

Q4 - Solution

Q5: Hailstone

Douglas Hofstadter's Pulitzer-prize-winning book, Gödel, Escher, Bach, poses the following mathematical puzzle.

  1. Pick a positive integer n as the start.

  2. If n is even, divide it by 2.

  3. If n is odd, multiply it by 3 and add 1.

  4. Continue this process until n is 1.

This sequence of values of n is often called a Hailstone sequence. Write a function that takes a single argument with formal parameter name n, prints out the hailstone sequence starting at n, and returns the number of steps in the sequence:

Q5 - Solution

def hailstone(n): """Print the hailstone sequence starting at n and return its length.

Last updated