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)
|
my_input = aoclib.getMultiLineInputAsArray(day=DAY, test=test_mode)
|
||||||
|
|
||||||
populate_rule_dict(my_input[0])
|
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
|
counter = 0
|
||||||
for message in my_input[1]:
|
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
|
counter += 1
|
||||||
|
|
||||||
return counter
|
return counter
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user