Binary sum (CLRS exercise 2.1.4)
def binary_sum(a, b):
'''
Sum 2 lists of bits of length n. Result a list of length n+1
'''
result = []
carry = 0
for x in zip(reversed(a), reversed(b)):
c = (sum(x) + carry) % 2
carry = int((sum(x) + carry) / 2)
result.extend([c])
result.extend([carry])
return list(reversed(result))
a = [1,0,0,1]
b = [0,1,1,1]
print(binary_sum(a, b))