示例#1
0
        grid_next = copy.deepcopy(grid)
        for k, v in grid.items():
            active_count = 0
            x, y, z, w = k
            for dx in OFFSETS:
                for dy in OFFSETS:
                    for dz in OFFSETS:
                        for dw in OFFSETS:
                            xt = x + dx
                            yt = y + dy
                            zt = z + dz
                            wt = w + dw
                            test_k = (xt, yt, zt, wt)
                            test_v = grid.get(test_k, INACTIVE)
                            if k == test_k:  #skip testing our unit
                                continue
                            if test_v == ACTIVE:
                                active_count += 1
            if v == ACTIVE and not active_count in (2, 3):
                grid_next[k] = INACTIVE
            if v == INACTIVE and active_count == 3:
                grid_next[k] = ACTIVE

        grid = copy.deepcopy(grid_next)

    return len([v for v in grid.values() if v == ACTIVE])


if __name__ == '__main__':
    puzzle_input = aoc.puzzle_input(YEAR, DAY)
    print(f'Part {PART}: ', solve(puzzle_input))
示例#2
0
 def test(self):
     test_input = aoc.puzzle_input(YEAR, DAY, is_test=True)
     self.assertEqual(solve(test_input), 19208)
示例#3
0
 def test2(self):
     test_input = aoc.puzzle_input(YEAR, DAY, is_test=True, extra='_2')
     self.assertEqual(solve(test_input), 8)
示例#4
0
 def test(self):
     test_input = aoc.puzzle_input(YEAR, DAY, is_test=True)
     print("unit test")
     self.assertEqual(solve(test_input), 37)
示例#5
0
 def test(self):
     test_input = aoc.puzzle_input(YEAR, DAY, is_test=True)
     self.assertEqual(solve(test_input, preamble=5), 127)
示例#6
0
 def test(self):
     test_input = aoc.puzzle_input(YEAR, DAY, is_test=True, extra='_2')
     self.assertEqual(solve(test_input, qualifier='row'), 11)