Clean day 13.

This commit is contained in:
Mikael CAPELLE 2022-12-13 08:59:53 +01:00
parent 971c1b0dda
commit d4199b2810

View File

@ -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]]]