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.
104 lines
2.9 KiB
104 lines
2.9 KiB
import sys |
|
|
|
class line: |
|
def __init__(self, tempinp, tempout): |
|
self.inp = [] |
|
self.out = [] |
|
self.inp = tempinp.split(' ') |
|
self.out = tempout.split(' ') |
|
def decode(self): |
|
self.one = [] |
|
self.ifone = False |
|
self.four = [] |
|
self.iffour = False |
|
self.seven = [] |
|
self.ifsev = False |
|
self.eigth = [] |
|
self.numbers = self.inp + self.out |
|
#print(self.numbers) |
|
self.three = [] |
|
self.zero = [] |
|
self.nine = [] |
|
self.two = [] |
|
self.five = [] |
|
self.six = [] |
|
decoden = [] |
|
output = '' |
|
|
|
for num in self.numbers: |
|
if len(num) == 2: |
|
self.ifone = True |
|
self.one = sorted(num) |
|
if len(num) == 4: |
|
self.iffour = True |
|
self.four = sorted(num) |
|
if len(num) == 3: |
|
self.ifseven = True |
|
self.seven = sorted(num) |
|
if len(num) == 7: |
|
self.eigth = sorted(num) |
|
|
|
|
|
if self.ifone and self.iffour: |
|
for x in self.numbers: |
|
tempnum = sorted(x) |
|
if all(item in tempnum for item in self.one): |
|
if len(x) == 5: |
|
self.three = tempnum |
|
if len(x) == 6: |
|
if all(item in tempnum for item in self.four): |
|
self.nine = tempnum |
|
else: |
|
self.zero = tempnum |
|
elif len(x) == 6: |
|
self.six = tempnum |
|
else: |
|
county = 0 |
|
for temp in self.four: |
|
if temp in tempnum: |
|
county += 1 |
|
if county == 2 and tempnum != self.one and tempnum != self.seven and tempnum != self.eigth: |
|
self.two = tempnum |
|
elif county == 3: |
|
self.five = tempnum |
|
|
|
decoden.append(self.zero) |
|
decoden.append(self.one) |
|
decoden.append(self.two) |
|
decoden.append(self.three) |
|
decoden.append(self.four) |
|
decoden.append(self.five) |
|
decoden.append(self.six) |
|
decoden.append(self.seven) |
|
decoden.append(self.eigth) |
|
decoden.append(self.nine) |
|
|
|
print(self.out) |
|
print(decoden) |
|
|
|
for number in self.out: |
|
n = sorted(number) |
|
for i in range(len(decoden)): |
|
if decoden[i] == n: |
|
output += str(i) |
|
break |
|
|
|
|
|
print(output) |
|
|
|
return int(output) |
|
|
|
|
|
terminal = [] |
|
count = 0 |
|
|
|
with open(sys.argv[1], 'r') as f: |
|
for i in f.readlines(): |
|
tempin = i.strip() |
|
inp, out = tempin.split(' | ') |
|
terminal.append(line(inp, out)) |
|
|
|
for lin in terminal: |
|
count += lin.decode() |
|
|
|
print(count) |