diff --git a/day24/input.txt b/day24/input.txt new file mode 100644 index 0000000..7d7aab1 --- /dev/null +++ b/day24/input.txt @@ -0,0 +1,424 @@ +swnenewnenenwneneeseseenwwnesenenenenene +neeewseswneewwnwsewwwsewwnwwsw +eewswwnwnwwnwwnwnwwnwnwnwnwnwswnw +nwwnwnwwnwenwnwnwnwwewsewnwnwwnww +senweeswswnwnesenwnweneeenenweeesw +neenenenewnenenenenenenwswnenene +sewneeewswneneneeenewneneneenee +seesenwsenwwsenwswswseseeneseswseswsese +ewewswswwwsewnwnwswsewww +nwnenwwwwwwwneesenwswnwwwwwsw +wnwnwsesenwnwsenwnwnwnwnwnewnenwnwnwwnwnw +nwnwnwnwenwwwnwnwnwewnwenwnwswnwnwsenw +swewsesenwsenwsesesenesweswneneese +swwwwwwwwswwwwswnwweww +nenweneesweenweseeneeenwswseeene +wsenwneseeewswswswseswswseswswseswse +sewnewwwsewwwwwwswnewnewwwww +eneesweewsweeeeenweeeenww +eswswswseswswswnwwswnwswswwswswswswsw +wnwwwnewsenwwwwnwwwsewwwnesew +nwnenwnwnwnwwnwsenwwnwnwnenwsenwnwnenwnw +swwneswwseswswwnwswneswwwewneswsww +swsweswneswwnwseseswnweswewswswswswsw +nwwsenwwwnwnwenwnwwnwnwwenwnwnww +senwnenwneenenewnenwnwnwnwwwnwnwsenw +eneeeesweneenenweneeeeewnee +eswneenenwswnesenwnwnww +wesenweweweseswnwswsenwneswwwswnw +wseenenenenenenewne +nwnwnwswnwnwwnwnwenenwnenesenwnwwnwne +nenenenenwneneeeeswe +neswswwswseswswnwswswswswswneswswwswswesw +enewsenenenenesenwseneneenenweneene +enwneeeeswneeenenene +newnewnenenenenenenenwnwwsenenenweese +weenenwneseneeeeneeenesweeene +nenwnenwnwnenwnwnweenenenwnenwneneswsw +seseeseenwseseseeseenesesesenweeew +seswnewswsenwseswwnwseseseseesesesenenw +eeeeeeeseeeseweeseee +neneweswwswswwseswwswswswwswswswsw +swswswswneswsewswswswseswesweseswnwsesew +eseseseseseswneswswnwsewswnwneswsewse +swswswneswswsewswswswne +sesesewseseeseswnwseseseseseseenwsesw +sesesesewseseesesesesesenwese +swnweseswswsenenenenwwnenewnwnwsenwenw +neseneneswneeneneeneenwneenenesewnw +nwwnesenenenenenwneneseswnenwneswneenenwnw +nwnwnwnwenwwswnwnwnenwnwnwnwswnwnwnwne +senewswswswwwww +wwswwswwwwnwwswneenewesewwswe +wwwswwneswseswsenewswswwneswswneesw +nwswewneneeeenwneeeeneswswnweeswe +swnenenenwnenwnwewwwsweneesewne +nwswwswneswswwneeseseeswswswseswswsw +seseswseneeseseesese +neeeeweeneeeeeenewsweenene +nenwnwnwnenwnwnwnwwsenenwenwnenw +nweesesewneeeneenwwneesweswenese +eenwsewenwswnwnwsewenenweneewswswsw +sesesesewsenwsenwsene +eeesewseenwwseeseseneeeneesee +wwwswswswwswswneenwswwwseswwwnw +nenenewnenesenenwseeseswnwneswnenwnenese +ewewneneseeseewnweneswneeswnee +seesenewseesesesese +sewnwneseseenenwwwnenenwnwnwsenwsenwne +enesesesenwswseseswswsesesesesesesesese +eseeeewneeeeweseeeeee +eeeneeneeeenwseeeeeee +sesesenwnweseeneneseseswnewseseseseseswse +weeseeeneeeeeenweswneneneenw +nwewnwseseseseseswseseneeseswsesewsesee +wwnwnwnwewwnwnwnwnwwnwnwnenwwsenw +enwsesesenwseneswewnesewneseenwewew +nwenwnwnwwswnwsenwenenwnwnwnenwwnwnwsw +wnwwnwnenwwnwnwnwnwnwesewnwwenwsw +sewseswneenwnwesesenwseeswsesesesese +weswnwnwnwnwwsewnwnwwnewnwww +nwwwwnwwwwwnwewnwewswnwwwnw +wwwwnwwnwwwwsenwnewwwwswwew +seswnewneswsenwswswseseswwneneesewne +newseswnwwwwwwwnewswswwwwsew +nenwnenenwseneneneswnwenwnwnenw +enwnwswneenewswse +eseswnwsesenwsesenwseseweenwseseswse +wewsenesesenewsewene +eeswseewsenwsesenwswnenw +swswneswswswneswsewswweswwswswswswsw +wswswnwseneeesweesesenwnwnwnwsenwsewse +ewenenewseeeeneneeenwswneneneee +seeeseeseeseneseesesewseesewwsene +swsweswswwswseswswnwswweeseswswswswnw +nwnwnenenenenwsewnenesenenenenenesenwne +neneseseneeewnenewseenwnwnenenwnene +swsenwseweesesenwnweeweewee +weseeeneeeeeneneeneeeneswee +nwnwnwnwneswnenwwswnwnwnwnwnwnwnww +nenweneswnenwnwnwne +nenweneeneswnewswswnwnenesewenenenwnw +swsweeswnwnwwsesesw +nenenewnenenenenenenenenenwnewnenesenwse +neswwwwswewwswwswswsewwwneww +nwnenenenenenesenenwneeneneneneswnewne +swwwnwnwwnwwwwnwnwewnwww +wwswwewwwsewswswwswwsewenenesww +newseseneeneswnenwnenwseweenenwene +swswwwwswswwwnenwwwwewsewswswnw +nwnwnwnwenwnwnwnwseeswnenwnwwnwnwnesw +swnwnewneewswwswnwenwswwnwnwwwnew +seneswsewswseswsenwnewswwwnwwswnesww +sewwwnwnesenwwwwwnewwwwnww +nenenenwseswnwnenenwnw +wwswnwswwwwnwwwewewseswwww +neneneeneneswseneeswnewneeeneeenenene +wsewwwswnewnwnwewwwnwswwnwwnww +nwneewneeneneeneeswneeneneenenee +neswnwseeswneneswsewswsw +eswswsewswswnwswnweswnwneswsesweesw +nesewnenenenenwneneseneneneneneneewne +nwnwnwnwnwnwnwswnewwwswne +swneneenwwswesenenwwnesewswnewwswswnw +swnwwwnwnwnwnesenwnwnwwsenwnwwnwnwnw +seseneseseneseswseseswseswswsesese +swnwswenenenweee +seseseeseesewseseswseseseswsesenesww +swseesesesewneseswswnwswswswnenenwnese +seenenwswnenesewneswneswneewneweneene +seeweeweneeeneneenweswweww +neswwswswswnwswswnwnenwsesesweewnene +eenwwneeswseenweeeeeswewnew +eweenweseeeseeewseenwseneswe +ewwwwewnwsewwwwwwswwwenww +swnewneeneneenenwnenwnenenenenenenwnw +sewewswswwnwwwwwenwnewwswenw +nwnwnenwnwnwswnwsenwseneneenwswswnwnenw +seeseseeesewnwseseeeneseeewsese +nenewneneneneneenwnenenwnenenw +seseneswswswsweswswswsenesewseswswsesw +newwwswwnewnwwwnwsewwwseeswne +neenwnwnenenenenenesewnwne +swnenewwsenenenwnenwweseseswnesesww +wwwwnweewwwnwnw +swneswwswewwswswwswseswneseww +sewseseseseseseseesenee +swsewnwwwneswswseswswwnewsewswswswwsw +wneseewewnwsweswewnwnwwnwswsew +swsesewswneseenwseswsesweswswseswnwsw +nenwenwnwwnenwnwne +nwnwnwnwsenenenenenwnwneswnwswnenwnwnene +sewwnwwwneswswenwwswwswsweseswse +neeneseneeswneswneneenenenenenwnesenwnw +swswnwswswswwswswswswseswswswseneswswsw +eeeeneeeeeneswesweneeeee +swswseeswnwnwswswswswswseswswwsweswsww +nwnwnenwnwenwnenwnwnwnwnwnwnwsw +swsenwwseseesenwsewsenweseseseseseswne +eewwswswswswswsweswenwneweswswnw +neeeneneseeeneswneeneewnwneeeee +swwsweneswneswewwsenewswswwesesewnw +swweeeseesenwsesesweseesenwnwee +nwewnwnwnwseswnwnwnwnwwnwwenwnwwnwnesw +eeeeeeeeeseeeesesenwe +neeneneswsenenewnenwwnwseswneneeenwnene +eseeeeeewenwse +eeeneesweeeeweeesewneeeee +swswsweswswswswswsesenwsw +wwswwwwwsewwwwseswnewwwnewsw +eswnesenweswewenenwnesweeeeene +nwwswnwsweeweeenewneneneneneneswnese +nweenwenwnwneswnenwnwnwnwswswswnwenwnwnw +neswneneneenwnenenene +wwwwwswwwwwswwnesw +wwwsewnwnwwnwwnwwwwweewwwsw +nwwnwnwnewewwwwnwwnwwwswnww +swseswswsewswsweneswseswswwnwsesenesesesw +nwenesenenewnwnwnenwneswseneswnenenenene +neneeneseneneenweeeneswnw +swnwewseswswwnewswswswwweeswswse +swseswswwneswswswswswswswswswswseneswsw +wswnwseswnwneswwnewnenweesw +nwnwwnwnenwnesenwnwwnwnwnwenwsenenenw +swneswswnwseseseseswnew +wswsweswseswswseswswswswswsw +neenenenenwneneneeenenenwsewsenenenene +weswswswwswsewwsweneswseswwswnesw +wnwnwnwwswnewwwwwesewneww +nweneenenenesenwseneeeee +sewseesesesesesewneewsee +eseseseseesewseeseneesesese +eeweeseneenwneweeeseeeeseene +swwwwnenewswwswsenwwswew +swwswswwwswnwwswsenwseswnwweesww +seneneneneneneweswnenenenewnwne +nwsewwenwewsewwnwswnwwnw +weneneneneswsweweseeeswseseeew +neseswseseswseswseseswsesewsewseseene +nenwwnwsenwsenwnwswnwsenwnwnwnenwesw +eeswsweeenwseneeeeeeenenwewe +enweeeeenweeeeeeeseseesesw +eseswseseseseneseseseswswneswsesewswsenw +nwnwnwnwnwwnwnwswnwewnweenwnwnwnwnww +nwwwnwswwnwnwwnewnww +enwsesenenwsenwnwnwnenwswswnwnewnwnwenw +nwnwnwswnenwnwnwnwnenenenenwnwnw +swwnwnwenwnenwwwwwwneswewnwwsw +wswwwswewswswwwwwswswswwe +wswwesesewswwnwwwwnwnewwswwwsw +esewnwesenwsesesweseeeeswenwswnw +enenwnenenenenenewenenenesweeenene +swneeeeeeewneswenwsenwenwsenwsw +nenwnwnenwenwnwnwnwnwnwsenwnwnwnwnww +ewswwseneseswswswswwnewnwnwswswne +swseseseeeseseseseesenwwseseseswsenese +seeeeseweseseseneswesee +neeseeeeeweeneseenwneswweesee +swnwnenwsenenewnweswnwnenwnw +swswswwneswwnwwwwswwsesewnweee +nwwwnwwswnwwwweswsenwwwwwwewnw +wsweewwenwnwnenwneenwnww +nwswnenwnwneswswesenenene +swseseneseeeneweswe +seseseseeeeeseenweeseswe +seswswsenwseswswwswsesesesesweswsewnese +eeeneeeeeneneseewnweneesenesw +swswswswswnwsweswswnweswswswnwsenesw +esweeeneeeenwneeeswenw +nwsenwnewwwnewswwsewnwwnenw +swwenewwwwswswswweswweenwsww +eeeeeneeeeeeew +wwwswseenewewnwswneswswswwswnenese +newneneseenenenwneneneneneneneeswnenene +eenwsenwnwnenwnwnwnenwsewnwseneswwnw +swwneswsenesenwwnwenenwswwnwnwnwnenwww +swseenwseswswenwswswnwneseseswswwswsw +nwnwnwenwwswwnwwseswnewewnwnwnwnw +wewwsenwneswwwnwsewwwwnwneww +nenwnweswnwnenwnenwnwnwnenenenwne +sesesenwwsenwswsesenwenweseseseseesesese +wwwnewwwwwsewwswwewwwww +neeneneneenenenenenweneswweenesenene +swwseeswsesenwseswswswwneswswesw +nenewswwewswwnwwwewwswswwseswe +enwseswnwsesenwneseewswswswnwenwswne +senenwnenwenenwnesewnwnwnwnesenenwwnwsew +wsenwneswswwsenwnwwwwsenenwnewewsw +neneneneneneneswneneneenenwswnenwswnene +wnwnenwnwenwswnwsenwnwnwnwnwnwne +enewswnwnenenenenenenwneseenenewnenwsw +eeewswwsenesewseneseeeseseeseee +wweeswnweneeswenewneeswseeenwnwne +swwseseseseswwneseesesesesesesenesesese +nwnwseswnwnwnwenwnwswnesenwnwwnwnwnenww +eneneneneewweeeswsewweneneeee +nwnwnwnwnwnwwswewnwenwnwnwwwnenwse +eseseseweseeeesewswseenwsenwsee +swswswsweswwnwswswswswseeswseseswswsw +nwnesewnesenenenwsewnenenewnenwnenenenw +swswwneswwswwswwswswwswwnewsww +nwnwnwneenwswwenwwsenw +enenwseseseswseseesesesesesewnww +seswsenwseseswnwswseseseswswswnwseseswne +enesesenesewsesewsesewweseseesesenwsw +swwswesewneseswnenewwewseeswswswne +eeswewweesesesenwswseenesesesene +neswswsweswswnwswswneswseswswswswswswsewsw +senwnesenenewweseswsewenenwseseseew +sweseswsewseseseswneswsesewswsesesenese +neswneneeneneswneneeneneenenenenenew +sweenenewswnweneswesweeneenwnenee +nwnewwnwsesenesesenwnwnwwnwnewwswnww +swwwwnwswswswswswswwsewwsww +nweewneneswsesewswnewwwnewswew +nesweseeeneseswwnwseswnwseswwnweswsenw +esewnwnesenwwswnenwwwnwnewnweswsw +nenwnwsenwnenenenwwsweswswnenenwenenw +esweeeewseeeeseswweeneeenwne +swenwenwwneneswnenweeswnwwnwswsee +nwswswswwswswseswswseswneswseswswesesw +nwswwnesesesweseswseswnewe +nenwnwnwnwewnwnwsenwnwnwnwnwnwwenwnw +enwsewnwwwwnweewnenenwwswwswwsw +wswswswsweswseswseneswswseswsewswswsw +nwnenwnwnwnesenenwnwnenwnenenesenwnenenesw +eeeeseneenwseswswesenwsesenwseee +enenewsewewenewsenenewseenwneswne +neenwnwneswneneswneneswnesenewenwswnee +neneseseeneswnwsenenesenwwwnwneneswnee +nwswnenenenwnenenewnwnwnwenwnwnenwnwe +nwnwnwnwnwnwnenwnwnwnesesenenwnwswnwnwnwe +senwnwnesenwnwsenwswwnwwnesene +swsewenweseeeseseseeseneeseeenw +wnenenwnenwnenenenenese +senwsenwnwwswenwnwenwneswnwnenenwnwsw +neeswswswswnwswswenw +wnewswwwwnewwsewwwwwwwww +wnwnwwnwwwnwwnwswnwnwewnwwnwne +nenenweswnenwenweneeswneseeeeese +sesenenwnenwnwnwnwsewwswswwnewwwe +ewswseswswseswsesenwseseseseseseesese +seseeeseswswswwewseswseswsesesenwsenw +seseseeseesesesesenwseneswsesesenesesw +swswenewswswswswswswnwswswwswswswswswesw +newwwwwwwwwswwnewswswnwwnweenw +swsesewseswswswseeswswneseswswnwswwseswsw +neeenweseneswneenwneswnwsenewswwnwswe +wewneswswswwnwseewsenewnwnenewsese +neneswwesenweneneneswewnwnewnwnenenee +neneesenenesewnenwwnesenwneneneneneswne +wwwwnwenwewwnwswwnwswwnwwnwww +neswnenenenewnenwnenwnenwenwsewnwnenee +nenenwswnwneneenwneswwnenenenenenenenese +neswwwswwwwwwwswwwsweenwswswsw +eneneneeenenwweneswseneneneseeneee +enenesenweenewwneneneeeweeee +sesewsesewswsesenwnweseneeswnwnewese +swswswswwwswnewenwnenenwwswseswwew +sewnewnweswwswswenwewnweenwnwnw +wwewwwwwwswwswwnwewnenwsesw +swsenenenenenwsenenenenwnenenenwneneswne +nwwwnwnwenwwnwnwnwwnwwsesenenewsewne +wnwwnesewnwnwnwsewwnwnwnwnwwnwnwnw +swsweneswswswswwnwswswenwswswswse +eseneswneeenwneeweenweeeenene +nenwewnwswwnwnwsewwwnwwswwwnew +newnwseswwneenenweneesewsw +seseseswseneewswneseseswwseweneseswnwsw +seseseswwnwnwwswwwwsewsesenenewnwne +swnwsewnwnwwnenwwwnwnwnwnesewwwnwwnw +nweeswseneeeeeeeesw +wnwnwnwsenwnwnwnwnwnwnwnwnw +swwnwsewswswweeswnwnwswnwswneewe +swseseseseswseseswneneswseewswsenweswse +swwneeeweeseeneeenenesenenwseenene +neneswnwnenenenenwnenenenenwswnwnene +nwwnwwnwsewwnwwwwenenwwnw +neenwnwwnwwswnwwnwnesewnwwwswnenesw +eeneeeeeweeeseeeeeenwese +seswneseseswseswswwswswswswnenwsesesesesw +eeneseseswsesenwneseswnwseswseseseesese +nwneewswseswwseneseseswneeswnenesese +swenwenesewnwneswneneneneneenenenee +seewswwnwwwneneseswnwwenwswewnw +eeeneeeeeeswesweeseseneswnwse +wwwswwwewesesweeswwwnewsww +enenenenewnenesenewnenwsenenewenene +eeeeenweneseeewseeswwseesesese +seseseseswneseseswsesw +neswneeesweseeeeeenwsweneeeenw +esweeweeeeenweeneeeneee +enwnwnenwnwnwneswnwnwnwnwsewnenwnenwe +swswwswswswnwwswwswswewwnewwswse +senenwnwsweswswseswseswwsw +wnweeseseeeeeseseseeeseeesesw +neseeswseswseseseeseswnewswwnesewsww +seswseswseswseswnwswseweswneeseesewnw +wwsenwsenwnwnenwswnewnwnwnwnenwsenwnwsw +swswswswseswsewswswnwswnwswswsw +ewwwwwswwwnewwwwnwwwewswsesw +eeseseenesewseseeseeseeesese +sesenwwesweeneneewenwesesesweseew +swswnwseswswswseseseswswswsw +neweneenenenwswesene +neneneneneswneneswswneenenenenwnenenenene +wwesesenewswnenwwnweswswswwnwsee +wswnewewnwwnenwswwwnwwswnwnwww +eseewneneewneeeeneswwsenenwwswnee +neneeneneenwneswewnwneswnewswneswenw +nwesewneneeneneeneneswneeeneswnenenwne +seswnwswseswseswswseswwnweesweswwsesw +wnwnwnwswnwnwnwwsenwnewwewwnwsenww +neneneneneneeseesenenwneneswnenenenwnew +eeneeeeneeseeeeeenewewnwe +nwnwswewnwwswswswseneswwswswwswswsese +swswswswseenwnwswswswwswswswswswsww +enwseneseewewenwseeseseneswewsese +wsewneneswswwwnwewswseseseneswnwsw +seswswseneneseseneswswswswswsewswswsese +eseewseneswnwneeseenwe +neswwneseswwseswswsenwswswnwswnwsewnese +swswnwswswswwswneswsesenenesenewswswse +newswswswneswnenwsewseseswswwwseswswne +eswnwnwenwneeseweswweesweenwswe +seeeseseenwesweseeesesesesese +seseseeeeeenwesenwweeeeseeese +eeeeeeenwswweeseeenewesesese +nwnenwnwnenenenenenwswnenwnwnw +nwswneswseswsenewswweeswnwswwseenw +enenwnenenwnwswswnwswswnwnwnwenwnwswnwe +nwwswnwswnwnwnweneswnwnwwne +neswnenenwnwnenwnwneneenwnwnw +nwwsenwnenwnwwnwnwnwwnwneesewnwnwsenenw +nwnwnwwnwnwnwnenwnwnwsesenwnwnwnwnwnwnw +wwnewwwsewwwwewsewwnwwww +wswswwwwwswwnenewswnwwswwwewsw +swswsewswswnenwswseswswwsweswswswsw +senwseesesesweseswseswswswseswseswsww +swenwswseeswswswswwswswseseseseswseswew +nwnenenwwswnwsenenwwnwnwnwswnwnwneswswnw +nwseswnewwnwenwwnwewsenwwswnwww +nwswwwneswnwewwsenwnwnwnwnenwwwse +wwneeeeneeeneeeseeenenenenee +wsewwwnwswwwwwneewwnewswnew +wewseweswwwnwswsewwwwwswswnw +sesewnwseeeseeseneseseeewwenwe +neswswnwswswseeswswswswwswwseswswswse +enwnenenenwnwswnenwwnwnwnwsenenenwnw +eenenenwneneneswneneseneeneesenwene +nwswewwnwnweeswnwnwwnwsenwswewnwsene +eeenwseseswsesenweseeseneneswsewsesw +sewswneeeswseneseeseseswseswnwswnwwne +swseseswseseseseseseseswsesenwsesenwese +nwnwsewsesesesenesesesesesesesese +seswseseswseeseeneswswwswwseeswnwnese +ewnwsenwsewwswwnwwneseswswseneww +nenenwneneneswnenenwneswnwneswneenw +newnwswswswwswswwswswswswwwesw +wnwswneneeeneswnwwnwnenenwnwseenwe +seneeneenenewneneeeene +nwnwswnwwneewenwnwnwwwswnwnwswsenww +sewneswnwswneseseswww +senenwnenewnenenwswneneneseenenenwnenwnw +wswneneswwneseswewnenenwnwswswnenwsw diff --git a/day24/part1.py b/day24/part1.py new file mode 100644 index 0000000..8919d02 --- /dev/null +++ b/day24/part1.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +lines = (x.strip() for x in open("input.txt")) + +blacks = set() + +for line in lines: + x, y = 0, 0 + while len(line): + if line[0] == "n": + y += 1 + x += 1 if line[1] == "e" else 0 + line = line[2:] + elif line[0] == "s": + y -= 1 + x -= 1 if line[1] == "w" else 0 + line = line[2:] + else: + x += 1 if line[0] == "e" else -1 + line = line[1:] + if (x, y) in blacks: + blacks.discard((x, y)) + else: + blacks.add((x, y)) + +print(len(blacks)) diff --git a/day24/part2.py b/day24/part2.py new file mode 100644 index 0000000..070ca1b --- /dev/null +++ b/day24/part2.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +import numpy as np +from scipy.signal import convolve + +lines = (x.strip() for x in open("input.txt")) + +blacks = set() + +for line in lines: + x, y = 0, 0 + while len(line): + if line[0] == "n": + y += 1 + x += 1 if line[1] == "e" else 0 + line = line[2:] + elif line[0] == "s": + y -= 1 + x -= 1 if line[1] == "w" else 0 + line = line[2:] + else: + x += 1 if line[0] == "e" else -1 + line = line[1:] + if (x, y) in blacks: + blacks.discard((x, y)) + else: + blacks.add((x, y)) + + +x = np.array(list([x, y] for x, y in blacks)).T +lower = np.min(x, axis=1) +upper = np.max(x, axis=1) +grid = np.zeros((upper[0]-lower[0]+1, upper[1]-lower[1]+1)) +x -= np.array([lower]).T +grid[x[0], x[1]] = 1 +kernel = np.array([ + [1, 1, 0], + [1, 0, 1], + [0, 1, 1] +]) + +for _ in range(100): + grid = np.pad(grid, pad_width=1) + neighbors = convolve(grid, kernel, mode='same', method="direct") + set_inactive = np.logical_and(grid == 1, np.logical_or(neighbors == 0, neighbors > 2)) + set_active = np.logical_and(grid == 0, neighbors == 2) + grid[set_inactive] = 0 + grid[set_active] = 1 + a = tuple(slice(np.min(idxs), np.max(idxs)+1) for idxs in np.where(grid == 1)) + grid = grid[a] + +print(np.sum(grid))