Ищу возможные пути сокращения числа строк кода в программе, которая решает сложение двух bin-чисел.
На всякий случай напишу, что интерес к этому вопросу чисто образовательный (как можно лучше, мне пока не удается понять из-за малой практики на Python). Про метод bin(x) знаю, поэтому просьба считать, что стоит задача собственной реализации такого метода.
Любая критика приветствуется. Спасибо за внимание заранее.
def chunks(l, n):
# 12345 -> [1,2,3,4,5] with .list() method
l = str(l)
for i in xrange(0, len(l), n):
yield int(l[i:i+n])
def merge(list):
# [1,2,3] -> 123
s = ''
for elem in list:
s+=str(elem)
return int(s)
class Binary:
def __init__(self, value):
self.value = value
def add(self, add_value):
s1 = list(chunks(add_value,1))
s2 = list(chunks(self.value,1))
if len(s1) < len(s2):
for i in xrange(0, len(s2)-len(s1)):
s1.insert(0,0)
elif len(s1) > len(s2):
for i in xrange(0, len(s1)-len(s2)):
s2.insert(0,0)
s3 = []
for i in xrange(len(s1)-1, -1, -1):
if s1[i]+s2[i] == 2:
s3.insert(0,0)
s3.insert(0,1)
else:
s3.insert(0, s1[i]+(s2[i]))
self.value = merge(s3)
return self
def view(self):
print self.value
return self
bin = Binary(1).add(110).view()
bin.add(1).view()