42 lines
2.1 KiB
Python
42 lines
2.1 KiB
Python
![]() |
# SPDX-License-Identifier: MIT
|
||
|
# Copyright (c) 2021 Akumatic
|
||
|
|
||
|
from code import *
|
||
|
|
||
|
def test_explode(a, b):
|
||
|
tmp = parse_node(a)
|
||
|
tmp.explode()
|
||
|
return str(tmp) == str(parse_node(b))
|
||
|
|
||
|
def test():
|
||
|
vals = read_file("test_input_2.txt")
|
||
|
assert str(parse_node([1,2])) == "[1,2]"
|
||
|
assert str(add(parse_node([1,2]), parse_node([[3,4],5]))) == "[[1,2],[[3,4],5]]"
|
||
|
assert test_explode([[[[[9,8],1],2],3],4], [[[[0,9],2],3],4])
|
||
|
assert test_explode([7,[6,[5,[4,[3,2]]]]], [7,[6,[5,[7,0]]]])
|
||
|
assert test_explode([[6,[5,[4,[3,2]]]],1], [[6,[5,[7,0]]],3])
|
||
|
assert test_explode([[3,[2,[1,[7,3]]]],[6,[5,[4,[3,2]]]]], [[3,[2,[8,0]]],[9,[5,[4,[3,2]]]]])
|
||
|
assert test_explode([[3,[2,[8,0]]],[9,[5,[4,[3,2]]]]], [[3,[2,[8,0]]],[9,[5,[7,0]]]])
|
||
|
print("Passed explosion test")
|
||
|
assert str(add(parse_node([[[[4,3],4],4],[7,[[8,4],9]]]), parse_node([1,1]))) == str(parse_node([[[[0,7],4],[[7,8],[6,0]]],[8,1]]))
|
||
|
print("Passed reduction test")
|
||
|
assert str(sum_nodes([[1,1], [2,2], [3,3], [4,4]])) == "[[[[1,1],[2,2]],[3,3]],[4,4]]"
|
||
|
assert str(sum_nodes([[1,1], [2,2], [3,3], [4,4], [5,5]])) == "[[[[3,0],[5,3]],[4,4]],[5,5]]"
|
||
|
assert str(sum_nodes([[1,1], [2,2], [3,3], [4,4], [5,5], [6,6]])) == "[[[[5,0],[7,4]],[5,5]],[6,6]]"
|
||
|
assert str(sum_nodes(read_file("test_input_1.txt"))) == "[[[[8,7],[7,7]],[[8,6],[7,7]]],[[[0,7],[6,6]],[8,7]]]"
|
||
|
assert str(sum_nodes(vals)) == "[[[[6,6],[7,6]],[[7,7],[7,0]]],[[[7,7],[7,7]],[[7,8],[9,9]]]]"
|
||
|
print("Passed summing nodes test")
|
||
|
assert get_magnitude(parse_node([[1,2],[[3,4],5]])) == 143.
|
||
|
assert get_magnitude(parse_node([[[[0,7],4],[[7,8],[6,0]]],[8,1]])) == 1384.
|
||
|
assert get_magnitude(parse_node([[[[1,1],[2,2]],[3,3]],[4,4]])) == 445.
|
||
|
assert get_magnitude(parse_node([[[[3,0],[5,3]],[4,4]],[5,5]])) == 791.
|
||
|
assert get_magnitude(parse_node([[[[5,0],[7,4]],[5,5]],[6,6]])) == 1137.
|
||
|
assert get_magnitude(parse_node([[[[8,7],[7,7]],[[8,6],[7,7]]],[[[0,7],[6,6]],[8,7]]])) == 3488.
|
||
|
assert part1(vals) == 4140
|
||
|
print("Passed magnitude test")
|
||
|
assert part2(vals) == 3993
|
||
|
print("Passed Part 2")
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
test()
|