2020: day24: part 1
This commit is contained in:
parent
d998cb02aa
commit
3ebbba3953
|
@ -22,6 +22,7 @@ use aoc2020::day19;
|
|||
use aoc2020::day21;
|
||||
use aoc2020::day22;
|
||||
use aoc2020::day23;
|
||||
use aoc2020::day24;
|
||||
|
||||
fn aoc2020_all(c: &mut Criterion) {
|
||||
c.bench_function("day01", |b| b.iter(|| day01::run().unwrap()));
|
||||
|
@ -46,6 +47,7 @@ fn aoc2020_all(c: &mut Criterion) {
|
|||
c.bench_function("day21", |b| b.iter(|| day21::run().unwrap()));
|
||||
c.bench_function("day22", |b| b.iter(|| day22::run().unwrap()));
|
||||
c.bench_function("day23", |b| b.iter(|| day23::run().unwrap()));
|
||||
c.bench_function("day24", |b| b.iter(|| day24::run().unwrap()));
|
||||
}
|
||||
|
||||
criterion_group! {
|
||||
|
|
608
aoc2020/input/day24.txt
Normal file
608
aoc2020/input/day24.txt
Normal file
|
@ -0,0 +1,608 @@
|
|||
wwwnwsenwnwnwnwnwnewnewsewnwnwnww
|
||||
nenwnwnewnweewsenwenwnwwswwnwswsw
|
||||
seswswseneeeswswnwnwswseswnwswswswswsw
|
||||
swenenwneswswswswsenwswswnwenenwseswsw
|
||||
wneneenwseeeewneeseneeeneeenenene
|
||||
wwwwenwwwwwnwnewwnwswwwwwse
|
||||
neneneneneneeneswneeneenwneeneneenesw
|
||||
seneseswseseswswseseswswseswsewsesesesw
|
||||
enweneeeeeseeeesw
|
||||
wwwsewswwwwswwenwneew
|
||||
sesweenwseeneeeswneeseeeseswenwsese
|
||||
seswswwswswswswseswswnwswswene
|
||||
swwnwwwwwwswnwwwseswwwwwseww
|
||||
wwnewwsewwwwswwneseweewwnw
|
||||
wswswseneswswseswseneswseswseswswseswnesw
|
||||
nenwnwneneseneeneswnewenweeswneeese
|
||||
wwenwwwwnwwwnewsewwnwwwswwnw
|
||||
newnwswneswswswneeeneenenee
|
||||
swwsewswswswnwswswswnewewseswswswsw
|
||||
eseneeenwseesweesw
|
||||
wnenenenwnenenwnenwnwnenwnwsesenwnesene
|
||||
eswneeeeeeeeneeeneenenewnee
|
||||
enwenweeweewesesesweswswnweew
|
||||
eseeseseseeswsewswww
|
||||
wseeneewnwswswenweee
|
||||
swwneswswwwwwswwswwwswwseswww
|
||||
wesesesewsweseenwnesewneneswseswsw
|
||||
nwswsesenwswnenenwenenwne
|
||||
neeneseenenweneneneeeweeneeeswe
|
||||
wwnwnwwwwsenwnwwnwwwnwwnwnwnw
|
||||
eswnewswwnwnwwnwnwnwenwwsenewenww
|
||||
wswsenwsewswseeneseseswswswneseswsw
|
||||
sewswewwwnwwwnwwneewnwnwnwswnw
|
||||
wsweswswwnwwsweswswswswnwswswswswswswe
|
||||
swneseswswswswswsesenwsesw
|
||||
neeeesewseenweeesweseeeeeee
|
||||
nenenenenwnenenwneneneneeswswnwnenenwnwnw
|
||||
nwwwewnwwnwwwwnwwnewnwwwwsenw
|
||||
senwseeeesenwseeeseenwsweseseswnee
|
||||
seseseeesenwseseeseeseseesesese
|
||||
nwsesesesenwseseeseseseswewseswswswsw
|
||||
wwwwnwwwwwnwnenwnwnwewnwwswww
|
||||
neneneneswneswneneeeenwneneneeenene
|
||||
seswnwseswsenenwnewseneswsenwsenwseenwswse
|
||||
neeswwewwwnwneswnwwswswnw
|
||||
eswwwswwnwwswneswwwsweswwweww
|
||||
nwswwsewneeeneswneeeeeneeneneesw
|
||||
eeswewwneseneneeneeeneseeeneneee
|
||||
seseewseeseneweeeweesewsenewe
|
||||
swseswwswneswswswsewsweswnwswseswwe
|
||||
nwnwenwnewnwsenwsewwnwwnwnwwwnewnw
|
||||
nenwsesesenwwnwsewenwwwwweswwwwe
|
||||
nesenweseeeseeswsewsewswwseeeese
|
||||
sewwswseseseneseswnwesenwseesenwenw
|
||||
weseseseesesesesesenwseseseseesesese
|
||||
swwnwnwnewnwnwwnwwwew
|
||||
nwnwnwnwnenwswnwnwnwnwnwwnwnwenwsesesew
|
||||
swsewwneswwnwswseswwneswswsewnewnew
|
||||
wwwwnwwswwnwnwewwwwwwnwwnw
|
||||
seseseseseeseseeseewnweseswnwesesese
|
||||
nwwnenwnwwnenenwnwnwnwneneenenenwnenwse
|
||||
nwwsenwnwnewnwwwnwwnwnwnwwnwnwwsenww
|
||||
sesewsesenweseseseseseseswsesese
|
||||
seewneswwwwnwwwseswwnwewnwnwnw
|
||||
neneneneneneswneneneswswe
|
||||
wwwwwwwwsenwwwwwwwwww
|
||||
wnwwwnwwnwsewnwwwwwwswe
|
||||
nwswnwnwewnwsenwneneneneswnwenene
|
||||
senweweneseeweeeseneeeweeenw
|
||||
wnwnwwwwenwwwswnwnwewswnwnewwne
|
||||
eewnewswnenwswwswwsweeseswnwwnw
|
||||
wsenenenwnenenwnwnenenenwnenenenenenenw
|
||||
swseswwswwswnwswswseneseeesw
|
||||
eeenwnweeeseeeeeeeeeswee
|
||||
seseneewsesesenwseseeseswsesesesese
|
||||
swswwswsweswswwswswsw
|
||||
seseseseseweeeeeeseeseswneeenw
|
||||
nenwnenwneseneswnenwnenwsene
|
||||
neneneneneneneswenenenenene
|
||||
nwnwnwswnwnwenwneneneneeswnwnwnwwnwne
|
||||
wswnwneneenenwneswnwneswnenenwswsenwnwe
|
||||
nwnwnwswnwnwnwsenwnwnewnwsenwnwnwenwswnw
|
||||
seneneneneenenweenenenenenenenenenew
|
||||
nwwswnwnwnwwnwnwnwnwnwwsenwnwsenwenw
|
||||
seseseseswsenesesesesesesesesese
|
||||
enwwwwenwswwswnewwswwsesww
|
||||
wnwsenwnewenewswswswseewwwwswswswe
|
||||
seswswnwswwwswswenwneesenwswswswnwesw
|
||||
sesenwnwswsesesesesenewsesesenwsesesee
|
||||
wseswnwswseseseeneeswsesesesesewsesene
|
||||
swwseneswnwwwswnwwewwnewweewsww
|
||||
neswseenwseneneenesenenenewnenewswnee
|
||||
eeseeseweeeseeeeseesesesee
|
||||
esesewseseseseneseswsenweseeeesese
|
||||
wwnwnwwwwwwwnwnwnwsenewnwse
|
||||
seenweseseseseeeseswnweeseseeenee
|
||||
swswwswwwwwwwwwwnewwwwnenew
|
||||
nenenenenenenwnesenenenewnenenenenenwne
|
||||
enesweeeeenweeneeenwsww
|
||||
eeneeeeeeneeeseeeeeeewswe
|
||||
sweeeeeeeeeeeneeneee
|
||||
wnwnwwwsenenwwwnwnwwnwnesesenwnewsw
|
||||
neneeenweeseneeswneeweesenwneee
|
||||
seneeeseseswnesewswnwneswswnwsewwnwnwsw
|
||||
nwneeenwnenenenwnwnenenenwnwnewnewne
|
||||
neswnwsweesewswswnwwneswswwswneswwsene
|
||||
seeseseeeenwswseeenesesesenwsesewse
|
||||
nwnwnwnwnenwnwnenwnwnwenwnenwenewwse
|
||||
enwnwnwnwnwnwnwnwnwswnwnwswnwswnwenwnwnwne
|
||||
nwwwneneswswneeewnwwnwswswseeseseee
|
||||
nenwnwswnwnwsewneneenwnwwnw
|
||||
senwweweswnwneeneseeeswnweseswse
|
||||
wnwwnwnenwnenwsesenwnwwnwnwswnwswnwnwnenw
|
||||
wwnwnwsewnwnwwnwesweswnewwwswne
|
||||
nenenewneswneneswneeweswneenwnesenw
|
||||
eswnwwwsweseswwswswwwnwswswnwswsenw
|
||||
eeeswsenwseeweeeeeeseeeeee
|
||||
nwwwnwsewwnwwnwwwwnewwsewwnwwne
|
||||
seseseesesesesesesenwseseseseseseseswsw
|
||||
nwnwnwswsenwnenenenenwnwnwnwnwnwwnwne
|
||||
nwsesewesenwnwnwnwswsewenwswnwnenwwe
|
||||
newneseneneseswnwnwswnwewswnwnwseesw
|
||||
eeeeeeneweeeneeneswneeseene
|
||||
nwnwwnwnwnwnwwwswnwnwnwnwwewnwwswe
|
||||
swswswseswneseseseswswseseswswswnwsesesesw
|
||||
eeseneneseweneneeeneeneenwneewne
|
||||
eseeswseeeeseeneseeeenwseeeese
|
||||
sesesenwsesesesewsesenesesesesesesesesesese
|
||||
senwseseseseseseseseseseseseseseswsesenwsw
|
||||
neeneneswnenenenenenenenweneneneneswne
|
||||
swswswseswwswswswswnwswswswswwseswswnwsw
|
||||
neeeeeeseneeneswwneeeeeneeee
|
||||
enweesweneneswweneeewenewenee
|
||||
sewwswswwseneswwwsenwwswwwnewwww
|
||||
wewwwenwseswnwwwwwwewnwnwnw
|
||||
nwwenwsewswwwsw
|
||||
neneneeneneneseneneweseenenweenenene
|
||||
nwswswneswswwnwesenwsweswswswsw
|
||||
swenwnwnwnwnwnwnenwsenwnwwnenwnenw
|
||||
swseseneseseseseneswwsewneseewswnwsene
|
||||
wneeneneswnwneneewneneneeneenenee
|
||||
eenwneeweeeeeeesweeeee
|
||||
seneeswnenweweweeweneeswseee
|
||||
swseseesewswswsenwswswswswswswsw
|
||||
wswwswwwswwswwwwnewwwwsewnesw
|
||||
nwnenwsewnenenenwnenwnwnwne
|
||||
neenwneneneneneseneneneenewnenenwnenesw
|
||||
enwnwwnwnwesenwswnenwnwnwenwnwnwswnw
|
||||
swnenwswsweseeswswswseseswwnwswswseseswsw
|
||||
nwswnesweswswsewswseswnwswswswswneseswesw
|
||||
swneseneswswwsenwswswswsw
|
||||
eeeeseeeeeeeweeeeeneee
|
||||
wnwwnwswewwnwwwwwwwseww
|
||||
neenenwswnenweneeeeseneseee
|
||||
neneweneeeneneneswnenweweeseene
|
||||
neeswnesenenwnwnenenwswnenenwswwnesenw
|
||||
senenwnenenenenenwnene
|
||||
sewnwneseeweswseeseenesesenweswwwne
|
||||
swswnewseswswswswswwseseswswseneswswswsesw
|
||||
nwnwswenwnwnwnwnwnwnwnwnwnwsewnwnwnwnenw
|
||||
eseneswswnwswnweneeeeeeeeeeee
|
||||
nenwnenwnwnenwnenwnwnwneswnwnenwe
|
||||
senenenwsweswsweseenwnwwswnwswswswnwwe
|
||||
nweneeneseneswwneswneneenewneeneene
|
||||
seeseswnesenwnwenwnwnweneswwwnenwnwwnw
|
||||
eseseeseeeseesesenesenweeseswsesese
|
||||
swswsesenwswswswsenwswneswswseneneswsew
|
||||
nenwnwnwseewnwwnwnwsewnew
|
||||
swswseswswswneweswswswwswswswswswswswswse
|
||||
wswsweswswswwsweswswwnwswswswswww
|
||||
swnewwsenwwswwnewnwwsewwswnwnwne
|
||||
wnwwwwnwwwsewnenwneenwswsewwnwww
|
||||
nenweeeeeneeeesweee
|
||||
sesesenwswswneswenwswwswwneswnesw
|
||||
swswsewswwswswswenewswsww
|
||||
seswseesesesesenesese
|
||||
nweeseseneswwewseswseneseeeeeese
|
||||
swnwswswseswwsweswwwswwwwewwnw
|
||||
wnwnwnwnwneswnwnwnwnwwnwnwnenwnwsenwnwnwnw
|
||||
nesenenwwneneswnenwnwsewneenwnwnwnwnw
|
||||
eweeneneeseneeenweneeeneseenene
|
||||
nwwnwnenwsewnesewwewwnewwnwese
|
||||
eseeseseeeeseseenweseeseseeesw
|
||||
wwnwwnwwewnwnwnwnwwnwwwnwsww
|
||||
wnenweewsesewww
|
||||
nwseseseseseseweeseeseseseseseesese
|
||||
seseswwseswswsesweswseseswswswsesw
|
||||
wswswsweswswwswswswwswswwsw
|
||||
eeeneenweneeeeeeeewseseene
|
||||
neneneenwseseswswenewsenenenwwsw
|
||||
nwnwsenwnwsenwnwwnwnwnwnwnwnwnwnwnwnwnw
|
||||
eeneseseneenenwewneeeeeneene
|
||||
wwswswswwwwswswswwswwnwsewsw
|
||||
senewseseewnwswseseseswseseswseswsesese
|
||||
seswseswnwnwweseneseswsesesweseswsew
|
||||
nenwnwseswseeweewnwnwneswnwswwnwsww
|
||||
nwnwnenwnwnwnenenenenwnwnenesenwsenenenwnw
|
||||
sewnwneswsewwswnwwseewnenenweswne
|
||||
nwseswnwswsesenwnwnwwswnenewseswsewe
|
||||
newnweseswsesenwwnwwnwnwnwnwnee
|
||||
swwnweswwneeswnwswenwnwswswwswwse
|
||||
sewwnwswenwwwwsewnwwseswneeswneswe
|
||||
wwwwwwwnwwnesewwwwwnwnwww
|
||||
seenwwswenwswnweeeeeeseeewsese
|
||||
wswnwwwwwsewnewwswsewswwseenw
|
||||
nenenenwwenwnwnenenenwnwnenesenwnwwse
|
||||
nwnwnwnwnwnwwnwenwnwnwnwnwnwsenwnwnwnwnw
|
||||
seseswseswnwseseseseseseseseswnwsesesesw
|
||||
wnwwwwsenenwsenwwnenwwnwwwwenwnw
|
||||
nwnewseseswsewnwnenwswnwseenesewnwnenw
|
||||
neswsewwwwweneswwwweswwwnenw
|
||||
nweswneneeneeeeneneneneswneneeneee
|
||||
wswneneseeswswsewsenweseseswenwnwsw
|
||||
sewswnwnwnwnenwnwnwnwswsewwwnwnenwwne
|
||||
swswwswswswwswnenwswswsweswsenwweseswse
|
||||
neseswwwnwnwnewnwseswnwwwenwnwnwe
|
||||
swwswswswseswneswswwswswswwswnwswsesw
|
||||
wnwnenwneswwnwwnwnwwsenwwnwwwwnw
|
||||
wwnewsenwwnwwnwwwnwnwenwwnwww
|
||||
swseswnweewwswnewswwenesenewswnw
|
||||
eneeseenwsesweeneenweenwwesese
|
||||
sesesewswwswswswswseeseseseseseswewe
|
||||
nenwenwnwwnwnesenenwnwnenwswnwnenenwe
|
||||
seenweeeseseseesenwseswseswsew
|
||||
nenwnenesenwwnwnenenwnwnenwnwnenenenwnw
|
||||
nwswseewswnwneswswneseseswsewseswnwse
|
||||
nweneswwnwnwwwewsenwwwwwnesww
|
||||
neeswswswwwwnwsewneswswswsewwwwww
|
||||
wswseswneswesewneneesesenwseenwenw
|
||||
wewwswewwnwwsewwwwwnwnwwwne
|
||||
ewseneesesesesenwseesesweseseseee
|
||||
nwenesweeeeeneneeneneneeneeee
|
||||
nwswseswsesesewswseseswseseneseswse
|
||||
wnwnewneneneswewneneneeneneenenenene
|
||||
nwnwnwnwnwnwnwnwnwnwnwnwwnwenw
|
||||
wwswswwnwwwwswswwweswwwwsww
|
||||
seseseseewseseswnwneeeseseesenesese
|
||||
neenwnwnesenwswnenweenwsewnwwswwnwse
|
||||
swswseswnwswseswswswseseswseswnwsesweswswsw
|
||||
eseeeseenenwenesweneweeenwwse
|
||||
nwwwwwwwnewwwnwsewwwewwwsw
|
||||
swswseswseeswswseswswswswsenenwwseswsw
|
||||
nwneswseneneseeseseeswseswsenwseseswsese
|
||||
nenwwwwwwwwseseweswwwwwww
|
||||
wsesenwwseeseneseneneswwseseeseswsese
|
||||
swswswneswswswwwwwwswswswswnwsewswse
|
||||
eesewsesewneswseneeseenweeswese
|
||||
swsenwsenwswneswswswseswseneseseswsesenwse
|
||||
wwwswnwsweswwesewwwwwwswwwe
|
||||
eswswnwwwwnwweenwwwwwwnwwnww
|
||||
seweeeneeneeeeenwsweneneewswsee
|
||||
nwswnwnwnwwnwnwnwsenwnwnenwnwnwnwwnwnw
|
||||
sweswwseseswsesesw
|
||||
nwwnwenwswwnwnewwswsewnwwwewwwne
|
||||
nwnwnwnwwwnwnwnewnwnwnwnwnwwsenwnww
|
||||
wswswswneswseswswnwweewswwswswwswsw
|
||||
neneneeneswnenwnenenesenewneeneeene
|
||||
neswseseseneseeewewneseseseseseswnw
|
||||
sesweswnenenwneneeneneneneenenwnwsenene
|
||||
nwwenenenwseewwseseswnwwwwwenewe
|
||||
nwnenwnwnenenenenesewswnenwneenw
|
||||
neeneneneneenewseneneneenene
|
||||
wwwswwesenwswneswswswwwswneswswswsw
|
||||
sewwwwwwwwwwwne
|
||||
seseeeeeseseseseweneseseswsesewsenw
|
||||
seeseeeseewseeneseseeesesesesee
|
||||
wswwswwwwswweswsw
|
||||
nwswnwnenwnwneswnenwnwnwnenwnwnwnenwnwne
|
||||
wswnenwnwnenwnenwswnenwsenenenenenwnwenwne
|
||||
enweeeeeeeeseeeswewweeee
|
||||
seeeesweseeeeseweseneenesenwsese
|
||||
nenwnwswnwnwwswwsewnwnwnwnewnwwwnw
|
||||
sesesweneweseswseseseswnwsesesesesesese
|
||||
senewwwswswwnewwnewsewnwwenwsenww
|
||||
wwwsenwnwwnwnwnwnwwnwwnwwnwsewnw
|
||||
swswswswswseswswswswnewnwwnwswwwswe
|
||||
seeeneeseesenweseeeewseeseswnwsw
|
||||
wwswnewewsewnwweswwwwswswww
|
||||
nwnwwnwnenwnwswnwenwnwnwnwnenwnwnwnwnwnw
|
||||
neneeneneeneeenweewneneswne
|
||||
nesenewenenenenwnwnenenesenewsenesewe
|
||||
seneeseeswesesesesenweeewese
|
||||
sesesesesesesesenwesesesesw
|
||||
wnwwnwwsewwwsenenw
|
||||
neneeneeeneneeeeenwesweeeee
|
||||
eeeseneneneeneeneneeneewewee
|
||||
seseseseseseswsesenwsesesesesesese
|
||||
wsweswswnewswwsweswwswwswswwnwswne
|
||||
wswseswwwnwswswesewswneswnwwwnee
|
||||
eseseseswneseseeseseseswseneswnwsewsesww
|
||||
nwnwsenwnenwnwnenenwswwnwswwnwneeee
|
||||
neneeeneneewwneeneneneeswseneneeee
|
||||
nenwewnwwwnwnwsenwse
|
||||
nwnwnwnwnwnwnwnwswwnesenwnenw
|
||||
nwweseseseseseeeseseseeeenesesese
|
||||
nenwnenwnwnewswnenenenwnesenenenenenesenw
|
||||
seneseseseseseseeseseseseswew
|
||||
neseeneenenenenenenenenewneenenwene
|
||||
nwnwnwnenenenwnwnenesenenenenwnenewnwne
|
||||
swseswswseswnewswwswswseneswneswenwsw
|
||||
eeneeseenwesweeneweeseenwene
|
||||
wswseseseseneseseseseswwseneswesesenenw
|
||||
sesesesesesewseseseseseseseeseneswsesew
|
||||
nweswnwnwesesweseswswnwnweseenwsene
|
||||
seneseeseeeeseweseeeseseesesese
|
||||
wneeneeneweneseneneneesenenenenene
|
||||
seseesesesewwseseseseeesesenwsesese
|
||||
neneweeseneewnwseneneeswneneeeneene
|
||||
neswenwswseseswswneswnwenenwseswsenwnw
|
||||
swswnwseseseseswswsweswnwsenwswnwsesesese
|
||||
wnesenwwwweswwwwwwwswwwww
|
||||
eswnwwswweweeeswnweswnenweseww
|
||||
wwnwwweseswnwwnweseeneswswe
|
||||
wnwnewwnewwwwwwnwsewwwwwsww
|
||||
neswnenenwneneneneneesenewneneeeenene
|
||||
wneewnewsenwsenwnewswesenwswwnewsw
|
||||
nwsesesewwnenwnwe
|
||||
nwnenwnwnwwnewenwsenenwneesenwnwnewse
|
||||
seneseswseseseswseswsewnese
|
||||
swseswswswseeswswswswnwsesesesw
|
||||
newnwseeenwnwwswnenenwnwnenwnw
|
||||
swwwnwswswswsewwswewwswwswwwnesw
|
||||
nwnenwnwnwseseneenwnwnenenwnwnwnwsewsw
|
||||
seeseseseseseseeswnwsesesesesesesenw
|
||||
sewenewnwneneewnwnwnwnwnenenwnwnenwnw
|
||||
neneneesenenwnwwneneneneneneenenwneswnw
|
||||
wwwwswswswswewwenwnwwswwwswsew
|
||||
senwwwwwwwnwwwwwwwwwweww
|
||||
sesesesesesesesesenwsesesese
|
||||
nwwnwnwnwnwnwnwnwwnwnwwnwsenwnwnww
|
||||
nenwnwnwnwsenwnwnesewnenwnenenwnwnwnwnenw
|
||||
nwneneeeeeeeeeeneeeeseswee
|
||||
swseswseswswswswswswswseswnwsweswswswsw
|
||||
swswswnwswswswswswseswswswswneswswswswse
|
||||
seseewsesewwnwnesenenenenenenewnenesew
|
||||
neswseswnwseswswswesesweneswnwseswnwsew
|
||||
senesewnwswwseseseseseeeneeseeese
|
||||
nwsweenwenwnwnwwnwnwwnwnwnwnwwnwswsw
|
||||
seseswswswnenwseswneeswswswsweseseswnw
|
||||
seseswseswswseseneseewseswswseswswsewse
|
||||
swswswwsesewswswswswwswnwwwwneswswnesw
|
||||
eeeeeeenweseeesw
|
||||
eeeneeeneeweseeeee
|
||||
nwnenewneneneenwsw
|
||||
neeneswenwweeswewwseenenw
|
||||
nwswnwewwnwnwnwwsenwnwnwnwwnwnwnwsenww
|
||||
enewenwseneneswnwnesewsewnenenwneseswne
|
||||
seneswswseseswswesenwsesw
|
||||
nwnwnwwwnwnwwnwnewnwsenwwnwnwnwewnw
|
||||
nwnwnwswswwnwsenwnenwenwnwsenwnwnenwnw
|
||||
nwseneswnenwwnwnenenenwnenwnenene
|
||||
wswswswswwwwswwswsenwwswswswsw
|
||||
wwwnwnwwenwwsenwwwwewwwnwww
|
||||
eseeneswseenwwseeeeswsesenwswwe
|
||||
neseeswnenwwnewsesesewsweneseeswsese
|
||||
seswswwseswswswsenwseseseseseeseswseswnw
|
||||
swnwswwnweweewwwswwwwswesww
|
||||
nenwsenwenwnwnwnwnwnwnwnwwnwnwnwnwnwnw
|
||||
swswseswneswswswsenwseswswswnwneseewswsw
|
||||
neneweenenenesenenene
|
||||
swneswswswswswswswswswsw
|
||||
nenenenenenenwnenenesewnenwnwnenenesenene
|
||||
eneeseeeeeeeeeeseeewesee
|
||||
seeseeseseeneseseeeseseseswese
|
||||
seseswenwswnwseswswswswseseeswswseseseswse
|
||||
nwwnwwnwnwwnwnwnwseewnwnwnwnwnw
|
||||
seneswswswwswswseneswswseswswswseseswsese
|
||||
nenenwneneneenwnwwnenwnwseneswnenenwnw
|
||||
seseewsenwneeneswenwnwneswenenenese
|
||||
nwnwsenenenwnwnwnwswnwnenwnwnenenwnenwne
|
||||
nwnwnwwenwswnwnwnwnenwnwnwwnwwnwwwsww
|
||||
swswnwseseseneswneneesewseenwnwsesew
|
||||
neneenwnewneswnenwnenenenwne
|
||||
wswswneseseswseswsesewswswseseseseseese
|
||||
nwnwnwnenwnwnwwnwsewswnww
|
||||
wwewnwwwnwwwwnwwwnwnwnwwwsw
|
||||
swsesewsewnenesenesesesesesenweswsese
|
||||
newnenwswnwneneweswsenenwenenwnenwese
|
||||
swswswswswwswwswswswsewswswnwswswswwe
|
||||
ewswneswnwwswwwwwsewwwwwswwww
|
||||
wwwwwwswwnwnwwwwweewwwww
|
||||
wswseneswnwneswnwnenenenwwsenwnenwnese
|
||||
nwnwswneswnwnenwwnenwnwenwnwnwnwwnwese
|
||||
neenenenenewneneneneneenene
|
||||
weewneswseneneseneswnenww
|
||||
sesesesesesweseseeeseesewseewwenw
|
||||
nwnwnwnwnenwnwnwwwnwsenwnwwnweswnwnw
|
||||
nwnwnenwwwsenwnwnwnwnwnwnenwnenwnwnwnesene
|
||||
swseseseseswseseseseseswsesenwnwsesesesese
|
||||
wwwnwwnwnwnwewwnwwwewswnwww
|
||||
seswseenwseseeeweee
|
||||
swswswnenwseswnwseeseswneseseseneesesww
|
||||
neeneenwswesweneneswswneeneeswene
|
||||
nwswswweesewwwnenwwewwwneww
|
||||
neeeeeewseseseeeseseee
|
||||
sesenesesesweseseeswseswseswwseswnewnww
|
||||
newenwsewseweseseseseseswseseenesesee
|
||||
seseeseewenwwseeseseseewneesesewse
|
||||
nenenenesenwneeneswneneneswneeeneneee
|
||||
sesesesewseseswseseseseneswseseseswsese
|
||||
newnwnenenwnweneneeswnenwnwsenwnwnenene
|
||||
swswswseswswseswswswneseswnwswseseswesw
|
||||
nwneswswnwnwenwnwnwnwnwnwne
|
||||
wnewswwsewwenwwwwnwwnwwwnew
|
||||
swsenweseseeeenwseseeeseseneesewse
|
||||
wwenwwnwnwwnwseewnwwewsewnw
|
||||
nenenwnwneseswnenwnenwnenwnenenwnenenwnene
|
||||
seneswswswswnwswswswswswswseswswswswswse
|
||||
nwweswwwswseswwwwnewwwwwswwswsw
|
||||
wwneswnwnwnwenwwsewwnwnenwnwwnwsenesw
|
||||
sesewnwnwnwswsenewwnenwnwnenwnwnwnwnwnenw
|
||||
swnwswswswwswswswswneswneseswswswswswsw
|
||||
wswwneswswnewswswsesesesesesenweswsw
|
||||
neseseswseseneswwswsesewseseseseswswsese
|
||||
swewneeswswswswsenw
|
||||
esenwnenwswsewswswseswseswnwseswswswswse
|
||||
swewswneeeseseseeeeeweeenenwe
|
||||
nwwnenenwwneseneseneneewseneneneeswne
|
||||
nenewnenwenwneweswnwne
|
||||
eeeeeeeeeseseewweseesenesene
|
||||
swnwswnwenwewwwswnwswnwwnenenesesw
|
||||
seenesweswsesweeeenewneneenewesw
|
||||
seeseeweseseseseseseseseseseseewsese
|
||||
swswswneseneswswswwweswseswseswswswsw
|
||||
sweeeeeeeeeneeneneeswene
|
||||
eswwsenwswswswseswswswswswswwswnwneswsw
|
||||
sesesesweseeseneeseseseseseseseseswene
|
||||
enweseseeeseeseseseneeesweeese
|
||||
wwswwwwwswwewwnenewwwswwww
|
||||
seewnewenwneseeeweeesweeeseene
|
||||
seneseneneneenenewneenenenenewnenene
|
||||
wnweseswswnwnweswnwenwswseeswswswswnw
|
||||
nwneneneeneneswneneneneneneneneneneswnenene
|
||||
nwnwnenwnwnwsenwnwswnenwnwnwnwenwnwnese
|
||||
nenenwneneneneneeneeneeneneneeneswne
|
||||
nenwneeseenenewsesweneenenenwneeene
|
||||
neneneeneeseewneeneewwe
|
||||
wenwsesweseeeenwesewenweesesese
|
||||
nwnwwnenwnwnwsenwsenwenenwnenwnwnwnwnwnw
|
||||
swesesewseswswseswswswseneneseseswnwsesw
|
||||
nwnenwnwnwnwswnwnwnwsenwnenwnwswnwwnwne
|
||||
eswwswseswsewenwnewwnewseswneswwnwsw
|
||||
swseswsesesenwseseseseswsese
|
||||
esweswnwewsenwsewse
|
||||
wsesewwwwwewnenewnwwswwwneww
|
||||
swseseswwswswseseswswneseswswsesewswneswsw
|
||||
swswswswseswseswswswswnwnwswswswseswnesw
|
||||
nenenesenenenenenenenenenenenenwneneneswne
|
||||
eseswesewnwseeseneesweewseseenwese
|
||||
swwswswswnwseswswswswwswsweswswswswswsw
|
||||
neseeenwnweswenwsewseseneswwswnwsww
|
||||
swswwswneneswswswswnewswseswswsenw
|
||||
senwnenenweneneeneswneeneneeseeswnew
|
||||
nenwnwnenwnwnenwswsenwnenenenenwnwwnwe
|
||||
nwwnwnwwnwnwwnwnwnwnwnwnwenwwnwnw
|
||||
swswswseswswswswswnwwseswenwswseswsweswe
|
||||
wnwwwenwsewswwwwswnewwwnwwww
|
||||
nwwwnwnewsewwwwnwnwwwnwnw
|
||||
nwswweswewswswnesw
|
||||
sewsweseswswswswnwsweswswswswswswswse
|
||||
ewneneseeseneeeeeneeneenwnwnee
|
||||
seswswswwseswswseswswswswswneswsese
|
||||
eeeneeseeeeeseseswesese
|
||||
neswsenwwenwnwsenwswnenenenenw
|
||||
eswewswwneenenenenwsenwsewnwenewnw
|
||||
wwswwswwenwswwewswswwwwwwsw
|
||||
eenenenwwnesweeenenewseswenesene
|
||||
seswneneneseswwenwnweneneneenenenene
|
||||
wenwwnwswwwnwwwnwnenwnwwnwswwe
|
||||
nenenenenesenwneweneenenenenenenesene
|
||||
wwwwwwwwswwswwwnwwswswesww
|
||||
wwsesenwnwnwnwwnwnwnwnwnwnwnwnwsewnw
|
||||
senewnwenenenenenewneneneneneneneswneene
|
||||
sesewnwneneneneneneneneewneeneswnw
|
||||
swwswswswswswswnesw
|
||||
swweneswnwwnwwneswseswswesewwswse
|
||||
neneesenewnewneneenenewnenenenenene
|
||||
nwnwswneswseswnweee
|
||||
wenewwwseseswnewwwwnwwswswswwnw
|
||||
swsewnenwenwsenenwse
|
||||
nenenenenwneneneenenwnesenenenenenesenene
|
||||
newwwwnwsewwwwwswswwnesewsww
|
||||
wnwenwwnwwswnwwnwwwwswnwnwenwnw
|
||||
weswswwwewsweswswwswwwwswww
|
||||
seneeeseenwsesenwswsweesenwseeeewe
|
||||
swnwenenenenenenwsenenwnwnenesenenenwnwne
|
||||
nwnwnweswenwnwnwnwnwnwwnwswwne
|
||||
swswwswswswseswswswswsweswnwswswswesw
|
||||
nwnenwnwnwnwneswnwnenenenenenewsenenwnenw
|
||||
nwsesenenenenenenenenenenenenenenenenwsenew
|
||||
eseeeeeeeeeeeeweene
|
||||
senwnwnwwenweswnenwnwneewnwnwwww
|
||||
swnwsenwswneneneenweswseweneneneee
|
||||
weeeewseseeeeseeeseseseseee
|
||||
wnwenwnwenwwneswnwwnwneneeswnwenw
|
||||
nwsenwnwnwwwnewwnwseneseswnwnwwnenwnw
|
||||
nwnenenwsenwnenenenwnenenenewnwnwneew
|
||||
senwnenwnenwnwnwnwnenwnenenwwsenenwnwnw
|
||||
enwwwnwnenenewneneswenenesewenene
|
||||
nenweneneseeenenwenwnenewneswseneswe
|
||||
wneseneneneenwneneneneneswnenenenenenenene
|
||||
neneneeseeneeneweneeneneenene
|
||||
eenesweeneneneneneneneneeenene
|
||||
esweseeneeeeneeneneeeeewnwse
|
||||
sesesweswseseseswseswnwseswseseseswsese
|
||||
nwnenwnwwsenwnwnwnwnw
|
||||
nwenenweneneswsesweeneneewneeene
|
||||
ewneseseeswseeneeeseew
|
||||
swswwswswnwswswswswwswseswswswnewswewsw
|
||||
sesenweseeseeeneneeseweswsesesesw
|
||||
nwsenwseeswswsewwsenenwwnwenenwswwene
|
||||
swswnwwseeneswwnwnew
|
||||
swswswseswseswswnwseswswswseeenwswswsese
|
||||
swnwneswnwwsweswseswwwnwswwswswewse
|
||||
nwnwnwnenwewnwnwnwnwnwneneswnwnwnw
|
||||
seseseswsesesweswseswswseneswwseswswsese
|
||||
swwweswwneswswwswwwseesenwnewse
|
||||
wswwnwwsewnewswwwneswnewweswswswne
|
||||
eseenewneneswsesenwneneeneneswswnenewsw
|
||||
seswesenwnwnwneswswnewwnenwneseneenew
|
||||
wsweswswswswswswneswswwwswneswswwswwse
|
||||
swneneneenewneneneenwwsewneeeneswne
|
||||
nwneswnenwwswnenwsenwnwnwneenwseenenenwsw
|
||||
seseswseswseseseneswswsweswswswsewsesw
|
||||
ewneneseeneeneneswnw
|
||||
eeseswnwseseeeeeseseswnweseeseee
|
||||
wwewseswwwswswwwnenewswswwwswsw
|
||||
nwewwenwswnenwseswwnwwwnewnwnwswe
|
||||
seswseswsesesweswseswsesenwsesesesesese
|
||||
swswswwwswwswewswswnewwewswwwsw
|
||||
swnesesenwewwseseeswnewnenwwenese
|
||||
swnwwseswenwsenwneseseseseseseenwsesw
|
||||
nesenewsenwnweswwwwnwneswnwwsenenwne
|
||||
ewnwnwnwnesenwnenwnwwswnwsenenwenwnw
|
||||
esesewneseseswsenesenwwseswsesesenenw
|
||||
seneswwwnwenwseswnwwwwwswswwene
|
||||
eswwnewnenenwnwnwnenwnwnenwsenwneene
|
||||
wneseseesenwnwseneneneswswwwwnwswenese
|
||||
nesenwnwwnesenesenenwneswnwneswnwnwnenene
|
||||
senesesesewseseseseseseseseseseesesese
|
||||
neweeeeneenenwswenesweeeswneee
|
||||
swneneenenenewnenenenwwnenwsweenenene
|
||||
nwwenwwwseswswwneswwsenewenwnwnw
|
||||
nenenenenwsewneseneswneswnenenwne
|
||||
swswswwswsweswswswswswswsw
|
||||
nenenwsenwnwnenwnwnenenenwnenenenwneswnw
|
||||
neneswnwnwnwnwnenwnenwenwnwnwnesenwnenw
|
||||
nwnwswswswewswswswswswswswseswswswswsw
|
||||
weeeeeeenee
|
||||
swnwswswsenwseneswseeseswswneseseswswnwse
|
||||
swswwseseswswneswseswswneswseseneswswsw
|
||||
weesweneseweeenesewesweneesee
|
||||
seswswswseseseseseseseneseswsesenwesese
|
||||
eweneseeeseneewnwneeeneneenese
|
||||
swwnenwswwnwnwnwnwswwswenweenwnww
|
||||
nwwwwwswwswwwwwswswswwswswwe
|
||||
eneenwneseseeneneeenwseneswneenew
|
||||
sesesewneswnwnenewneseeneswnwnenweew
|
||||
eswswswsenwnwnwnewswnenwseswnenwnenee
|
||||
enwwwesweeeeeeeeseeseeeeee
|
||||
eseeeeeeeseeeneseswwseeeeee
|
||||
nwnenenenenenwnenenenenwneswsenwse
|
||||
weseseseeseseseseseseseeeenesewse
|
||||
neeneeeweeesweeswenweeswnwenw
|
||||
nwwwneswswwswswewewwseswswswww
|
||||
nenewnenenwnwnwnwnwnenwnwnenenesenwnwnw
|
||||
esesesenesewseseneseseswsese
|
||||
sesweswneneneneswwnewnwnenweenenenwsw
|
||||
nwneneswnwswswwnewneneneseseenwsewnese
|
||||
wneseewnwnwenwnesenwwseseswwnewnwe
|
||||
senwwsweeesenwse
|
||||
wnewwnewsewwnwseswwwswnewwwsw
|
||||
nwnwwnwnenwnwnwnenwnwwnwsenenwsenwsenw
|
||||
enwwwwnwwnwnwwwnww
|
||||
wwnwnwswewneenw
|
||||
wnewewswwwwnwswwswswseswswwnesw
|
||||
wneenweweneeweseeeeseeeseee
|
||||
eeswswweeeneseeeneenwswseseenw
|
||||
nenenenwnwnwnwnwnwswnwnewnwnenwnwnwenwne
|
||||
nwswswsenwseswnesewnwswswswswseswneswsw
|
||||
seeweeeeeseseseseeneseseseseswse
|
||||
sesewneseswneseeseswseesewwswsesesw
|
||||
nweneswsesenewweseswwneseneeseswswe
|
||||
senwseseswsesesesenwesenwsesesewesesesw
|
||||
eneneneeenwnwnwnwseseweneswse
|
||||
neswneswnenenewswnesenwnenenenenwnwnesw
|
||||
neswswseswswseswswseweswswseswswswswsesww
|
||||
neeeeeweneesw
|
||||
eneneeeeneswnene
|
||||
swswswswneswswswswsewswswswnwseswneswswsw
|
||||
wnwesweneneseseneweeesewswwwnwe
|
||||
wnwewwwnwnwwnwwenwsewswnwswww
|
||||
neeswnenwnenwsenwnenewweswsenenwnwswnw
|
||||
nwswnwnwwnwnwnenwnwenw
|
||||
swneswswswswwswswswswswswswwswswsw
|
||||
swnwwnenwneswneenenenenenenwseeeesesw
|
||||
wnwnwnwnwnwnwnwnenwnwnwnwnwswwswnwnenwnw
|
||||
seswswnenwseswnwsesweseseseseswseneesww
|
||||
seewnwnwswneweswwwenewwewsenwse
|
||||
swswseswswswswnwswweswseswseneseswswsw
|
||||
neneneeeneeseeswsweeeewneeeenw
|
||||
swseswseswswswneneseswneswnwne
|
||||
neeeneeneneneneneswnwenene
|
||||
swsewewnwnwnenewnewnwwseewseesese
|
||||
nwnwnwewnenwenwewnwnwnwnwnwswnwnwnwnw
|
||||
nwwweeeeseswseseseseesenweseewe
|
||||
sesesewswsweseseswseswswseseswswneenwnw
|
||||
nenenenenenenwneneneseswneneneswne
|
20
aoc2020/input/day24_provided.txt
Normal file
20
aoc2020/input/day24_provided.txt
Normal 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
|
144
aoc2020/src/day24.rs
Normal file
144
aoc2020/src/day24.rs
Normal file
|
@ -0,0 +1,144 @@
|
|||
use std::collections::HashSet;
|
||||
use std::fmt::Write;
|
||||
|
||||
use anyhow::{bail, Context, Result};
|
||||
|
||||
const INPUT: &str = include_str!("../input/day24.txt");
|
||||
|
||||
pub fn run() -> Result<String> {
|
||||
let mut res = String::with_capacity(128);
|
||||
|
||||
writeln!(res, "part 1: {}", part1(INPUT)?)?;
|
||||
|
||||
Ok(res)
|
||||
}
|
||||
|
||||
fn part1(input: &str) -> Result<usize> {
|
||||
let mut black_tiles = HashSet::new();
|
||||
|
||||
for line in input.lines() {
|
||||
let mut line = line;
|
||||
let mut tile_pos = HexCoordinates::default();
|
||||
|
||||
// compute tile coordinates by going through the whole line
|
||||
while !line.is_empty() {
|
||||
match line.chars().next().unwrap() {
|
||||
'e' => {
|
||||
tile_pos = tile_pos.east();
|
||||
line = &line[1..];
|
||||
}
|
||||
'w' => {
|
||||
tile_pos = tile_pos.west();
|
||||
line = &line[1..];
|
||||
}
|
||||
'n' => {
|
||||
match line
|
||||
.chars()
|
||||
.nth(1)
|
||||
.context("invalid input, missing char after `n`")?
|
||||
{
|
||||
'e' => tile_pos = tile_pos.north_east(),
|
||||
'w' => tile_pos = tile_pos.north_west(),
|
||||
other => bail!("unexpected character in input: `{}`", other),
|
||||
}
|
||||
|
||||
line = &line[2..];
|
||||
}
|
||||
's' => {
|
||||
match line
|
||||
.chars()
|
||||
.nth(1)
|
||||
.context("invalid input, missing char after `s`")?
|
||||
{
|
||||
'e' => tile_pos = tile_pos.south_east(),
|
||||
'w' => tile_pos = tile_pos.south_west(),
|
||||
other => bail!("unexpected character in input: `{}`", other),
|
||||
}
|
||||
|
||||
line = &line[2..];
|
||||
}
|
||||
other => bail!("unexpected character in input: `{}`", other),
|
||||
}
|
||||
}
|
||||
|
||||
if black_tiles.contains(&tile_pos) {
|
||||
black_tiles.remove(&tile_pos);
|
||||
} else {
|
||||
black_tiles.insert(tile_pos);
|
||||
}
|
||||
}
|
||||
|
||||
Ok(black_tiles.len())
|
||||
}
|
||||
|
||||
/// Hexagonal tile coordinate representation
|
||||
///
|
||||
/// These use the axial coordinates described here:
|
||||
///
|
||||
/// https://www.redblobgames.com/grids/hexagons/#coordinates-axial
|
||||
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
|
||||
struct HexCoordinates {
|
||||
q: i64,
|
||||
r: i64,
|
||||
}
|
||||
|
||||
impl HexCoordinates {
|
||||
fn east(self) -> Self {
|
||||
Self {
|
||||
q: self.q + 1,
|
||||
r: self.r,
|
||||
}
|
||||
}
|
||||
|
||||
fn west(self) -> Self {
|
||||
Self {
|
||||
q: self.q - 1,
|
||||
r: self.r,
|
||||
}
|
||||
}
|
||||
|
||||
fn north_west(self) -> Self {
|
||||
Self {
|
||||
q: self.q,
|
||||
r: self.r - 1,
|
||||
}
|
||||
}
|
||||
|
||||
fn south_east(self) -> Self {
|
||||
Self {
|
||||
q: self.q,
|
||||
r: self.r + 1,
|
||||
}
|
||||
}
|
||||
|
||||
fn north_east(self) -> Self {
|
||||
self.north_west().east()
|
||||
}
|
||||
|
||||
fn south_west(self) -> Self {
|
||||
self.south_east().west()
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for HexCoordinates {
|
||||
fn default() -> Self {
|
||||
Self { q: 0, r: 0 }
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
const PROVIDED: &str = include_str!("../input/day24_provided.txt");
|
||||
|
||||
#[test]
|
||||
fn part1_provided() {
|
||||
assert_eq!(part1(PROVIDED).unwrap(), 10);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn part1_real() {
|
||||
assert_eq!(part1(INPUT).unwrap(), 528);
|
||||
}
|
||||
}
|
|
@ -22,3 +22,4 @@ pub mod day19;
|
|||
pub mod day21;
|
||||
pub mod day22;
|
||||
pub mod day23;
|
||||
pub mod day24;
|
||||
|
|
|
@ -24,6 +24,7 @@ use aoc2020::day19;
|
|||
use aoc2020::day21;
|
||||
use aoc2020::day22;
|
||||
use aoc2020::day23;
|
||||
use aoc2020::day24;
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let days: &[DayFunc] = &[
|
||||
|
@ -49,6 +50,7 @@ fn main() -> Result<()> {
|
|||
day21::run,
|
||||
day22::run,
|
||||
day23::run,
|
||||
day24::run,
|
||||
];
|
||||
|
||||
aoc::run(days)
|
||||
|
|
Loading…
Reference in a new issue