# 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
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
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
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
2
3
4
5
6
7
8
9
10