Untitled
unknown
python
a year ago
1.4 kB
5
Indexable
def get_mid(update):
return update[int((len(update)-1)/2)]
def respect_rules(rules, parsed_nums, update_num):
for rule in rules:
if rule[0] == update_num and rule[1] in parsed_nums:
return False
return True
def valid_update(rules, update):
parsed_nums = []
for update_num in update:
index = len(parsed_nums)
for rule in rules:
if rule[0] == update_num and rule[1] in parsed_nums:
index = min(parsed_nums.index(rule[1]), index)
parsed_nums.insert(index,update_num)
return parsed_nums
with open("day05 input.txt", 'r') as f:
content = f.read()
rules_string, updates_string = content.split('\n\n')
rules = list()
for rule in rules_string.split():
rule_split = rule.split('|')
rules.append((int(rule_split[0]), int(rule_split[1])))
updates = list()
for update in updates_string.split():
update_split = update.split(',')
updates.append(tuple(map(int,update_split)))
valid_update(rules, updates[5])
soma_mids_ordenados = 0
soma_mids = 0
for update in updates:
update_list = list(update)
validado = valid_update(rules,update_list)
if validado != update_list:
soma_mids_ordenados += get_mid(validado)
else:
soma_mids += get_mid(update)
print('parte 1:', soma_mids)
print('parte 2:',soma_mids_ordenados)
Editor is loading...
Leave a Comment