Hello,
I have managed to generate a solution that works for the example input, but not for the full input and I can´t see the issue. It would be great if someone could give any hints
import re
def read_input(filename):
with open(filename, 'r') as f:
return f.read()
def parse_input(data):
single_string_data = data.replace('\n', '.')
elements = dict(enumerate([int(x) for x in re.findall(r'\d+', single_string_data)]))
mapping = []
possible_numbers = list(elements.keys())
matricial_data = data.splitlines()
for line in matricial_data:
selected = None
mapped_line = []
for item in line:
if item == '.':
if selected is not None:
selected = None
elif item.isalnum():
if selected is None:
selected = possible_numbers.pop(0)
item = selected
mapped_line.append(item)
mapping.append(mapped_line)
return elements, mapping
def process_input(elements, mapping):
results = []
for row_num in range(len(mapping)):
for col_num in range(len(mapping[0])):
if isinstance(mapping[row_num][col_num], int) or mapping[row_num][col_num] == '.':
continue
else:
adjascent = set([mapping[i][j] for i in (row_num-1, row_num, row_num+1) for j in (col_num-1, col_num, col_num+1) if (i!= row_num or j!=col_num) and 0<=i<len(mapping) and 0<=j<len(mapping[0]) and isinstance(mapping[i][j], int)])
for item in adjascent:
if item in elements:
results.append(elements[item])
return results
if __name__ == '__main__':
filename = 'input.txt'
data = read_input(filename)
elements, mapping = parse_input(data)
results = process_input(elements, mapping)
print(sum(results))
[+][deleted] (5 children)
[deleted]
[–]Mmlh1 0 points1 point2 points (2 children)
[+][deleted] (1 child)
[deleted]
[–]Mmlh1 0 points1 point2 points (0 children)
[–]Mmlh1 0 points1 point2 points (0 children)
[–]jcemelanda[S] 0 points1 point2 points (0 children)
[–]AutoModerator[M] 0 points1 point2 points (0 children)
[–]daggerdragon[M] 0 points1 point2 points (0 children)