Untitled

 avatar
unknown
plain_text
4 months ago
1.3 kB
2
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