# HW 03

# Q1: Num sevens

    if x == 0:
        return 0
    elif x % 10 == 7:
        return 1 + num_sevens(x // 10)
    else:
        return num_sevens(x//10)
1
2
3
4
5
6

# Q2: Ping-pong

    def helper(res, index, tra):
        if index == n:
            return res
        if num_sevens(index) >= 1 or index % 7 == 0:
            return helper(res - tra, index + 1, -tra)
        else:
            return helper(res + tra, index + 1, tra)
    return helper
1
2
3
4
5
6
7
8

# Q3: Count change

    def largest_two(i):
        if (i > total):
            return i
        else:
            return largest_two(i * 2)

    def count(n,m):
        if n == 0:
            return 1
        elif n < 0:
            return 0
        elif m == 0:
            return 0
        else:
            return count(n-m,m) + count(n,m//2)
    return count(total,largest_two(1))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# Q4: Missing Digits

    def count(res,n,pre):
        if n == 0:
            return res
        else:
            if (pre - n % 10) > 1:
                return count(res + pre - n % 10 - 1,n // 10,n%10)
            else:
                return count(res,n // 10,n%10)
    
    return count(0,n,0)
1
2
3
4
5
6
7
8
9
10