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:
|
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]]]
|
||||||
|
Loading…
Reference in New Issue
Block a user