Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 41019aa10c | |||
| efa49ebf39 | |||
| 819fe8c70f | |||
| 4cc35dc038 | |||
| 2c824a40fe | |||
| 4d98cc0e0f | |||
| a77b4cfe2d | |||
| 397b7950c6 | |||
| bd36d74070 | |||
| 04153d9c77 | |||
| 372373f41b | |||
| 35d79ceb46 | |||
| 89ffe25da6 | |||
| 0788379cfd | |||
| 55cd0e28c6 |
165
README.md
165
README.md
@ -1,62 +1,167 @@
|
||||
```
|
||||
Advent of code 2020
|
||||
Day 1 - Part 1: 1016964
|
||||
generator: 122.086µs,
|
||||
runner: 4.434µs
|
||||
generator: 16.414µs,
|
||||
runner: 474ns
|
||||
|
||||
Day 1 - Part 2: 182588480
|
||||
generator: 99.356µs,
|
||||
runner: 7.318µs
|
||||
generator: 12.988µs,
|
||||
runner: 302ns
|
||||
|
||||
Day 2 - Part 1: 586
|
||||
generator: 233ns,
|
||||
runner: 1.453395ms
|
||||
generator: 180ns,
|
||||
runner: 89.876µs
|
||||
|
||||
Day 2 - Part 2: 352
|
||||
generator: 423ns,
|
||||
runner: 922.764µs
|
||||
generator: 94ns,
|
||||
runner: 76.325µs
|
||||
|
||||
Day 3 - Part 1: 265
|
||||
generator: 964.093µs,
|
||||
runner: 9.734488ms
|
||||
generator: 48.133µs,
|
||||
runner: 54.962µs
|
||||
|
||||
Day 3 - Part 2: 3154761400
|
||||
generator: 938.153µs,
|
||||
runner: 52.66926ms
|
||||
generator: 35.653µs,
|
||||
runner: 283.346µs
|
||||
|
||||
Day 4 - Part 2: 186
|
||||
generator: 697ns,
|
||||
runner: 2.760526ms
|
||||
generator: 109ns,
|
||||
runner: 103.216µs
|
||||
|
||||
Day 5 - Part 1: SeatId(933)
|
||||
generator: 489ns,
|
||||
runner: 776.127µs
|
||||
generator: 89ns,
|
||||
runner: 46.149µs
|
||||
|
||||
Day 5 - Part 2: SeatId(711)
|
||||
generator: 443ns,
|
||||
runner: 800.487µs
|
||||
generator: 89ns,
|
||||
runner: 44.886µs
|
||||
|
||||
Day 6 - Part 1: 6633
|
||||
generator: 336ns,
|
||||
runner: 1.669623ms
|
||||
generator: 109ns,
|
||||
runner: 121.222µs
|
||||
|
||||
Day 6 - Part 2: 3202
|
||||
generator: 448ns,
|
||||
runner: 1.538626ms
|
||||
generator: 136ns,
|
||||
runner: 94.567µs
|
||||
|
||||
Day 7 - Part 1: 208
|
||||
generator: 379ns,
|
||||
runner: 6.340596ms
|
||||
generator: 185ns,
|
||||
runner: 604.146µs
|
||||
|
||||
Day 7 - Part 2: 1664
|
||||
generator: 660ns,
|
||||
runner: 5.171311ms
|
||||
generator: 111ns,
|
||||
runner: 460.961µs
|
||||
|
||||
Day 8 - Part 1: 1723
|
||||
generator: 541ns,
|
||||
runner: 564.443µs
|
||||
generator: 103ns,
|
||||
runner: 36.224µs
|
||||
|
||||
Day 8 - Part 2: 846
|
||||
generator: 412ns,
|
||||
runner: 714.064µs
|
||||
generator: 86ns,
|
||||
runner: 40.938µs
|
||||
|
||||
Day 9 - Part 1: 36845998
|
||||
generator: 96ns,
|
||||
runner: 73.527µs
|
||||
|
||||
Day 9 - Part 2: 4830226
|
||||
generator: 102ns,
|
||||
runner: 29.088µs
|
||||
|
||||
Day 10 - Part 1: 1890
|
||||
generator: 121ns,
|
||||
runner: 7.187µs
|
||||
|
||||
Day 10 - Part 2: 49607173328384
|
||||
generator: 105ns,
|
||||
runner: 6.469µs
|
||||
|
||||
Day 11 - Part 1: 2329
|
||||
generator: 170ns,
|
||||
runner: 9.306401ms
|
||||
|
||||
Day 11 - Part 2: 2138
|
||||
generator: 208ns,
|
||||
runner: 22.394928ms
|
||||
|
||||
Day 12 - Part 1: 1177
|
||||
generator: 132ns,
|
||||
runner: 23.98µs
|
||||
|
||||
Day 12 - Part 2: 46530
|
||||
generator: 88ns,
|
||||
runner: 22.565µs
|
||||
|
||||
Day 13 - Part 1: 1895
|
||||
generator: 90ns,
|
||||
runner: 2.108µs
|
||||
|
||||
Day 14 - Part 1: 13865835758282
|
||||
generator: 104ns,
|
||||
runner: 85.834µs
|
||||
|
||||
Day 14 - Part 2: 4195339838136
|
||||
generator: 94ns,
|
||||
runner: 9.646046ms
|
||||
|
||||
Day 15 - Part 1: 273
|
||||
generator: 146ns,
|
||||
runner: 51.22µs
|
||||
|
||||
Day 15 - Part 2: 47205
|
||||
generator: 109ns,
|
||||
runner: 2.274252927s
|
||||
|
||||
Day 16 - Part 1: 25984
|
||||
generator: 301ns,
|
||||
runner: 175.013µs
|
||||
|
||||
Day 16 - Part 2: 1265347500049
|
||||
generator: 125ns,
|
||||
runner: 353.876µs
|
||||
|
||||
Day 16 - Part 2 - avx2: 1265347500049
|
||||
generator: 152ns,
|
||||
runner: 145.475µs
|
||||
|
||||
Day 17 - Part 1: 1812
|
||||
generator: 128ns,
|
||||
runner: 278.162845ms
|
||||
|
||||
Day 18 - Part 1: 800602729153
|
||||
generator: 199ns,
|
||||
runner: 163.467µs
|
||||
|
||||
Day 18 - Part 2: 92173009047076
|
||||
generator: 153ns,
|
||||
runner: 180.596µs
|
||||
|
||||
Day 19 - Part 1: 109
|
||||
generator: 112ns,
|
||||
runner: 3.277745ms
|
||||
|
||||
Day 19 - Part 2: 150
|
||||
generator: 102ns,
|
||||
runner: 7.222896ms
|
||||
|
||||
Day 20 - Part 1: 22878471088273
|
||||
generator: 121ns,
|
||||
runner: 124.756µs
|
||||
|
||||
Day 21 - Part 1: 2262
|
||||
generator: 111ns,
|
||||
runner: 368.681µs
|
||||
|
||||
Day 21 - Part 2: cxsvdm,glf,rsbxb,xbnmzr,txdmlzd,vlblq,mtnh,mptbpz
|
||||
generator: 104ns,
|
||||
runner: 329.907µs
|
||||
|
||||
Day 22 - Part 1: 33631
|
||||
generator: 105ns,
|
||||
runner: 7.331µs
|
||||
|
||||
Day 22 - Part 2: 33469
|
||||
generator: 94ns,
|
||||
runner: 1.13821236s
|
||||
|
||||
```
|
||||
|
||||
@ -1 +0,0 @@
|
||||
459672813
|
||||
@ -1,496 +0,0 @@
|
||||
enesenwwwsenewswsewenwwnwwnwnwswse
|
||||
swneswseesweswneswwwwseewnewswsw
|
||||
neneenenenenwneseneesenewenenwnenenesw
|
||||
weeswnenenwneneeesweneswenwneene
|
||||
nwnwnenwnwwnwnwnwnwwsewnwswnwwnwnwnw
|
||||
nwwwnwnwnenenwewnwseewnwswnwwnww
|
||||
senwweneewewswweswsenwnesenwwnwswnw
|
||||
nwnwnenenenenwnesenenenwneswnwnweeswwsene
|
||||
wswnwswneneswswswswswnesweseswwswnwswsw
|
||||
neeeeeweseesesweeneweneesw
|
||||
wwenewwwwwwnwnwwwwwwwwse
|
||||
swneswswseseswswswsw
|
||||
seswswsewseesesese
|
||||
nenwneneneewseneneneenenenenenesenenew
|
||||
swswwwnewwsewwwswwwswswwnesew
|
||||
wwswwwwwwwwwwwswewwwwe
|
||||
senewnwwnwswnwswnwewnenwenwewsenwnwse
|
||||
wnwnwenwwnwnwwnewnwswsenwnwnwnwwne
|
||||
nenwneswnwnwswnwnwesewwnwnwnwsenwnene
|
||||
wsewneeseneseseseswnesesenwswenwswnwe
|
||||
nesewnwwwswnweneenwswwesenesw
|
||||
swsesenwswsesesewswswneseseeswnesesesewsw
|
||||
neneswswwswswwswseswswewwswswswsew
|
||||
eeeneeneneneneesweenewneneeee
|
||||
seeenesesweseeeewwneeseeseee
|
||||
nweeweeneeswenewe
|
||||
seswwnwseeswseseswswe
|
||||
wneneeswnesenwseneeneneneenwneneneenwne
|
||||
newnenesenenenenenewneswnenenenenenenenese
|
||||
wswswswswwswwwwweswnwswsewswswsw
|
||||
eeeeeenesenwewseeneeneneweee
|
||||
sewnwwnwnwwwnwnwnwnwswwwewnwww
|
||||
sewesenwswwneswnwnwnwsweseseeswwse
|
||||
nwwewnwweswswwwwewnwnwnwwnwwswe
|
||||
swwwswnwswswenwneswswseswsweswseswsene
|
||||
eneeenwswseseeeeeesenwenwwsweee
|
||||
swseenwseesewnwnewnwneeeswswesenee
|
||||
swwsesenwnwnwwwwnewenwnwewwwwsw
|
||||
seeeeeeeeswnweeenwnwnewswesw
|
||||
seenwswnenenwnewnwnwnwnwe
|
||||
esenenweeswseeeseeweseseeeee
|
||||
swswswswseswswswswnenw
|
||||
neneseswsenenewneenenewwnenenenenenenene
|
||||
wnewwenweswswwwswseswswwwnesene
|
||||
seneneneweenwnwseeeweeseseeeene
|
||||
neenwsweneneeeswwnwwneeenewnene
|
||||
seseneswwneswseswwsesenwseseseswsesese
|
||||
wweeeeeeswsenweeneeee
|
||||
newnenenwneseneneeneeneneseneneeneene
|
||||
wewnwnwwwwwwsenewnwwnwnwwwse
|
||||
weseeseseswnwsewseneneeeesewwe
|
||||
swswswswswswswswswswswwneswswwwswswe
|
||||
swsenwneeseswseswswswswseseneseswswswsw
|
||||
seswnenwwswswswneswsewwnewseswswwwsw
|
||||
swswswneswswseswnwswseswseswswseneseswsw
|
||||
wwwwnewesesewswwwnewwwne
|
||||
enweeneseneeeeswnwesw
|
||||
eesesenwseseeseseesesese
|
||||
nwswseenesewwseesenee
|
||||
wwswswswwswswwneesw
|
||||
newwseswwnewswwwwswnwewnewwsww
|
||||
nesenenenewenesenenenenwnwswnenwnwnenene
|
||||
swnwswswneswswneswswswswseswswseswsweswwsw
|
||||
swswswswswswneseswswseswnwswswswsweswsw
|
||||
nwwwwswwwsewwwwewnwewswwww
|
||||
neneeneeewneeneeeneenene
|
||||
swnwnwnwneswwwseeenewnewswsenwwnww
|
||||
nenenenwnenwneswnenwnenenenenene
|
||||
nwweenwesweeeeeeseeeeewnenese
|
||||
weeeneeseeeseeeseeeewe
|
||||
wwwwwnwesewwwswewwwwenww
|
||||
seneseseseseseneswsesesesewsewsesesese
|
||||
eenwneneseeeeeesweenweeeenee
|
||||
neseneseseseseseeseswseeeeseewee
|
||||
nwswnweeeeseeseneeneneswswneneee
|
||||
sesesewseseswesesesewseeneeseesese
|
||||
seswnewwswewnwswneneswwnwnwnew
|
||||
wneseneeeewsesewneneneenenwswnwne
|
||||
wnwnenwnwnwnwsenenwnesenwnwnwnwnwnwnwnwwnw
|
||||
wwnewnwwswweswewswseeewenwsw
|
||||
eneeneseeneneneewneweeeneeeneew
|
||||
nwwnwnwwnwnwenenwnwnwenwnenwnenwnenw
|
||||
nwsenwnwenwnwswsenwsenwnwnwnwnwnwswenwnw
|
||||
eeseseeeeeseseeeneesenwseeswe
|
||||
ewenewneeneswewneseneswsewswwese
|
||||
nwwwwswwswswwse
|
||||
newnwnwnwwwwnwnwswsewewnwwwwnwnw
|
||||
seswswnwwseseseswseesw
|
||||
sewseweswwwwwswwwwwswwwwnwne
|
||||
senenenenwnwnwnwnwnwnwnwnw
|
||||
swswswwwwswswwnwwwswwesewwww
|
||||
seeneseseneseesesesewsesesesesenwseswsw
|
||||
wnenwnwsewwwnwnwwwwwsewwnwnew
|
||||
swswswswswneswseswswswseseseswswnwsesese
|
||||
neneneneneeneenenesenenwnenewnesenenee
|
||||
wseseswseneeseswneseswseswswwwseswne
|
||||
nenenenenenenwnenenenesenesewswneneenwe
|
||||
seeseseseeseneesesenweeewseewsese
|
||||
neeewneneneneseneenenenenenenesenwne
|
||||
nenewnweneweseenwnwsesewnwswnwnwnw
|
||||
sewnwnesenenwneswwnenwnwnwsenweneswe
|
||||
senwnwnenwswnwnwnwnenwenenwnwnenenesenw
|
||||
wnwwwwwsewnwwwewwwweseww
|
||||
swnwnewnwnwsenwsenwnwnwnenwneswwwnwenenw
|
||||
wnwseswnewwweewneneeseseesenww
|
||||
wseseseseeseseseseseesesesenwswswswnw
|
||||
neneneneneneneseneswnenenwneneneneneenewne
|
||||
neswswswswswswsesesesesewsewneswsenesw
|
||||
nenwneswnwweseeenwnesweneeneeese
|
||||
seesesesesesweeseseseesweenweseenwse
|
||||
seeswseseseswseseseswswswnenwswswseswsw
|
||||
swneswswseswswswwswswnwswseswswswswseneswsw
|
||||
nwseseesesewneeseseeeeeseewenesese
|
||||
nenenenewneneswneswneneswswneneneneene
|
||||
nwswnwnenwnwnwnwswnewnwnwnwenwnwnwnww
|
||||
nwwnwnwnwnenwnwnenwsenenwnenwnwnwnwnw
|
||||
senenenwnwewwwneeneewnenwsew
|
||||
nenenenwneneneneswneneneeswenenenwnenw
|
||||
wwneweewseswseseneneeseeeseese
|
||||
neneneeswnenenewneneneneneneswenenene
|
||||
eeeeewseeeneneneeeeeweenwsw
|
||||
nwenenwnwswwsenwnwswneswnwnwnenwenenwne
|
||||
eswwswneswswswswswnwewswswwswswwswswsw
|
||||
enwwwwnwnwnwwewwnwnwnwnwseeww
|
||||
seseseneeseseseseneseseewwseesesesese
|
||||
nenenweneswnewenw
|
||||
nenenenwneneneseswnwnwsenwenwewnenenwnw
|
||||
nenenenwnwnwenwnwswnwnwwnwnwnwnwnwsenw
|
||||
neeneneneeneneneneneneenesw
|
||||
neeeneeeswnwnenwsewswswnenwsenwnee
|
||||
wenwwwswenewwwsewswswnewswwew
|
||||
seseeneeseseseneseseesesewsesewsesesese
|
||||
swewnwwsenwnwwseewwnwwwnewwnw
|
||||
wesesweeneeenewnwsweenenwneeesw
|
||||
nwnwswnwnwnwnwnwenenwnwswnwnwnwnwnwenenw
|
||||
nwsenwwswnenwneeesenewenwwwnw
|
||||
ewseeeeenweseseseeeewseeseese
|
||||
wnwnwsewwnwneswwnwwnwnwwnwwwnwnenw
|
||||
swswsenwwswwenenenewseswswewswnesw
|
||||
wnwswsesesesweeswseswswswswswseswswsw
|
||||
eneeswnwwnwnwsweenwenwnwnewnwswswnwne
|
||||
seseswswseseswseswsenesesewsenenwsesww
|
||||
eeeneswnwnwnwneneseneseneenewnenwsee
|
||||
enweseesweswneeweseenwneeew
|
||||
newneneneneeneneswsenenewnenenene
|
||||
eneswwneneenwnenesenewwnenenesenene
|
||||
swswswswswsesenwswswswswsw
|
||||
eeeneewewneeeee
|
||||
swswsesenwswsenwswseswsweswseswnwseswswenw
|
||||
sweneseswswesenenenwnwwnwnwneswe
|
||||
wnwnwnwwwwsweneswnwnwnwewwnwww
|
||||
seseswswswsesenwwseeseswswswswweese
|
||||
seseeseseseseesesesenwnenwsenwsesesesew
|
||||
wnwnwswnwwwwwwsewwwnenwwwwe
|
||||
wnwwsenwneewswnwsenwnenwwnwesenwnewsw
|
||||
swnenwnenenwnwwnwnesenenwnwnenwnenenenwnw
|
||||
wwewwwwnwswwwnewwwswwwwnw
|
||||
neneeeweesesenweneneswneeeewne
|
||||
swswswseneneswwseseseneseseseswswswswswsw
|
||||
nwnwnenwswwnwwwwnwwwwsew
|
||||
swswswswseswsesesenwswsewseseswswesesw
|
||||
nenwswnwnenwswnenwnwnenwnwnwsenwnwneenw
|
||||
wseseswswswneseswseseswswsenwswswne
|
||||
swnesesewseneseswswnwswswswswnwswseswswswsw
|
||||
wnwnwnwnenwsenwneenwswnwnwnwenwsenwswnw
|
||||
enenenewnenenwnenenenwnenenenenw
|
||||
enenwnenwsewwwsweenenewnwnenwene
|
||||
swwswsewnewswneswswwwswswwswwswwsw
|
||||
neneswseeneeswewenwwswswweesese
|
||||
swnwseswsenwsenweewenwsweeneeese
|
||||
nwenwnwnwnwswnwnenwnwnwnwnwnwnwnwwsenw
|
||||
seseseseeseseseeeeewesenesesewe
|
||||
eswsenwnwneswwswwswnwwwwseeswsenwe
|
||||
enenewnesenewnwnwnwswnwnwnenesenenwnenw
|
||||
wneneneeneeeeweenewnenesweesene
|
||||
enewnweneneeneeeswneneeeeenene
|
||||
nwswsesenwnenwnwwnwnweswswnwnwneeew
|
||||
eseeewneeneeeeeneeeeeseewene
|
||||
sewnewwwwwwwsewwwwwwwnwwe
|
||||
newnenesenweneneneweneenene
|
||||
swseswswswswswswswswewswswswswswnwneswswsw
|
||||
eseneneseseeseseeeeseeeeeswsewse
|
||||
enwneenenewneeneneneswnenenenenenene
|
||||
nenenwnenenwseneneenwnwnenwnweswnwnww
|
||||
nwnwenwnwsenwnwnwnwnwwwse
|
||||
nweswswwswenenweeeseseseeeeeee
|
||||
nwnenwswnwwnwenwsewwnwneswnwnwnwnwsee
|
||||
seeseeseseneewswweseseswswwwswswsw
|
||||
nwnwnesenwenwnwnwnwnwnwwnwneswnwswwnwnw
|
||||
seseseseswseswesesesesesesenesewswsenw
|
||||
swswwswseseseseswsewseseneseseswneswswsw
|
||||
nwnwnwnenwswnwnwnenesenenwnwnenwnwnwnenw
|
||||
swnewwnwneenwnwenwsenwnwnwsewnwenw
|
||||
eeenwwweeeewseneeswesenese
|
||||
swenewneseneswneenwnesenenenwnenewene
|
||||
nwnenwwwwwnewwwwwwwsesenwwww
|
||||
seseswneseseseeenewwsese
|
||||
enwneeeswenewneeeeneeseneeee
|
||||
seseeseneseeeeeeswwnenwseswsesese
|
||||
nwnesesenenenwnwnenwnwnenenwnewnwnwnenw
|
||||
wwswnwnwewewswneseeswswswseneswsw
|
||||
nwsenwneneneneneneeseewnenenenenesenwse
|
||||
nesewswswneneswneswseswswnewswswsenese
|
||||
swswwsesweswnwseseswseseswseseseseswsw
|
||||
senenwswenwnwnwwnenwsenwnwnwnenwewnwwnw
|
||||
nenenenwnwneswswneswnenenenenenenenenene
|
||||
enweneswneneneeswneneeewneenenee
|
||||
nwnwswnwwnwseesenenwwswwnewwsenwnwnw
|
||||
neswseseswneeswneneswswneswenwwswwwe
|
||||
swwneeneeneswwewnwneseeenwnenwnewne
|
||||
wswwwseenwnewneswwnwwwnwseew
|
||||
seewwnenenwneswwnenwneseneenenenene
|
||||
swwsenwswsweseesenwwwswswwnewnesenew
|
||||
neswswswnenesenenenw
|
||||
nwwsewwwnwwnewnwwnenwwseswnenwswwnw
|
||||
nenwneseeewneeeeseneesweneenwsee
|
||||
seswseswseswnwnwswswseswsweseswswswswse
|
||||
swwswneswswswswswswneswsweswswswswwswsesw
|
||||
senesewseseseeewseweseseseeseesese
|
||||
swnesenenenwneneneswnwnwne
|
||||
wsesewwenenwsesewneneseseseswsesese
|
||||
newseswwwswwwnwswweswwewswwww
|
||||
nweneeneneeswnwwenenesweneseneene
|
||||
esweneenweeeeseweeeneeewew
|
||||
neswnweswswnenweseswswnesewswsenwsese
|
||||
nwnwnwnwnwwenwwwnwnw
|
||||
swswseseswswswswswswswswswsweswneswswnwsw
|
||||
neneswnenwnenenenenenwnenwne
|
||||
seeseseneseseswseseseseswsesesenwsesesese
|
||||
nwnenwnwseenwnewewswsewnwwswswnew
|
||||
wseesesweseseeneeenwseeeeeenee
|
||||
swwwsewesewnewnweenwswswwwwwsw
|
||||
eeneseseeseseseseswseewse
|
||||
eeeneseeeeeeswseeenewseeee
|
||||
swseswswsewenenwnwwnweswne
|
||||
ewwnenwswnwnenwnwnwnenenwnwenenenwnw
|
||||
neswswswswswnwswwswsewsw
|
||||
seseeseswswewsewsenwseseneewsewneee
|
||||
seswseswenwwnwswwswewnweseswnwnw
|
||||
sesesenesesesewswseseswneseswsesesesesese
|
||||
neneneneneseenenewneeneneswwnesenenew
|
||||
nweeewneenwswneneswnewne
|
||||
nwwewwswwwseswwswwne
|
||||
nwnenwnwnwnwsewnwnwwnwewnwnwnwnwwnwnw
|
||||
seneneneneenenwnewneneneswneenenwswnenese
|
||||
swseswnwseswswseseseswnwnewseswswswswswsesw
|
||||
nwnenenwnwnenwnenwnwseswneneenwnesenwne
|
||||
nenenesweeenenenenewne
|
||||
eewneeeweeeeseeeneneewene
|
||||
swsweswswswswswswswswneswnwseswnwwseswsw
|
||||
wwswwwnwnwewseweswnwnesenwwwew
|
||||
seeneenenenesenenesweweenenenenwnene
|
||||
newewseewnwwnwwwsewsenewswswe
|
||||
sweeseweseseeeseeenesesesenwese
|
||||
neswewwwseswwwswsww
|
||||
wewnwnwnwnwnwwwnwwswesenwnwenwsee
|
||||
seswsewsewseswswenenewseenwnwnwswse
|
||||
swswseswseswseswswswnwswswnwsenesesw
|
||||
nwnwsenenenwsewnenenenwsenwnesesenwnwnwnw
|
||||
swnenwwwwwseswwneewswswwwnesene
|
||||
seseseswswsesenesesesesesw
|
||||
eneenwneenenenewswneswnesweee
|
||||
nwnwneswnenenwsenenenenenenenwnenewnene
|
||||
seswnewswswswnwswsenwwsweswswnwswesee
|
||||
swswswswswwswswswewswneswswseswswswneswnw
|
||||
swswswswswseseswsenwseneesesesesewwsese
|
||||
seneeesweeeeeeweeeee
|
||||
senweseeeenweeeenwenwsweeswese
|
||||
swswneswseewswswnwswswwsenweswswswesw
|
||||
ewneeeeeneweeeeeeweseesesese
|
||||
nwseswseneeseeseesweeweseesesee
|
||||
neeneswnenenewnwnenwnenenenwswneenewne
|
||||
eswwswswnwnwseeenwweswnwnenwswswse
|
||||
wwswnewwswnwwwswwneneeswwseswne
|
||||
neneneneseneneswneneeneeewne
|
||||
wwwnwwnewsenweseewwwewwnew
|
||||
neswwsweewneswsenewsesewwsenwsesese
|
||||
seswwsweenwweseneseneseneeenwwe
|
||||
senwsesweseseswnwseeseswsenesesenenewsw
|
||||
swseswswswswnenwswswwswswswswswwswenesw
|
||||
nesenwnwnwnenwnwnwnenwnewnwnwnwnwnesenw
|
||||
seswswswwswswwswswswswneswswenewnwswsw
|
||||
nwnwwnwnwnwnenwenwwwenwswwswnwnwnwnww
|
||||
neseenesenwnwsenwwneesewnewwswenwnenw
|
||||
wnenwnwnenenenwnenesenwnenenwnenwnenwe
|
||||
nwnwnwnwnenwnwnesenwnenwnwnenewnwnenwswe
|
||||
enwswseeseseseewseeswnweeseeeee
|
||||
eeeeeesenwseseeee
|
||||
swsesweweswwswswswswnwnwwswswsw
|
||||
neseneneeeenwweneenenenene
|
||||
swwsenwnenenwnesesewneeswwswseswnwswswse
|
||||
seeenweesesweseeeweeeseeswnw
|
||||
sewsesesesesenesweesenwswsesw
|
||||
nwnenwwnwnwswnwnenwnwwnwnenwnwnwnwsenwe
|
||||
neenenwneeneswnenwneswneeneeneeneene
|
||||
seseeeweseseeeeseese
|
||||
nenwnenwnenenenenwswneneneenwnenenenw
|
||||
wwwwswswwsweswnewwnewsewwwne
|
||||
wwnenwnwsewnwnenwsenwnwnwnwnwwwnwnwsw
|
||||
seseseswswsesenwwsenesesesesesesene
|
||||
nwseswsesenwwswnenesenenwsw
|
||||
swswsweswswswseweswnwswswneseswswswnwsw
|
||||
enweesweneeneeneneeeeeneeewe
|
||||
seswseseseseswsesewseseseswswsenwesese
|
||||
seswsesesesenwnewsesesesesesesesesesenwsese
|
||||
swswswnwswswswseswnweswswswsw
|
||||
newnwwswwneeneneseeneswnenenenwnenwnw
|
||||
swwswnwwswswnwswwewnwsweswswswseesw
|
||||
sweswnwswenwwswswwwwsweswswswswswsw
|
||||
nenenwnwsenesenenwnwnwnenenenenenwnwswnwne
|
||||
wnwseswwewwnewwswnwnwwswewsesww
|
||||
seseneseseswsesewswsesesesene
|
||||
wwnwwwewwwewwwnwwwwwnwsww
|
||||
wneeneesenwseeeeeweeesweswene
|
||||
senesenwsweseeseesewseseenesewwsee
|
||||
nwnwnwsenwnwswesenwenwnwnwnwnwnwnwswnwnwnw
|
||||
eeweeeeeesweneeeseeneeneee
|
||||
wwsenweswsewswneswswnweneswneenww
|
||||
eeneneneeneeeeenewswneneeseenee
|
||||
swwseseneswseseweseseswneesenesesese
|
||||
eeeeneneneneneweeee
|
||||
swsenesewseswsenwnenwsesweswsenwswswswnw
|
||||
nwnwswsweswnenwnwnwnenenwnwnwnwnwsenenw
|
||||
swsesweseseseweseeseswnwsesesenwseswsesw
|
||||
eneeseneswswsweeweewnewne
|
||||
neneeseenenenewenenenewnenenwswesw
|
||||
sweeswwewsweewnwenwnwnesesenwesw
|
||||
swswswswswswneswswswsw
|
||||
eseseeneeeseewenwweeeeswsesese
|
||||
swswwnwswnwwwswewweswwwwswswwe
|
||||
wwewswwnwwwwwswwwwwweww
|
||||
enenwnwwnwwwwsesese
|
||||
wwwwnwswwwswswwwewwwew
|
||||
wnenwneeswneneneseneewsw
|
||||
sweswnenenwewsesenwsenw
|
||||
wsewwenwnwnwwwnwwwnwnwwwnwww
|
||||
eseeeeeeseeeseneeneeewwwee
|
||||
nwwnwewsewnenenwwnwswwnwwwswnwse
|
||||
wwswwwwweswwswwswswewwwneww
|
||||
swnewnwnwnewseswewnesweswswesesw
|
||||
nwnwnwswnwnenwnwnwnwnwnwewnwenwnwnwnw
|
||||
swseweswnesewneesenwnesenwwseesew
|
||||
wenweseesenwseswsesweswnenwneenwse
|
||||
seeneneneeeenweneene
|
||||
nwnwnenwneenwneswnenwnwnwnwswnwnwnwnwnw
|
||||
esesesweswneneneswnwnwnenwneneseww
|
||||
nwnwwenwnwnenwnenweswwenwnwnwnwnenesw
|
||||
senewsewswswseseneswseseseseswsesesese
|
||||
nwnwnwsesenenwneneswnwnwewnesewnenese
|
||||
neesesewseseneseseseeseeseseesewsese
|
||||
swnewneswwswswwwnewsesesenwswswnwsew
|
||||
neseseswswwseseeswsesesesesesewseswse
|
||||
swsweswseswswneseeswswswnwnwswwwswneswnw
|
||||
seeeeseswsesesesesenwsesesee
|
||||
nenenwnwnwnwnwswsenwnwnwne
|
||||
eswsweswswsweswseswswwnewswwswswswsw
|
||||
seneswneswswseswswseswswseswswsenenwswswsw
|
||||
eswswseswnwnwsesewseseswseneeswswnesww
|
||||
seseseesesenwsesesenesewseseseseseesesew
|
||||
swswswswnweswswnewswswswswswwneswwswsw
|
||||
neeswnenenesweeneneeneneeneenenewne
|
||||
neswwswnwnwnwwseseneneewwsesewsew
|
||||
eseseswwwseenesenesesenenwwnwseseswee
|
||||
swswswseseseseswwswneeswswweswnwsesene
|
||||
neneneneenesenwwweneswnwswwnwswnenwne
|
||||
neeeneeeseeneswnenenenenwewnee
|
||||
nwwnwewsenwnwnwenwesenwneewwnwsw
|
||||
seswewnwwnwwswnwsenwnwswseenesweene
|
||||
seswseneseswswseseseweesewwswwnesw
|
||||
neseeneneneswneeneenenenewneneneenw
|
||||
nwnwsewnwsenesenwwnewenw
|
||||
senwneneswewnenenesenenenwewwnene
|
||||
nenwenwwswwwwwwwwwewwwwse
|
||||
sesenwsesesenwseesesenwnwswswsenewese
|
||||
eeenenenwnwsweeeeeeeeeeneneswe
|
||||
swwwseswwseswswwswwneswswwwnwsww
|
||||
nwnwwnwwnwnesewnenwnwwwwnenwwwesese
|
||||
seswswnwswseseseswseswneseseseewswsese
|
||||
seswswneewneneeswswnwswwwswswnweswse
|
||||
nwnwnwnwwnwsenwnewnwnwnwneenenenwnwnesw
|
||||
nenwnwnwnwwnwesenwnwnwnwnwsewwnw
|
||||
neswwnesenwneswwenwnwsenwnweeswsese
|
||||
wwnwnwsewnenwwswwnwwwnwwnwnwwew
|
||||
sewswseseneswseseswswneswseneseseswsesw
|
||||
swwwnwwwswwswwwwwsewwwnwesww
|
||||
seneswswwswwnwenwnwwswseeswwwwwwsw
|
||||
neneswneneswnenesenenenewnenwneneneenw
|
||||
nwswseseneseseswswswnewswseseseweswnesenw
|
||||
nenenenenwneseneeneneneneneeswnenenwnee
|
||||
swseneeeeeeeweneswneweeswwnw
|
||||
nenenwneeneswneseenewnwswwnwenenenw
|
||||
senenwnwwnwsewsewnesenenwwnewsewww
|
||||
swweeenenenenewseeeeewsenwnee
|
||||
nwneeseseseseseseseseseswse
|
||||
eeeeweeeeweeneeesweneee
|
||||
swswseseesesesesesewseseseseneswsewnesesw
|
||||
eeenwseeeswnweeeeeeeeeeeesw
|
||||
swswswswsweewswswswwsweswseswswnwnww
|
||||
sesewsenwseeseeseeeenwnweswnesesesw
|
||||
seseesesesesewseseeswseeseneesesenw
|
||||
neeenwnenwsweneneseeenee
|
||||
seenewesenwseseeseseseseee
|
||||
nwswswsweswswwwwwswswswwswsw
|
||||
wwwwnewwswnewwwnewwseswseww
|
||||
eeseseseseseseseseesesesesenwenw
|
||||
wwewwwwwwwnwwwww
|
||||
swswswwswnewswneswswseswwswswwwswsw
|
||||
wswneswswswwwwneswwseswswwswwswswsesw
|
||||
nwnenwnenwnenenenewneneneseenwsenwswnwne
|
||||
wnweswenwneeswswweseneseneeeenw
|
||||
wnwneneneenenwnenenenene
|
||||
newswwswweeswseseswswwseneswwnew
|
||||
wsweneeseseseseseseseeseeseseeswene
|
||||
sesenwseswseseseswseewnwseseswsese
|
||||
seswnwnwneesenwseneewswnenwee
|
||||
nwnwnwnwsenwnwnesewwnenenenenenwnenwnwnenw
|
||||
senewesweeneswewsenwe
|
||||
sewewswswwwwswnwwwnewwwwwswsww
|
||||
eeneeeeeneeseneeeneneneeswnwnw
|
||||
swseswwsewswseseswswseneswswswseseswneswsw
|
||||
nenenenwneneseneneneneneneeeeneneswnwne
|
||||
wnwsenwnwnwwsewnwnwnwnwnwewswnenenw
|
||||
nweeeeeneesweneeeeneeneeswesw
|
||||
sesewwnewwwwwnwwwnewwseeww
|
||||
nwswswnwswneswwwnwswswsweeswnweeneee
|
||||
wwwwwwwwswwwwwsewwnenewww
|
||||
nenwsenwseeswneswseseswswenwswswseswsww
|
||||
swswwswnwswwswswwswswwswwwewwnwew
|
||||
wnwnwnwnewseswwewnwwwnwnwwnwsew
|
||||
weseeseseseenenewseesewswsesesese
|
||||
nenenenwnwneswnwneneseneneenwnenwnenew
|
||||
nwseeeeswnewsewseeeeesesewesee
|
||||
wwnwwewwwwnwenwnwwwwswnwwww
|
||||
nwnwnwswnwnwnwenwnwnwnwnwnwnenwnwnwnw
|
||||
wseswweseseneswnwneseswsewswswseese
|
||||
neewseeesweeneenee
|
||||
enwseswswswseseswswswswwswswsenwnwe
|
||||
sewwnwwewwsewwwwwenwsewwwne
|
||||
wewswswwnwnenwswneeswnwnesesenwesw
|
||||
swswnenwneswswswswswswswswwswseneswswswse
|
||||
wswwswswwswneweswewnwswswwsewwe
|
||||
wnwwnwwsewswwwwwsenwwwswnenwswnee
|
||||
seseeswenenesesewsewswneneseseesenwse
|
||||
sesesesesesesenweneseseseseneswsewswsese
|
||||
wnwnenenesweneeweneseeeseeene
|
||||
sewnwwnwnwwnwwwwnwnwwsenwneww
|
||||
wwswswwnewneseswnewwsenewswwwsew
|
||||
nenesewneswnwenwwnesw
|
||||
nweeeeeeseeesenwneswneeweene
|
||||
nwnwwnwnwnwwnwnwwnwnwwwwew
|
||||
seseseseseseseseswsenwseswsesesenesesese
|
||||
seeswnwswnwnwseswsenesesweswse
|
||||
seseeseseseseeseseenwsewseseswnenesewse
|
||||
wweswnwwwnwsewwnwnwwnewnwwnwnwenw
|
||||
neneswswswswswswwswneeswwswseseswswswse
|
||||
sewnwseseswnwswseswsesenwseswseneseseswe
|
||||
seseseseseeneseewseswneseeseseseseese
|
||||
ewswseswnewswwwswwwswewwnew
|
||||
swwewwswnesenesenwwnewnw
|
||||
seseneseswsesenwseseswwnesesesewse
|
||||
newswwswwswswswwswwnewswswswwsesw
|
||||
wseneeeeswnwneenweneneweeeeeee
|
||||
wswsewswswneswsewneneneswwwwswwsw
|
||||
swwneeneswswwwswwwsenwswwneswnene
|
||||
seeeeneeeeeswenweeeseseswsese
|
||||
sesweeenwnewnwnwneeenwswsewsenwsw
|
||||
seswnwseeseewnwswneenwnwseswneesee
|
||||
neswnwwnwnwswnwnwnwnwnwnwenwnwnwnwnwnw
|
||||
swseswswswseswswneswsw
|
||||
neeswneneeswsewnwnwneswewnenwenee
|
||||
swswseswswseswseswnwseswswweswswswneswswse
|
||||
seseewseeseeeswseseseneseeewee
|
||||
eeeeeseeweswwseene
|
||||
swswswswswswswswswswseewneswswswswswsw
|
||||
senwwwnewseesesenwnwenwwswnwnenwnwnw
|
||||
eeeseswneesweeeeenweeeenee
|
||||
newswnesweneneweneneneene
|
||||
nesenwnenenwnwswseswenwwwwsww
|
||||
senewswswwseswswnwwsw
|
||||
newwwwsewswwwwswnwsewswsw
|
||||
nwnwwnwnwsenwnwwnwnwnwnwnenwnwwwenw
|
||||
swsenwnesesesewswswswswswswswswseswswsw
|
||||
seneseseswwesewseseneseseeese
|
||||
wwwsewwwwnwnwswwwwwwwewwsw
|
||||
neewneeswenenenenenenenenenenewnenew
|
||||
nwnenwenwnwnwnwwnwnwnwnenewnwneenene
|
||||
enwwwwwwwwwsenwnwwewww
|
||||
senwnwnwnwnwenenwwswneenesweewswswne
|
||||
nesesesesewsewnesenwseswseswsenwsesesw
|
||||
seseswswswseseenwseseneswnwnw
|
||||
seseseseseseeeseeweeseseswnwsenesenw
|
||||
nenewwswseseswseenwenesenwwwesenwswse
|
||||
nwnwnwnwswwnweswenwnwnwnwnwnwnwenwswnw
|
||||
wwwenwsesewnwnwnenwsenewsenwenwwse
|
||||
swsewswnwwwswewnw
|
||||
enwnwsenwnwenwnenwnwnwnwnwwswnwnwwew
|
||||
@ -1,2 +0,0 @@
|
||||
17773298
|
||||
15530095
|
||||
86
src/day23.rs
86
src/day23.rs
@ -1,86 +0,0 @@
|
||||
use aoc_runner_derive::aoc;
|
||||
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
|
||||
struct Cup(u32);
|
||||
impl Cup {
|
||||
fn as_idx(self) -> usize {
|
||||
self.0 as usize - 1
|
||||
}
|
||||
|
||||
fn from_idx(idx: usize) -> Self {
|
||||
Cup(idx as u32 + 1)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Cups {
|
||||
current: Cup,
|
||||
cups: Box<[Cup]>,
|
||||
}
|
||||
|
||||
impl Cups {
|
||||
fn parse(input: &[u8], total_len: usize) -> Option<Self> {
|
||||
let mut cups = vec![Cup(0); total_len];
|
||||
let input_iter = input.iter().map(|x| (x - b'0') as u32).chain(input.len() as u32 + 1 ..= total_len as u32);
|
||||
for (curr, next) in input_iter.clone().zip(input_iter.cycle().skip(1)) {
|
||||
cups[curr as usize - 1] = Cup(next as u32);
|
||||
}
|
||||
|
||||
Some(Cups {
|
||||
current: Cup((input[0] - b'0') as u32),
|
||||
cups: cups.into_boxed_slice(),
|
||||
})
|
||||
}
|
||||
|
||||
fn do_move(&mut self) {
|
||||
let taken_1 = self.next_cup(self.current);
|
||||
let taken_2 = self.next_cup(taken_1);
|
||||
let taken_3 = self.next_cup(taken_2);
|
||||
|
||||
let mut dest_cup =
|
||||
Cup::from_idx((self.current.as_idx() + self.cups.len() - 1) % self.cups.len());
|
||||
Cup(((self.current.0 as usize - 1 + self.cups.len() - 1) % self.cups.len()) as u32 + 1);
|
||||
while dest_cup == taken_1 || dest_cup == taken_2 || dest_cup == taken_3 {
|
||||
dest_cup = Cup::from_idx((dest_cup.as_idx() + self.cups.len() - 1) % self.cups.len());
|
||||
}
|
||||
self.cups[self.current.as_idx()] = self.next_cup(taken_3);
|
||||
self.cups[taken_3.as_idx()] = self.next_cup(dest_cup);
|
||||
self.cups[dest_cup.as_idx()] = taken_1;
|
||||
self.current = self.next_cup(self.current);
|
||||
}
|
||||
|
||||
fn next_cup(&self, cup: Cup) -> Cup {
|
||||
self.cups[cup.as_idx()]
|
||||
}
|
||||
|
||||
fn iter(&self, starting_cup: Cup) -> impl Iterator<Item = Cup> + '_ {
|
||||
std::iter::successors(Some(starting_cup), move |&prev_cup| {
|
||||
Some(self.next_cup(prev_cup))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[aoc(day23, part1)]
|
||||
fn solve_d23_p1(input: &[u8]) -> usize {
|
||||
let mut cups = Cups::parse(input, input.len()).unwrap();
|
||||
for _ in 0..100 {
|
||||
cups.do_move();
|
||||
}
|
||||
cups.iter(Cup(1))
|
||||
.skip(1)
|
||||
.take_while(|&cup| cup != Cup(1))
|
||||
.fold(0, |accum, cup| accum * 10 + cup.0 as usize)
|
||||
}
|
||||
|
||||
#[aoc(day23, part2)]
|
||||
fn solve_d23_p2(input: &[u8]) -> usize {
|
||||
let mut cups = Cups::parse(input, 1_000_000).unwrap();
|
||||
for _ in 0..10_000_000 {
|
||||
cups.do_move();
|
||||
}
|
||||
cups.iter(Cup(1))
|
||||
.skip(1)
|
||||
.take(2)
|
||||
.map(|x| x.0 as usize)
|
||||
.product()
|
||||
}
|
||||
159
src/day24.rs
159
src/day24.rs
@ -1,159 +0,0 @@
|
||||
use aoc_runner_derive::aoc;
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Debug, Copy, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
|
||||
struct Pos(isize, isize);
|
||||
impl Pos {
|
||||
fn step(self, dir: Direction) -> Self {
|
||||
match dir {
|
||||
Direction::E => Pos(self.0 + 2, self.1),
|
||||
Direction::SE => Pos(self.0 + 1, self.1 -1),
|
||||
Direction::SW => Pos(self.0 -1, self.1 -1),
|
||||
Direction::W => Pos(self.0 -2, self.1),
|
||||
Direction::NE => Pos(self.0 + 1, self.1 + 1),
|
||||
Direction::NW => Pos(self.0 -1, self.1 + 1),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
enum Direction {
|
||||
E,
|
||||
SE,
|
||||
SW,
|
||||
W,
|
||||
NW,
|
||||
NE,
|
||||
}
|
||||
|
||||
impl Direction {
|
||||
fn parse(input: &[u8]) -> Option<(&[u8], Direction)> {
|
||||
match input {
|
||||
&[b's', b'e', ..] => Some((&input[2..], Direction::SE)),
|
||||
&[b's', b'w', ..] => Some((&input[2..], Direction::SW)),
|
||||
&[b'n', b'e', ..] => Some((&input[2..], Direction::NE)),
|
||||
&[b'n', b'w', ..] => Some((&input[2..], Direction::NW)),
|
||||
&[b'e', ..] => Some((&input[1..], Direction::E)),
|
||||
&[b'w', ..] => Some((&input[1..], Direction::W)),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
fn iter(input: &[u8]) -> impl Iterator<Item = Direction> + '_ {
|
||||
struct Iter<'a>(&'a [u8]);
|
||||
impl<'a> Iterator for Iter<'a> {
|
||||
type Item = Direction;
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
match Direction::parse(self.0) {
|
||||
None => None,
|
||||
Some((rem, dir)) => {
|
||||
self.0 = rem;
|
||||
Some(dir)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Iter(input)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
|
||||
enum Tile {
|
||||
Black,
|
||||
White,
|
||||
}
|
||||
impl Tile {
|
||||
fn flip(&mut self) {
|
||||
*self = match *self {
|
||||
Tile::Black => Tile::White,
|
||||
Tile::White => Tile::Black,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#[aoc(day24, part1)]
|
||||
fn solve_d24_p1(input: &str) -> usize {
|
||||
let mut tiles: HashMap<_, usize> = HashMap::new();
|
||||
for pos in input.split('\n').map(|line| {
|
||||
Direction::iter(line.as_bytes()).fold(Pos(0, 0), |pos, dir| {
|
||||
pos.step(dir)
|
||||
})
|
||||
}) {
|
||||
*tiles.entry(pos).or_default() += 1;
|
||||
}
|
||||
|
||||
tiles
|
||||
.values()
|
||||
.filter(|×_flipped| times_flipped % 2 == 1)
|
||||
.count()
|
||||
}
|
||||
|
||||
#[aoc(day24, part2)]
|
||||
fn solve_d24_p2(input: &str) -> usize {
|
||||
let mut floor: HashMap<_, Tile> = HashMap::new();
|
||||
for pos in input.split('\n').map(|line| {
|
||||
Direction::iter(line.as_bytes()).fold(Pos(0, 0), |pos, dir| {
|
||||
pos.step(dir)
|
||||
})
|
||||
}) {
|
||||
floor.entry(pos).or_insert(Tile::White).flip()
|
||||
}
|
||||
|
||||
for _ in 0..100 {
|
||||
let mut tiles_visited = HashMap::new();
|
||||
for &pos in floor.keys() {
|
||||
run(&floor, &mut tiles_visited, pos);
|
||||
}
|
||||
for pos in tiles_visited
|
||||
.into_iter()
|
||||
.filter_map(|(k, should_flip)| if should_flip { Some(k) } else { None })
|
||||
{
|
||||
floor.entry(pos).or_insert(Tile::White).flip();
|
||||
}
|
||||
}
|
||||
|
||||
floor.values().filter(|&&tile| tile == Tile::Black).count()
|
||||
}
|
||||
|
||||
fn run(
|
||||
floor: &HashMap<Pos, Tile>,
|
||||
tiles_visited: &mut HashMap<Pos, bool>,
|
||||
pos: Pos,
|
||||
) {
|
||||
if tiles_visited.contains_key(&pos) {
|
||||
return;
|
||||
}
|
||||
let n = neighbors(floor, pos);
|
||||
let black_tiles = n
|
||||
.iter()
|
||||
.copied()
|
||||
.filter(|&tile| tile == Tile::Black)
|
||||
.count();
|
||||
let tile = floor.get(&pos).copied().unwrap_or(Tile::White);
|
||||
if (tile == Tile::Black && (black_tiles == 0 || black_tiles > 2))
|
||||
|| (tile == Tile::White && black_tiles == 2)
|
||||
{
|
||||
tiles_visited.insert(pos, true);
|
||||
} else {
|
||||
tiles_visited.insert(pos, false);
|
||||
}
|
||||
if black_tiles > 0 {
|
||||
run(floor, tiles_visited, pos.step(Direction::E));
|
||||
run(floor, tiles_visited, pos.step(Direction::SE));
|
||||
run(floor, tiles_visited, pos.step(Direction::SW));
|
||||
run(floor, tiles_visited, pos.step(Direction::W));
|
||||
run(floor, tiles_visited, pos.step(Direction::NE));
|
||||
run(floor, tiles_visited, pos.step(Direction::NW));
|
||||
}
|
||||
}
|
||||
|
||||
fn neighbors(floor: &HashMap<Pos, Tile>, pos: Pos) -> [Tile; 6] {
|
||||
[
|
||||
floor.get(&pos.step(Direction::E)).copied().unwrap_or(Tile::White),
|
||||
floor.get(&pos.step(Direction::SE)).copied().unwrap_or(Tile::White),
|
||||
floor.get(&pos.step(Direction::SW)).copied().unwrap_or(Tile::White),
|
||||
floor.get(&pos.step(Direction::W)).copied().unwrap_or(Tile::White),
|
||||
floor.get(&pos.step(Direction::NE)).copied().unwrap_or(Tile::White),
|
||||
floor.get(&pos.step(Direction::NW)).copied().unwrap_or(Tile::White),
|
||||
]
|
||||
}
|
||||
33
src/day25.rs
33
src/day25.rs
@ -1,33 +0,0 @@
|
||||
use crate::split_once;
|
||||
use aoc_runner_derive::aoc;
|
||||
|
||||
const MOD: usize = 20201227;
|
||||
|
||||
#[aoc(day25, part1)]
|
||||
fn solve_d25_p1(input: &str) -> usize {
|
||||
let (pubkey1, pubkey2) = split_once(input, "\n").unwrap();
|
||||
let pubkey1: usize = pubkey1.parse().unwrap();
|
||||
let pubkey2: usize = pubkey2.parse().unwrap();
|
||||
let loop_size = loop_size_from_pubkey(pubkey1);
|
||||
encryption_key_from_pubkey(pubkey2, loop_size)
|
||||
}
|
||||
|
||||
fn encryption_key_from_pubkey(pubkey: usize, loop_size: usize) -> usize {
|
||||
let mut value = 1;
|
||||
for _ in 0..loop_size {
|
||||
value *= pubkey;
|
||||
value %= MOD;
|
||||
}
|
||||
value
|
||||
}
|
||||
|
||||
fn loop_size_from_pubkey(pubkey: usize) -> usize {
|
||||
let mut loop_size = 0;
|
||||
let mut value = 1;
|
||||
while value != pubkey {
|
||||
loop_size += 1;
|
||||
value *= 7;
|
||||
value %= MOD;
|
||||
}
|
||||
loop_size
|
||||
}
|
||||
@ -13,9 +13,6 @@ pub mod day2;
|
||||
pub mod day20;
|
||||
pub mod day21;
|
||||
pub mod day22;
|
||||
pub mod day23;
|
||||
pub mod day24;
|
||||
pub mod day25;
|
||||
pub mod day3;
|
||||
pub mod day4;
|
||||
pub mod day5;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user