Clean day 13.
This commit is contained in:
parent
971c1b0dda
commit
d4199b2810
@ -10,37 +10,25 @@ pairs = [tuple(json.loads(p) for p in block.split("\n")) for block in blocks]
|
||||
|
||||
|
||||
def compare(lhs: list[int | list], rhs: list[int | list]) -> int:
|
||||
if len(lhs) != len(rhs):
|
||||
m = min(len(lhs), len(rhs))
|
||||
r = compare(lhs[:m], rhs[:m])
|
||||
|
||||
if r != 0:
|
||||
return r
|
||||
for lhs_a, rhs_a in zip(lhs, rhs):
|
||||
if isinstance(lhs_a, int) and isinstance(rhs_a, int):
|
||||
if lhs_a != rhs_a:
|
||||
return rhs_a - lhs_a
|
||||
else:
|
||||
return 1 if len(rhs) > len(lhs) else -1
|
||||
else:
|
||||
for lhs_a, rhs_a in zip(lhs, rhs):
|
||||
if isinstance(lhs_a, int) and isinstance(rhs_a, int):
|
||||
if lhs_a != rhs_a:
|
||||
return 1 if rhs_a > lhs_a else -1
|
||||
elif isinstance(lhs_a, list) and isinstance(rhs_a, list):
|
||||
r = compare(lhs_a, rhs_a)
|
||||
if r != 0:
|
||||
return r
|
||||
else:
|
||||
if not isinstance(lhs_a, list):
|
||||
lhs_a = [lhs_a]
|
||||
else:
|
||||
assert isinstance(rhs_a, int)
|
||||
rhs_a = [rhs_a]
|
||||
assert isinstance(rhs_a, list)
|
||||
r = compare(lhs_a, rhs_a)
|
||||
if r != 0:
|
||||
return r
|
||||
return 0
|
||||
if not isinstance(lhs_a, list):
|
||||
lhs_a = [lhs_a]
|
||||
elif not isinstance(rhs_a, list):
|
||||
rhs_a = [rhs_a]
|
||||
assert isinstance(rhs_a, list) and isinstance(lhs_a, list)
|
||||
r = compare(lhs_a, rhs_a)
|
||||
if r != 0:
|
||||
return r
|
||||
|
||||
return len(rhs) - len(lhs)
|
||||
|
||||
|
||||
answer_1 = sum(i + 1 for i, (lhs, rhs) in enumerate(pairs) if compare(lhs, rhs) == 1)
|
||||
answer_1 = sum(i + 1 for i, (lhs, rhs) in enumerate(pairs) if compare(lhs, rhs) > 0)
|
||||
print(f"answer_1 is {answer_1}")
|
||||
|
||||
dividers = [[[2]], [[6]]]
|
||||
|
Loading…
Reference in New Issue
Block a user