1
0

feat: solve day 24

This commit is contained in:
Rokas Puzonas 2022-05-22 18:39:45 +00:00
parent da96bf0fb9
commit e8aad99eca
3 changed files with 582 additions and 0 deletions

471
24/input.txt Normal file
View File

@ -0,0 +1,471 @@
neswsesewswswswswswneeswswswswwwnwsw
nenesenenwneenwnwweneswnenenenwnw
wewnesesweswsenwnwnwsww
eeneswneewneseneeeseeweeesenwe
nwnenenenenenewnwnesenwnwnenenenenenwnese
nwwenwswwnwwwenwnwwnwnwwwnwnwsew
nwnwnenwnwnwnwnwnwswnwnenwswnwnwnenenwne
swsesenweseswseseswswnwswswswseesesesw
nweneneswnenenenenwnenwnwswswnwnwwswsenwne
wnwnwenwnwnwnwnwsewnwnenwnwwwsw
senwewwsewswswnwseswsenwswswsewnenww
nenwnesenwnenwnwnwnenwenwswnwnewnwswnw
neneswwsesenwsesewnenenenenenewenwne
weneneeneneneneeene
ewnwsenwwwwnwnewwneswnwsenwwnwsesww
neenwnwnenenenwwnwnwnenenenenwswnwnenwnwe
wwnwswwwnwwnwwwwwwnewnw
neneneneeneneneneneneswnenenenenenenene
nwwnenwnenwnenenenenesenenwnenenwnwnwne
nenenwsenwsesesenwwnwneenesewnenwnene
nenenewneneeneneneneeseneswnenenenwnene
seseenwewseswsese
seseeseseseseswsesesesesesesesenesesese
sewswswnwswswswswwew
wseswnwnwnwnenewnwnwwnwwnwnwnewnwsw
neeeenenwneeeeeeswneneneeneee
swnwnwnwnwnwnenenwnwewnwnwnenenwnwneenwne
swswsweswseeswseswneswwswseswnwsesww
swnewwnewwweewwwwnwsewwwww
eneswswwewwwswswesewwswswnwwe
eswnweeeeeneeeeeeesweeee
wswswnweswwswnewswseswswswswswswswe
nwewnwwwwnwwwwneswswwwwwnew
nwnwnwnwnwwnwnwwenwnwnwnwsenwnwnwswnwnw
swswnewswswswswwswswwwwweseswswswnww
swneewswswswwswnwnwswwnwwsenwswese
nenenenwswnenenwnenenwnwnwnenenwnenenwne
nwnwnwnwwneswswenwenwenwnwnwnww
neneseswnenwneneneneneenesw
nweswswnwsewswnwwseeseneswnwneene
wwwwswwwnwswwwswsewewwswwsw
wewswwewswswswnweswwswswsweswwsw
sesesesesesewseswsesesesesesenesenesesw
wsweeneeeeneeeene
eseeeeeeeeeeeenweseseseee
wesesewswnesewneeswseewsewnwesesw
seweeneneeweeeneneeeneneeseew
wswseswswwenwswwwswwwsw
eweweeewseneswseenweswnweswene
wwswwwwwwwsewnewswwwwswwww
swseewseneeneswswnewneesewsenwese
sewwwwwwwnwwwnwwww
seseneeseseeenwsesweseeeseswsesesese
neenewnwneneeeneseneneeneseeneneene
nwenwwwswnwwwwwnw
nwseswseseswneseeswneswswneswswsewswse
swswswwswwswwswnewwswwswwseswswe
wnwwnwwnwnwsenwnwnwwnww
swswnwseseseswsesesesewenesewenwsese
eseseesenweeseswseseenwee
nenwseseneeeeeenweseenweweee
swsweseswnwswswswswswswseswswswneseswsw
wnewenesenesweswwnwwseesesesee
wsesesesewseneseseesesesesesesesesesese
seeseeseeeseeswsweesesenwneenwnw
nwwnwnwnwsenwnwwswnwnwsenweswnwnwnwnwnee
esenenenenenenenenenewnewnenenenenene
eswswswswswwswswswwnwswswswswswwswsw
nwnenwnwenwesenwsewsenwwsewswnwsenw
nwnwnwwnwnwnwwnewwwnenwsenwnwwnwwsw
weeseswwenwnwwewwwwnwseenesw
wwswswswwswwwnwwwswsewswwsw
ewsewweswwwewwwwwwnwenwnw
eenwnwnewneweneswseenewseswwsesw
neenenenenenenewwneneseneneneeneene
seswnwswswseswswnwnwseseseeswseswswseswsesw
seseneswseewsesweseseseseseswnwsesesese
nwnwnwnwnwwnwnwnwnwnwenwnwwnwnwwnwnw
seswswsenwwseneseseseswswneseswnesesesesese
eseeseeeeeenweenwesweneenee
nwneswnwnwnwnwnwswneeseswenwswnwnwnww
swsesweswseswswnwswswswswswswnweswswsw
neseseesweseeeseeesewneeewsene
neneswnewneneswseswneswnenw
seweeweswwwnenesewwwnwnewsew
swwweswswswwswswwswswnwswswwswswsw
wneneenenesenewsenenwneswnewneenenw
senwnewnwnwnwnwnwnwwnwswwenwsesenwnwne
wwwwwwnwswsewwwwwwwsw
neneweneeeeenenweneeeeeenwsese
swswsweswswswswswswswswnwseseswswseseswsw
swswswswseswswnwswswseswswnwswneswsee
nwewnenwseneneswsenenenewnenwnesenwnenw
eseswnwswswseneswseseswswseeswswswwsw
seseeeseseseweneeseeeesesesesesese
eewnweswswsweeenenwwnwse
wwswwwswwsewwswnwenwnwswswwwesw
wwewwwwwwwswwwnewwwwww
nwenwwnwnwnwnwneseswnwnwnwnwnwnwnene
nwwnewnwnwwnwnwnwwnwnwsenwwwnwnwww
sewswneswseeswseneseswswswsewneseswnw
newneswswwwwsweswswenesesewneswsw
nwnewwwwwnwswwseswwwwnwwseese
wwwwnewwwwwwenewswwwwwsww
eseeeeeewseneswswseweeneesesee
nwnwnwswnenwnewnwenwnwnwsenwenenwnwwnwne
swseswseswsenesewswseseswswswseswsesese
swswsesesesweswnesesesewsese
eeweeeeseseeesee
swnwnwnwnenwnwnwnwnwnwnwnwnwnwwnwsenenw
nwwnwwwnwswwwwwwnwwewwewww
swnenenenenenenenenenenenenenenenenene
swswneswswswswswseswswnwswswswswswewsw
nwneswnwnenwnwnwnenwnenenenenwnwnenwnwenw
nwnwnwnenwnwnwnenwnwnwnwnenwsenwnwnwnwwnw
wnwnwwnwswwwsenwnwnwnwnwwnewseeww
nwenwnwnwenwnwwnwnwwsenwnwswwwnwnwnw
eeweeseseeeseseeseseseseseese
neeenesewswsweeneenweesenenwswesw
nwwnwnwnwewwnwnwnwwnwwnwnwnwewnwnw
wnwneswwwswwwewwwwswwsewwswne
nwnwsesenenwnenwswseswnenwwnwnenwnwnwnene
nenenwnwnewnwswnwnwnenwneneneeneenww
wwnwswnwnwnwnwnwswswsenwnwenwneesee
nenwnwnwnwnenenwnenwnesenenenenenwnwsenw
swseswswseswseseseswneseswswswseswswswsw
swswsweneswnwwsweswswswswswswswnesw
wnwwwwwwwwswwwewnewwnwwwwse
nwnenenenenenwnwnwwnwenwnwwsenesesenwnw
nenwneeeeeswswneeeeeneeeneswnee
nenwnwnwnwnwnwsenwwnwnwnwwnwnwnwsenesenw
nwnwwnwwswwwnwwnwwnwsewwnwnewnw
wnwwwwenwseswnwswewnww
ewwnwwwswwnwwnww
nwnenwnenenenenenenenewnesenene
sesesesweenwsenwenwsenweesenwenwnw
neneeeeswenwneeswsenwenenenenenenee
seeesenwswwesenwsesenwseseswesenesee
nenwnwnenwswnenwnwsenwnesenwnwnwnwnenenw
eeeeeeeeeeesweenwswne
esesweswnwsenweeesesesenweeesww
eseseeseseseseseweeseeeseesee
swnenenenwnwnesenenewnwneeneneneenenesw
neneneenenenenewneneneseneneneneeewse
wnwnwnwnwenwnwwewswwwwwnwsewwwe
neneeneneneneneneneneneswne
seswswseseeswswnwseseneswswseseseseswsese
wswnwswweneweenwwswswneswswwseswne
eswwwswswneswwswwnwwwenwwwswsewsw
wswswswswenwnwnwswswswswswswseswneeswe
wwwwwswswwwenenwnwnwwnenwsesww
wseweeenwnewneneneneseeneneenwswse
senwwnenwnwnewseswwwsewswnewneene
nenwnwnweneneenesesweneneneneneneswsw
swseswswswswwswswswneseswseswsewswswnesesw
enewnenwnenenenwsenenwnwnwnenenwseswene
wwnewwwswwwwwwwwwswsewwww
wsenwnwnewnwnwnwnwnwnwnwnwnwnwnwwnwnw
wenwnwwwwnwwsenwneswsewwsewnwnw
neenewneneeeneeee
neseswnwswswnwnwseseswseewseseneseswseswsw
nenenewwnenenewneeenenenweswsene
seeeeesesesweeenweesenwseeseswe
swesenweseewseeseeswswesenwenenewne
seseseseseseeeswnwswne
wwwwwwwwwwnwnwsewnwwwwsewe
nenwnwneeswnwnwenwswswnwnwnwswnwnwnwnwnwnw
swswswesewswswseswswswseswswseswswsw
neneenenenenenenenenenewnenenenenenene
wneseenenwnwwswseswswwnewnwwwww
nwnwnwwnwnwweseneswwnwseenwnwnwwnwsw
nwnwsenwnwnenwnwnwnwsenwnwnwnwsenwnwnewnwnw
wsewneeneneneneneneeeneswe
nenwnwnweweswneswne
eseeeeeseeeeeeeeeweewee
newnwswnenwneneneneeneweswnenwnee
wwnwwwwwwnwwnwnwnwsewnwwwww
wwnwwnwwnwswwnwwwwnwwwnweww
neseseseseseswsesesesesesesesesesesesesw
nenwnwnwnwswwnwwnwnwwnwswnwnwnwwnwnwe
neenweeeeeeeeeeneeswseeeswe
swswswswwswswnwswswsesweswswnwswwsw
wnwsenwwnwwnwnwnwnwnwnenwnwnwnwnwnwnw
seswnwswenesesewneswnwsewsesesenenesw
eneewnweseswweeenee
neeneswneswsweswwnenweee
eeseesenewneeeneneswenewne
swnwsewnwnwneweswnenwneneseesenwwsesw
wseewswwnenwswswseesweseneswnwswese
seseseseseswsesesewswseseswseseseseswnene
seseswsesesewnenewseneswnesew
wswseswnwwwwewwwwwswwwwswww
nwnwwnwnwnwnwnwnwnwnwwnwnwnwnwnwenwe
nenwsesenenenenenwnwnwnenwsenenwnwnenwnewne
nwnenenwnenwnwswnewnwnwenenwnwnwnwnene
neseswswnwnwnwneswsweneseseswswnwnewesw
swwsewwwewswswnwwswswwnwsw
neweeswneeeneeneneenwswneseewnw
sewswwweseenwneesewwsewswneee
wwwnwnwswwwwwwnenwnwnwnwnwnwwnw
wwwswwwwwwwwnewwwwneswwsew
nwseswswswneswenesewseeswswswswswnenw
enwswseeeseseswesesesesesenesenwseese
nenenwneswnwnwneneenwnwnweswnenwnwnwnwnw
nwswweneeeeeeeeeeneeeswnese
sweseseseseeeswenwneeeeese
seswswseeswsesewesweswswsesesesenwnwsesw
eenwnewesesewseneeswseewsweenwe
seseswnwwwnewwswweswnwwnewwesw
eeeeeeseseseeseweeeeeeseenew
weseeneswenwewe
swswsesenwseswseseswseneesewswsesesesese
seswseseswswswseseswswswneswswswsesesw
swwswwsewswwswnwwsesweswnwsenwnwnee
eneweeneneneeeeeeee
sesesesenesewsesese
nwnwnenwnewnenwnwnwsenenwnenwnwnwnwnwne
swneswseseswswnwseseseseseswwseswswsese
swswsewnewswwswswswswnenwwwneswsewsw
nwswswsweneseseswseneswseseswnweswew
swseswswswseswswswswseseswseswnesesw
nenwnenenwenwnwnwnwnenenwwwenwnenwne
swwnwnwwwwnwewwnwnwnwnwnwwnw
esenwneswnenwneeswwswenwseneseeenw
eeeswsenwweneenenenesenenewsenenesew
wwswsenwwwnewwewwswwswwwwne
wswesweenewswswnwswsweswnwnwswswe
swswseneswswswswsewswsw
wnenenenewneenesenwwseeneneswne
seeseseseeseenweewseseneseseeseese
seseesesewseseseseseesweseneseesese
swnwnwneseswswswswwe
senwnwnwnwnwnwswnwwnwnenenwwnwnwnwwnww
wwwsenwewwswswwnwsewwewswsww
swwswswswneseseseswsewseswswneswswsesw
seseeeseseseeseseseseseesewesesese
seseeeseweeneseewseeeeeseee
nesenwnwnenenenenwnwnwnwnwnwnenenwsenw
seseseeesesesenweseseeswseseseenese
swswswswswswswseswswswswswswswnenwswswswsw
senwwswwswswwswswwswswswneswsweswsw
swesenwswseswnwnwseseswseswswsweseesesw
wwswswwwswwweswwswswwswswwswsw
swewsweswswewnwwnewewwsewnwswww
wnewseseswswnwswwnwnwwnwswseswseeew
swsenwseseswswseneswswseseseswseseseswsw
swswwwewswswswwwweswwwwesww
swswswneeswnwswswswswswweswswswswswnwsw
enweneeseeneneswswsewneneneeeene
wswwswnwwwewwnwswesewswseenwe
sesesesweeeseeewsenwseseeeseeee
swswswswnwswswswswswswswsweswswseswswswsw
seseewseseeseesesesesesesesesenwsese
eweeseweeneeeeneeeeeeeeese
eeeeeeeeeeeeeeenweeeesw
nwswswswwwwwwwswswweswwwswswsw
weswswnwswweswnwnwneswsenesewwenesw
enweeseeseeneseseseewseeseeesesee
nwnwnwnwnenwwnwnwnwnwsesenwnwwwnwnwe
seseseeneseeseseeseeseeseeeweese
sesesweeswseswsenweswseswnwsenwswswsw
sesweseeeeeeenwseswnewse
swwnwwnewwwwwwnwwwwwnwnwww
swswswneswswswswswswwswwwswwswwesw
wnewneneweneeneseswsenewnesweneene
eseeeseeeseenesw
sesenwseneseseseseswswswsesesewsesesesesw
nwneneneneswnenwnwnenenwneenenwnwnenwnene
neneenewnenenenenenenesweeeeeesee
nenwwswnwenwnwnwsesenenww
eenweswsweeeeneeneeweneene
nenewwneseenwnenwnwsenwnenwwnw
wwwnenewwsenesenwnwsewewwswswswnew
seswwswneswswswwnwswwswwswswswwswwsw
ewneneeeeenweesweswenweneneene
sweswsenwswswwswnewnenewswenweenw
sweweseesesesesewsenwseeweenesenwse
swnwnwwwwwwwne
nwnwswswseswswswswwswswswswswswse
seswseseswswseseseeseswnwswsenweswseneswse
eeswnweseeneeeeseewseseseseesesee
swswswswswswseswwswsweswswneswswwnenw
wnwenwwwwnwwwwwnwwnwwww
swwswwswswswswswwswwnwswswswswswswse
nwwwwwswnwwnwwnwwwwnwnwneww
eeneswenwnwswnwsweswswnwswnenenwnwse
swswseswswseswswswswneswswseneswseswswse
neeeeeeeeeeneneweweeeene
nwnwneenwnwnwnwswneswnenesenwswewnww
weswwswswnesewsewswswwneneseeese
wswswswseswswnesesesw
enwneswwnenwnewnenwnweenwnenwneswnesene
eswwswswswswswwswswswwswswswnweswswsw
eswsenweswswnwswswswswsewswwwnwswswsw
nenwnenenenenwnenenewneenenenenwnenene
wnesesenewwwsewwwnwnwwnenwwswnewsw
wwswswwswwswswwswswwnwswseswswswsw
neneneneneswnenwnenenenwnwswnenwswnenee
sesesesenesesenesewsesenewseswsesesese
wneewseswwwnewswswswswenwnewwww
swwnwswswswswnwswswswwsesweswswwesw
seseswseswseseswseswnweseseseseswseswse
swswseseswswswswsesweswnwseeseswnwsese
neswswnwnwsewnwenwwnwwweenwsewnw
ewneeneneenesweneeeneeenenenene
nwnwwnenwnwwnwnwnwsewnw
eeneneeseenweseswneesweneenenenw
neneneneeneneeneswnwnwneswnenenenenenenwne
nwneneswsewswnwsewwnenwewnw
nenwsenenwnenenenwnesenenenenenenenenwse
seeeesesenwseeesesewsewseeseese
nenenenenenenesesewnenwnenenenwnwnwnenw
neeneneeewneeneneneneeneenenenee
wswnwswseewnwnweneewwneww
seseenwseweswnwneenenenenwnwseeneswse
seswsenwswseeseseswswswseswswseswsesenwsw
neseeseswseswsesewswswnwswwseswnenwsesw
nwnenwswnenenwnwnwnwnwsenwnw
nwnwwswnwwenwnwwnewnwnwnwwnwnwsenwnw
seseeswseenwnwseneseeeesesewswsesese
neneswnwenwnenenenenenenwnenwnwnwnwnwnesw
swswswseeswneswswswswswsweswwneswswswnw
swseswswswswswswneeswwswwswswswseswsesw
sesesesewnwseseseseseseseeseseseseswsese
neenenwwenwswnwneswsweenwnw
wwnwwwnwwnwwnwnwnwseenwwnwnwnwnwnw
swneswsesweswswswswswswswswwwswwsw
esweeneeneeeneenesweeee
eeeeeenweesweeeeeeweew
seseswswewseswwseeswenwnwswseswswse
nenesesesweswnenwewseewnwseswewne
eseweseseseseeesesesesesesesesesee
sesenwswseeswswsesesesenwseseseeneseese
swnwswswnwnwsenwneenwwnwnenwwneenwe
nwwwwnwnwnwnwnwwnwnwnwswewwwnwwnw
seseswsewesesewseseseseseseeseswsesese
senwswwnwnenweesewswenenwneneswswwne
eseweneswsesewwnwwseseswswnesenesew
swwswswswswseswswswswsweswswsw
eesenweweseseeeeeeeseeseseese
seeeeneenewweeene
nenwswswseeewsewwnwwnwwwswwsenw
swswswswwwnewwswnwwnewwewewsww
sewwswswneeswwnwswwwswnewswwswswsw
swwewwnwswswswnwnwweswneeeeww
swswwswswseeseswneeweswswnwnwswene
newwnwseesewsesenwsewseewesenwene
wswwwnwwsenwwnewwnwsewwnwwne
swswseseswnweswnwneeswneswsesesenwwswnesw
nwnwnwnwwnwnwnwsenwnwwnwsenwnwnwwnenwnw
nwswwenwswsweswwswswwseswswswnwsesw
nwewwwnwwsenwwwnwesw
wnwnwnwnwnwwnwsenwnwneswnwenwwsenwnw
swnenwnwwnwnenwnenenwnenwnwenwnwenwnwsw
swswnwswsweswwseswnwwswswnwsenwswew
eeeeneeswseeeeeeeeeenenwene
neeeneneneeeneeeeneswneneenenee
nwnwnwwnwnwneenwnwnwnwsenenwnwnwnwnwnw
eeeseeeswseenwenenwseeseeeesw
neeneneeesenweeeene
neneenenenesenenenenenenenenenenenenwne
senwwswswwswswsewneseeseswneswswswswene
neeeeneeeseseeeeseeseeseesesww
eeeneneenewneneseneneneeeeneee
swnwwnwsenenwnenwnwsenwnwnenewnwenwne
neneneneneenenenenwnenenwwsenenenenenenw
wwnewwwseswwnewww
nwenesenwnwnwnwnew
swseseswseswseswswswenwswswseswseneswse
senwswsweseneeeeneeneeswnesewswwnw
eenenwswswnwswewwneenwwwwsewsenw
seeeenenwneneeneeeneeswe
newenweeneswneneswne
swswswseswswsenewwnwwwnwnesweswwww
nwneneeeneswneneneneeneeneeneeene
eeeeeeesweeeeewnweseeenw
swseswswswswswsewneswnwswswsesesesesesese
nwnwsenenenwswnwnenenwwsenenwnenewseswse
wsewswwswwwswwnewseenenenewwwse
nwnewnenenenenenwnenenenenenenwnenwsenw
wnwwwsenewwnwwwwwwwwwwww
nenwnenewseeseeswswenwwsesewsw
enwnenesweneneneneswenenwswneneeenenene
seeeeeenwnweeseeseeswseseeeee
wwnwwnwswwwwnwwnenesww
seswswswneseseseseswseseseswsesesesewswse
wnenwseseeseswswwseseswswswswseswswseswsw
wnwnwnwneenesenwnwnwnwnwnwnw
nenenenwneeneneneneneneswnenwnenenenenwne
sewwswswswwswswwswwswnwseswwswneswsw
eeeneeeswsenwwseseeeeeeeseese
swswswswswswneswswswswswwswswswsw
newswwswwnenwsewwwwwwwwwswsew
sesesesenwseseseseseseeseseswsenwsesese
swswsesweswwseswwswnwswswswswswwnwnw
nenenwneneswnenwsenewnesesewnwnewnee
sesesesesewneseseseneseseseseseseswsesee
nenenenenwwnesesenenenesesenewneenwene
wnwwwwsewnwswneenwwenwswwwwww
swseswswnwswswseswswswnwswswseseeswswswswsw
wnwwnwwnwwwnewwwnwwswwwwwsewe
neeeeneneenenenesewneneeneeenene
seneenweeneeeeeneenweeeeseee
enewnenwsenenwnenenenenesenwnenenwnenenw
neeneneswneneweenwneneeneeenenee
wwwswwswsweswneswswwswsewswswww
swwwswswseswwwswswwsenenwswwwwnw
neenwneneneeseswswewnwswnenwnenenwnenwne
seeseewwweeseweseeseeesesenwe
swneneneneneneneneneneneeneneneneenene
wwswseesweswneenenwnwseesewswnwene
seseseswseswswseswseneseseswswseswsesesew
neeneneseenewenenwswnweeneeswneswne
seswwneswsewnwnewsenwswswenwww
wwsewwwwwwwnewswwewwwwwww
nenenenwnenenenenenwnesenenenenenenenene
eseswswswwnwswneswneseeswswswswswswswww
neeesweenewenenweneneewnenenenene
nwswwwnwwewswwswwwswseswwwwswswsw
wwenwnwewswwwnenwwwnewnwswww
nwneenenwswwwsewewwsesewwsewswnw
seswseneswseeenenwseeseswneswsesesesenw
eeseswweseeseseesesesesenw
neseseseewwwneseseenwseseeseseeee
seswnwsweseseeswseseswnwnwsesesenweseswe
neseseswswswswsesesw
nenenenewnenwnwnesenenenenwnenwwneneenene
sweseseeswsesenweseesesewsesenwenesee
senenenenwwnwwnesenenesenenwnwnwnewnwe
swwnwseneswseseseneseseneseswnwnesewwswse
wnwnwnewnwnwwnwnwnwwsenwswwnwnenwwww
wnewwwnwwwwwsewwwwwwwnwwnw
eeesenwenesenweenwesweneeeeee
wsesenewnenenenenw
eeeeeseneeweneeeeeeeeee
eneseneweneneeeeswneeneeneneww
nwnwnwnwnwnwnwenwnwnwwewnwnw
seseseswswseseseswsesesewseseseseseswne
swwwsweswswswswwswswswswswneww
seeenweseweseesesweeeeeenwe
nweneneeneeeeeeeeneseeeneene
wswnewwwwwwwwswswwwswewwww
swswswseswswswwseseswneswseswseseswswsesw
swswswswseswswswsenwnweswswswseswsewesw
nwswnwwnwswnwnwnenwnwenenwsenwne
nwwnwesenwnwnwnenwwwnwnwewnwnwnwnwswnw
wswswswnwwwwwneswwswwsewwswwsw
nenewneneneeneewnenenenenenenwnenenene
nwseseswswseseseeeseeseneseseseseese
eswseeseseeewnwseeseseeeseseesese
nenwnwnwneneeneneneneneneneneneneneswnw
nwnenwneneneneenwnenenenenenenwnewnene
nwneneenenenwseeseneeneeenenenewnene
wneseswsweswswsenwswswswsweeswnwswnw
swneeswsewswswenweneswnwnesewew
nwnwnwnwnwnenwnwnwnwsenwsenwwnwnwnwnwnwne
neswneswnewneswseseswnwnwswnewseswsee
eenenwseweeneeneneeweneweeene
nenwwwnwnwneenenenwswnwnwswseenwswnwenw
sweswnwswsweeswwswnenw
wsewsewsenwneswnwnwwewswnwweenw
nenwnenwswnwnenwnwnenenwnenwnenwnenenene
swwneswwewwswneswwwswswwswwwse
swsewswwsewwswneswswwseneswswswnesw
seenenwsweesenwseswnweseeeeenwe
swwswwswswswweswnwsweswswswswnenwwwsw
wnwnwwswenwweswenwwwwwnwnwswnw
swswwswwwswwwwsewwwwwswswwnesw
neswswswswswswswwswswswswwswswswwwe
wenwenwwseswwwnewnwseseswwneswneww
nwswswswneswswwwsewwswswswswswsesww

91
24/main.py Normal file
View File

@ -0,0 +1,91 @@
from typing import Iterable
STEP_LOOKUP = {
"e": ( 1, 0),
"w": (-1, 0),
"ne": ( 1, 1),
"sw": (-1, -1),
"nw": ( 0, 1),
"se": ( 0, -1),
}
def read_input(filename: str) -> list[list[str]]:
tiles = []
with open(filename, "r") as f:
for line in f.readlines():
line = line.strip()
steps = []
i = 0
while i < len(line):
if line[i] == "e" or line[i] == "w":
steps.append(line[i])
else:
steps.append(line[i:i+2])
i += 1
i += 1
tiles.append(steps)
return tiles
def get_black_tiles(tiles: list[list[str]]) -> set[tuple[int, int]]:
black_tiles = set()
for steps in tiles:
x = 0
y = 0
for step in steps:
dx, dy = STEP_LOOKUP[step]
x += dx
y += dy
if (x, y) in black_tiles:
black_tiles.remove((x, y))
else:
black_tiles.add((x, y))
return black_tiles
def part1(tiles: list[list[str]]) -> int:
return len(get_black_tiles(tiles))
def get_neighbors(tile: tuple[int, int]) -> Iterable[tuple[int, int]]:
for offset in STEP_LOOKUP.values():
neighbor = (tile[0]+offset[0], tile[1]+offset[1])
yield neighbor
def count_neighbors(tiles: set[tuple[int, int]], tile: tuple[int, int]) -> int:
count = 0
for neighbor in get_neighbors(tile):
if neighbor in tiles:
count += 1
return count
def simulate(black_tiles: set[tuple[int, int]]) -> set[tuple[int, int]]:
white_tiles = set()
for tile in black_tiles:
for neighbor in get_neighbors(tile):
if neighbor not in black_tiles:
white_tiles.add(neighbor)
new_black_tiles = set()
# Any black tile with zero or more than 2 black tiles immediately adjacent to it is flipped to white.
for black_tile in black_tiles:
black_count = count_neighbors(black_tiles, black_tile)
if black_count == 1 or black_count == 2:
new_black_tiles.add(black_tile)
# Any white tile with exactly 2 black tiles immediately adjacent to it is flipped to black.
for white_tile in white_tiles:
if count_neighbors(black_tiles, white_tile) == 2:
new_black_tiles.add(white_tile)
return new_black_tiles
def part2(tiles: list[list[str]]) -> int:
black_tiles = get_black_tiles(tiles)
for _ in range(100):
black_tiles = simulate(black_tiles)
return len(black_tiles)
if __name__ == "__main__":
tiles = read_input("input.txt")
print("part1: ", part1(tiles))
print("part2: ", part2(tiles))

20
24/test.txt Normal file
View File

@ -0,0 +1,20 @@
sesenwnenenewseeswwswswwnenewsewsw
neeenesenwnwwswnenewnwwsewnenwseswesw
seswneswswsenwwnwse
nwnwneseeswswnenewneswwnewseswneseene
swweswneswnenwsewnwneneseenw
eesenwseswswnenwswnwnwsewwnwsene
sewnenenenesenwsewnenwwwse
wenwwweseeeweswwwnwwe
wsweesenenewnwwnwsenewsenwwsesesenwne
neeswseenwwswnwswswnw
nenwswwsewswnenenewsenwsenwnesesenew
enewnwewneswsewnwswenweswnenwsenwsw
sweneswneswneneenwnewenewwneswswnese
swwesenesewenwneswnwwneseswwne
enesenwswwswneneswsenwnewswseenwsese
wnwnesenesenenwwnenwsewesewsesesew
nenewswnwewswnenesenwnesewesw
eneswnwswnwsenenwnwnwwseeswneewsenese
neswnwewnwnwseenwseesewsenwsweewe
wseweeenwnesenwwwswnew