Clean day 13.

This commit is contained in:
Mikael CAPELLE 2022-12-13 08:59:53 +01:00
parent 652756a341
commit 7ac9981ae5

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: 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
else:
return 1 if len(rhs) > len(lhs) else -1
else:
for lhs_a, rhs_a in zip(lhs, rhs): for lhs_a, rhs_a in zip(lhs, rhs):
if isinstance(lhs_a, int) and isinstance(rhs_a, int): if isinstance(lhs_a, int) and isinstance(rhs_a, int):
if lhs_a != rhs_a: if lhs_a != rhs_a:
return 1 if rhs_a > lhs_a else -1 return rhs_a - lhs_a
elif isinstance(lhs_a, list) and isinstance(rhs_a, list):
r = compare(lhs_a, rhs_a)
if r != 0:
return r
else: else:
if not isinstance(lhs_a, list): if not isinstance(lhs_a, list):
lhs_a = [lhs_a] lhs_a = [lhs_a]
else: elif not isinstance(rhs_a, list):
assert isinstance(rhs_a, int)
rhs_a = [rhs_a] rhs_a = [rhs_a]
assert isinstance(rhs_a, list) assert isinstance(rhs_a, list) and isinstance(lhs_a, list)
r = compare(lhs_a, rhs_a) r = compare(lhs_a, rhs_a)
if r != 0: if r != 0:
return r return r
return 0
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}") print(f"answer_1 is {answer_1}")
dividers = [[[2]], [[6]]] dividers = [[[2]], [[6]]]