You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
985 B
38 lines
985 B
2 years ago
|
lines = open("input.txt", 'r').read().splitlines()
|
||
|
leng = len(lines)
|
||
|
bits = len(lines[0])
|
||
|
|
||
|
def fun(bol):
|
||
|
targetCandidates = list(range(0,leng))
|
||
|
rating = 0
|
||
|
target = True
|
||
|
for i in range(0, bits):
|
||
|
count = 0
|
||
|
vacate = []
|
||
|
for j in targetCandidates:
|
||
|
if len(targetCandidates) == 1:
|
||
|
o2 = int(lines[j], 2)
|
||
|
break
|
||
|
elif i != 0 and bool(int(lines[j][i-1])) != target :
|
||
|
vacate.append(j)
|
||
|
elif bool(int(lines[j][i])):
|
||
|
count += 1
|
||
|
targetCandidates = [i for i in targetCandidates if i not in vacate]
|
||
|
if count >= len(targetCandidates)/2 and bol:
|
||
|
target = True
|
||
|
elif count < len(targetCandidates)/2 and not bol:
|
||
|
target = True
|
||
|
else:
|
||
|
target = False
|
||
|
if len(targetCandidates) == 2:
|
||
|
if bool(int(lines[targetCandidates[0]][i])) == target:
|
||
|
return int(lines[targetCandidates[0]], 2)
|
||
|
else:
|
||
|
return int(lines[targetCandidates[1]], 2)
|
||
|
elif len(targetCandidates) == 1:
|
||
|
return int(lines[targetCandidates[0]], 2)
|
||
|
|
||
|
|
||
|
print(fun(True)*fun(False))
|
||
|
|