Untitled
unknown
plain_text
a year ago
1.3 kB
4
Indexable
from collections import defaultdict
def read_input(filename):
with open(filename, 'r') as f:
input = f.readlines()
rules = []
subsequences = []
for i in range(len(input)):
if "|" in input[i]:
rules.append(tuple(map(int, input[i].strip().split("|"))))
elif "," in input[i]:
subsequences.append(list(map(int, input[i].strip().split(","))))
return rules, subsequences
def create_adjacent_map(rules):
adj_list = defaultdict(list)
for left, right in rules:
adj_list[left].append(right)
return adj_list
if __name__ == '__main__':
rules, subsequences = read_input("5_input.txt")
adj_list = create_adjacent_map(rules)
valid_seqs = []
for subsequence in subsequences:
valid = True
for i in range(len(subsequence) - 1, 0, -1):
item = subsequence[i]
for successor in adj_list[item]:
if successor in subsequence[:i]:
valid = False
print(f"Invalid subsequence: {subsequence}")
break
if valid:
print(f"Valid subsequence: {subsequence}")
valid_seqs.append(subsequence)
print(sum(seq[len(seq) // 2] for seq in valid_seqs))
Editor is loading...
Leave a Comment