day19: lean on the solution for p2 and split the checks in two (much!) smaller lists -> from 1.1s down to 8ms
This commit is contained in:
parent
80a918cd69
commit
5accf0f63b
18
day19.py
18
day19.py
@ -51,10 +51,24 @@ def part1(test_mode=False):
|
||||
my_input = aoclib.getMultiLineInputAsArray(day=DAY, test=test_mode)
|
||||
|
||||
populate_rule_dict(my_input[0])
|
||||
valid_messages = set(get_valid_messages("0"))
|
||||
# split rule 0 to save time
|
||||
# rule 0 == 8 11
|
||||
valid_messages_8 = get_valid_messages("8")
|
||||
valid_messages_11 = get_valid_messages("11")
|
||||
len_8 = len(valid_messages_8[0])
|
||||
len_11 = len(valid_messages_11[0])
|
||||
valid_messages_8 = set(valid_messages_8)
|
||||
valid_messages_11 = set(valid_messages_11)
|
||||
|
||||
counter = 0
|
||||
for message in my_input[1]:
|
||||
if message in valid_messages:
|
||||
if message[:len_8] in valid_messages_8:
|
||||
message = message[len_8:]
|
||||
|
||||
if message[:len_11] in valid_messages_11:
|
||||
message = message[len_11:]
|
||||
|
||||
if len(message) == 0:
|
||||
counter += 1
|
||||
|
||||
return counter
|
||||
|
||||
Loading…
Reference in New Issue
Block a user