Dag: 8
Språk: Python
Ligger lite efter, här kommer min (tyvärr ickefungerande) lösning till dag 8. Trots att jag får rätt svar på test datan fungerar den inte på den riktiga. Provade att "låna" lite kod från någon annan här i tråden, och fick då ett annat svar, vilket också var rätt. Något som kan se var min kod brister?
inp = []
with open('D8/test.txt', 'r') as f:
for line in f.readlines():
temp = []
for word in line.split():
if word != '|':
temp.append(word)
inp.append(temp)
def find_num(word, key):
if len(word) == 2:
return 1
elif len(word) == 3:
return 7
elif len(word) == 4:
return 4
elif len(word) == 7:
return 8
elif len(word) == 6:
word = list(word)
if key[2][0] in word and key[2][1] in word:
return 9
else:
return 6
elif len(word) == 5:
word = list(word)
if key[2][0] in word and key[2][1] in word:
return 3
elif key[6][0] in word and key[6][1] in word:
return 5
else:
return 2
res = 0
for line in inp:
current_sum = 0
key = [[] for i in range(8)]
one_found = False
four_found = False
while not one_found and not four_found:
for word in line:
if len(word) == 2 and len(key[2]) == 0:
key[2].append(word[0])
key[2].append(word[1])
one_found = True
for word in line:
if len(word) == 4:
for char in word:
if char not in key[2]:
key[6].append(char)
four_found = True
for i in range(1,5):
num = find_num(line[-i], key)
current_sum += num * 10 ** (i-1)
res += current_sum
print(f"Sum of numbers is {res}")
find_num bör kunna returnera 0-9, men du har missat ett nummer.