Skip to content

Commit ee51b7f

Browse files
committed
Day 16 - cleanup
1 parent 4381a56 commit ee51b7f

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

16/2.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,55 +30,55 @@ def handle_value(type, value, new_value):
3030

3131

3232
def parse_next_packet(bits):
33-
version = bits[0:3]
34-
type = bits[3:6]
35-
version = int(version, 2)
36-
type = int(type, 2)
33+
type = int(bits[3:6], 2)
3734
value = None
3835

3936
if type == 4:
4037
literal = ""
4138
offset = 6
4239
while True:
4340
is_last = int(bits[offset:offset+1]) == 0
44-
val = bits[offset+1:offset+5]
45-
literal += val
41+
literal += bits[offset+1:offset+5]
4642
offset += 5
4743
if is_last:
4844
value = int(literal, 2)
4945
break
5046
L = offset
5147
else:
52-
I = int(bits[6:7])
53-
if I:
48+
length_type = int(bits[6:7])
49+
if length_type:
5450
num_subpackets = int(bits[7:18], 2)
5551
L = 18
52+
sub_bits = bits[L:]
5653
for _ in range(num_subpackets):
57-
_, new_L, v = parse_next_packet(bits[L:])
58-
value = handle_value(type, value, v)
54+
new_L, new_value = parse_next_packet(sub_bits)
55+
value = handle_value(type, value, new_value)
5956
L += new_L
57+
sub_bits = bits[L:]
6058
else:
6159
subpacket_length = int(bits[7:22], 2)
6260
L = 22 + subpacket_length
6361
sub_bits = bits[22:L]
6462
while len(sub_bits):
65-
sub_bits, _, v = parse_next_packet(sub_bits)
66-
value = handle_value(type, value, v)
63+
new_L, new_value = parse_next_packet(sub_bits)
64+
value = handle_value(type, value, new_value)
65+
sub_bits = sub_bits[new_L:]
6766

68-
return bits[L:], L, value
67+
return L, value
6968

7069

7170
def solve(line):
7271
bin_length = len(line)*4
7372
spec = '{fill}{align}{width}{type}'.format(fill='0', align='>', width=bin_length, type='b')
7473
hex = int(line, 16)
75-
bits = format(hex, spec)
76-
val = None
74+
remaining_bits = format(hex, spec)
75+
value = None
7776

78-
while len(bits) > 7:
79-
bits, L, val = parse_next_packet(bits)
77+
while len(remaining_bits) > 7:
78+
L, value = parse_next_packet(remaining_bits)
79+
remaining_bits = remaining_bits[L:]
8080

81-
return val
81+
return value
8282

8383

8484
if __name__ == "__main__":

0 commit comments

Comments
 (0)