1
0

Day24 part1

This commit is contained in:
Hubert Van De Walle 2020-12-24 12:48:30 +01:00
parent 0b1ae6e334
commit 23cb05ad27
2 changed files with 471 additions and 0 deletions

View File

@ -0,0 +1,52 @@
package be.vandewalleh.aoc.days
import be.vandewalleh.aoc.utils.input.Day
import be.vandewalleh.aoc.utils.input.Input
import be.vandewalleh.aoc.utils.input.Lines
import be.vandewalleh.aoc.utils.input.createDay
import org.eclipse.collections.api.factory.Bags
@Day(24)
class Day24(@Lines val input: Input<List<String>>) {
private enum class Direction(vararg coordinates: Int) {
E(1, -1, 0),
SE(0, -1, 1),
SW(-1, 0, 1),
W(-1, 1, 0),
NW(0, 1, -1),
NE(1, 0, -1);
val coordinates = coordinates
}
private data class Tile(val directions: List<Direction>)
private fun parseTile(line: String): Tile {
val re = "e|se|sw|w|nw|ne".toRegex()
val directions = re.findAll(line).flatMap { it.groupValues }.map { Direction.valueOf(it.toUpperCase()) }
return Tile(directions.toList())
}
fun part1() {
val tiles = input.value.map { parseTile(it) }
val bag = Bags.mutable.empty<List<Int>>()
for (tile in tiles) {
val encountered = tile.directions
.map { it.coordinates }
.reduce { acc, ints -> intArrayOf(acc[0] + ints[0], acc[1] + ints[1], acc[2] + ints[2]) }
.toList()
bag.add(encountered)
}
println(bag.selectByOccurrences { it % 2 == 1 }.size)
}
fun part2() {
}
}
fun main() = with(createDay<Day24>()) {
println(part1())
println(part2())
}

View File

@ -0,0 +1,419 @@
eeneseeeneeseweeeneswneenwwee
swswswneswwseenwsenwsweswse
wswswswnweswnwswswwwswswswweswswswsew
seswswnweswswswseseseswswswswswswseswse
nwswswswswseseswseseswswswswseswswsenwsw
nwnwnwnwnenesenwneneswswwswnenenwnwnw
ewwwwwswswwwwwnwnewwwwwww
nwswneewwwsewnwswnwneswnenwnwsenweswnw
seseseseseseeswsesenweswwseswseseswse
wwnwwsewenwsww
nwnwsenwnwenwnwnwnwwwnwnwnwwnwswwnw
wwwnwwwesewwwwwwwwweww
swenwwswswswseneneneseswswnwnenwswee
eseeseseseeeswseeneweneeeseese
nwswswnwnwswsweeweseswswswseswswsesee
swswswwseswnenwneneswseseswsweseswswnw
nwnwnenwnenwnenwneswnw
eeeweneweeseneeneeeseeeeee
nenenenwneneneneneneeneneneswnenenenene
wwenwswwnwsenwwsenenenwnwsw
nwnewnwnwnwnwnwnenwsenwneewnwnwsenwwse
swwnewwsenwwswwwwswwswswse
senwswseseswswseseswseswswsewswseswsesee
swswweswnwswwswwswwswswswww
wwwwswwnwwwwwnenwewnwwwnwnww
wewwweswneswswseseswwnewwsenenw
senwsesesesesesenwswseseseeseseseseseswse
seseseswswswswseswseesesesenwse
swnwswswswsweswseswswswswswswswsw
wewwenewnwnwwewwweswnwswsww
wwsenesewwwwwnewswwwwswnwwwsw
nwsenenenewenwnwnenwnenwnwnwnwnwnwnene
wenwweswswewnenwswnwswwwsewnesw
swnwwswneswneeswsesenwseswnwseseneseseswsw
nesenwnwnenenenwnwnwnenwnwnwnwwnenenenw
eneswswneeseenenwweeeeweeeee
swneneneneeneneneweneneneneneneneneseene
nesenwsewewseswseseseseswseneswnesene
nwnewewneswwsewwwwsewsewwnew
eeweeeeeeeeeeeneeeeeswe
nwswwnwsweswnwnwseewnwnwwneewsew
neswswsewswswseswsenwswswneseesww
eenwnwwenwswswswneseseseneeweenwsw
seseswswseswnwseseswsesewswseseseseneswe
sewwnwnwswnwnwnwwwnwnwnwewnwwnww
sewswwswwnwnesewswwswnwesewswwnw
seswswseseswsenwswseswseswseswseswswesw
wseneseseswseswseswseswseseseswsesenwsese
eseeneswwswnwnwse
swswswswsenwseswswswseesesesw
wswswswwneswswswswsweswswwswnwwswswsww
nwnwnwneswneswswnwnwneswnwnenwnwseenwe
swsesewnwseseseeswswswseseseseseseswsese
senwsenwnwnwnwnwnwnwnwnwwnwnwnwnewwnwnwnw
nweeesweeseenweneesenweseswwse
sesesewseneewseseeeseeeesee
sweswswswnenwswswswnwseswsewswswwee
nwwwsewseeseneseesesewseneseenee
nwnenenenwswneneneneenenenene
seswwseseseseseseseseseswseesesesesenw
neneswnwneneenenenwneneswnwnw
seseseeeswewneneswnwswwsenwesewnee
swwseswseswwsweswswneswswswseseswsw
neneewewneneneneeewneeenenesee
seneeseseeseesenweseseseseseswseseese
nenwwwwwswswwwwnwwwwwnwewww
swswswswswswswswnewnwswswswseeswswswsesw
seseeeseswsesesesesesewsenewsesenwswse
swswswswswsweswswwswnwnwneswwsweseswsw
nwsweswnwnwnwnenenwnesenwnwnwnwwnwnwnwwse
seseseseseseseseesesenwwseeseneseesese
weneseseeseseswsweseneneneesesweswne
seseseswseswesesenwsesesesesesesesesewne
neswnwnwnwnewnewseenwnwswsenwnwnwnwsw
neswnwnewneswewseeneneneneneeeeenee
nwnwnwwnwenwwswneww
nwenwnwswwnwnwwnesenwswnwnwnwnwsenwnwenw
seseswswswswnwswswswswswnwsweswseseswswswse
neneenenwneseneneneneseneeneneneenwnene
ewwnwnwwwwwwwwwww
nwnenenwneseneneswsenewnenenwsenwnenwnene
wsesewwnenenwswnwwweewsenwnw
nwnwsesenwenwnwwwnwwsenwnewnwnenwsesw
swswwsesesewwneeswseneswwneswneswswne
enwnwswnweswswnwenwnwnwnwnwnwnwnwnweswnw
eseeswnwnesewseneeenwsesenwsewswwne
neswwseneswseweswseswswnwnese
wwwneswwswwwwswwwnewwwwwww
nenenwnenenenenwneneswenenwnenene
neneswnwneswwswnwnesenenenenenwnenwnenenw
wnenenwsenwnenwnenenwnwnenwnwnwsenenewne
wnwnwnwnwnwwnwsenwnwnwnwnwnwnwnw
eswseswswseswswsweswnenwswswswswswswnwsww
wswwseseseseswseseseseseseswseneseseese
seeseeeseseseseenwsesesesesenweseesw
eswnwseswsenwswwnenwswswswnesweswswwsw
neeseenewneneesw
nwenenewswseeneswenewswnwseswwwene
wswwenwwenwseeswnewswsewnwneseswwne
eseswseesewseseseenwesesese
nenenenenweneneswnewnenenenenenenenwne
seseneneeseswwseneseswnwneseseeenwesw
seeswseeeeswnweeeeenweeweee
seeeenweseseseesesweenweseneee
neneewnwneneseneswnesenenwenenwnenesw
nwnewnwenwnwnwswnenwnwnwnwnwnwnwsenwnwnw
ewsweswseswswswwewneswwwswesww
eneeseseeeeseseswwseeseseseeene
nwsesesewwnwnewnesenwnewwseseenew
sewswswswseseswswswseswseswswswneeswnwswe
neswneswnenenenenewnesenwnwnenwneswnenenene
nwnwnwnwnesenwwnwnwnwnenwnwswnwnwwnwnwnw
swseseseswswsewneswsenesenwenenwseseese
neswseseseswseswsesesewsesesesese
seseeeswnwseeeswseseseesenwseseee
swneswswswwswsenwswswswseswswswswseswswswsw
wsenwswwwwswswww
nwseswseesewseeswsewswnenesenwsew
nesweeseeweenenenweneswnenenee
wnwwwnwwwswnewwnwnwwewnwnwnww
wnwnenwswswnwnwsweesenenweswnewenw
seeseesenwseseseeeseseeseeseese
swseswswwswenwswswswswswswnenwswswswswse
eswseswwwnewwsewwwwwswswenesw
wnwnwswwnwnwswnwnwnenwwwwnwnwnweeww
seswwseswnesweswswseseswswseswseswswswse
nwnenwnwneneneneswneneswnwswnenenwneeneswne
swwwewswwnwwewwswwswswwswwwsw
seneenwswwseeseseneewenwseneswnewe
wwsenesesesenewewnesweseewsesw
nwwswwwesewwwwwwnwwwwwwwnww
newwnwwnenwwswsesewswseseewwnwwwsw
newswswseswswswwswswwswsww
eeesenweeeenweeesenwseeeenee
ewenenesewseswseweseeeeseeseese
eeeeeneeeeeeseeswenwnweeeee
wwnewnwenewewsewseseneweswswne
wnwwswneneneneseneseneweseenwneseneee
swewnwwnwnwneseneewneneneneene
enwnwseeneeneneeeneneeeneeswnene
sewswseneswwseeswneswseswnesenw
nenenwnenenwseneneneneseswnenenenewnene
eseseseseeeseeseseeseenwsesesenewsw
newenewnesweeeswneeeseenwnenee
wswswsenwswswsweswneneswswswswswsesesw
wsesenwsesesewsesesenesesesesenesese
eseswswseswswswswnwswswsenenwswseswswsesw
nwsewsewswswwwnwsenewnwwwwnwew
seeseeweewwsenwwneneneeswesewne
nwsweseswseseseswneeseseswnwseswsenesw
seswswswwneswsesenesewswnenwswswseswwse
seeseweseseneswnwseseseesweenwsenw
sweswseswwwswnwswnenwwsewswwnwswsw
eeeeeeeneswneneeneeswnweenwnese
nwwwnwnwwwsewnwwswnwnenwnwwwww
swswseseswswsenwswswswneseseswsewseswswsee
eseeeseseeseseewsenenwewsese
wwwwwwwwnwswwnwwewwwwnww
wneenesesenenwwnenwnwneswsenenweswne
wswnewwwwwwwwww
enenwnenenwnwnwnwnwnwwnenw
nenweswswswnenwnenwseneeswesewnenenew
neeneneswnenwneswsweeneneeneenwnenene
sesesesesesesesenwnwesesesenwwesesese
wswwswswswwnwnwwseswswwswswsew
nwneseewnwnwnenwnewnenenenwnenwnenwnenw
neeeneeeneeeneeeneenesweneenew
seswneswsenwesesesewseswseswsesewsesw
neswnenesenenwneneneswnenenenenenenenenene
neswwswswnwswswswswswsesweswswswswswsw
enwwswnwnwwnwnwnenwnwsenenwnwwnwnwnw
swnwswwswswswswesweswseseswswseseswsw
wsenenwsenwnewsenwnwnwsw
nwnwenwsewwswwnwweswnwsewsewnesew
nwnwenwnenwnwnwwnwnenwnenwnw
newneweneneneenenenwnw
swenesesenesesesesesewseneswsesesesese
swneneneneseeseeneeseeneewswwwww
nwnwnwenwnwnwnwwnwwwnwnwnenwnwswnwse
nwnenwneneswesenwswsewnenwnwnwnenwswese
seseswswswswsweseseseswnwsesw
nwenenwneneneneneenenenesweneneswnenene
nenwwwnwsenwnwnwnwnwsenwnwnwnwnenwnwnwnese
neneeeeweneeneneswnwnenenwneneswne
wwwneswnwnwnwwnwnwewnwnwwwwsenew
eenweeeeeesweeeeeee
eneweseseeeswewsewseswsenwesenw
nenenwnenenenwseswsewnenenwneswnw
nwwwswnwswnwnenwwenwnwnwnenwswnwnwnw
eswseneeeewenweeseswsewseenee
wswswnwneseswseseneswsww
sewwwwwnwwwwwnenwwwwwnwwnw
enwnwnwwwnwwsenwsewnwwsewswwnwwnw
swseswenwenewnesweseswnewsenwseswwwsw
nwswwnwnwnwnwenwnwwnwnwwwnwnwnwnww
wenwswnenenenenenwne
swwwnwnwwwwnwewwwwnwnwenwnwnw
nwswneswneswsenenesenenwnwwnenwnwneene
neneswneweneneeeweneneeeenenwene
neenweneswnwneneneneneneneneswnenenwnenene
wswnwwwwnwwnwweeswnwwnwwwew
eweneeswneneneeeeeeeeeeew
seeneeseseseswswsenwnwseneeesweee
eneeneseenesenenenenenenwwwneeneswse
swseneenenenenenenesenesenewwnwnenene
swnenweeeeeneeewswenwenwswewsene
eswnwnwwnwnwswseewnesenwwnweseww
nwnewseewnwwwwnwnwswnwnwnwnwnwwnw
nwnwneenenesenwnenenenenenenwnenwswnew
swwswnewewwwwwwwwewwnwwwsw
eeseseseeeeeseenweeeeswe
nwnwnwweswnwenwnwnwnwnwnwnenwnwnewnw
swwsweneswsewnwwswswwsweenwsww
neswneneswseswenenenenenenwnwnwnesw
wwwnwswwwswneewwwnwnwewwwe
enesewnwwsesenenewwwwsw
neneneswnenenenenenesenenenenenenwswnwne
seswseseswsesweseseswswnwseseswswsesesw
nwnwnwnwsewwnwwnwwnwwnenwnwnwnwnw
seeeeeenewneeswneeeenesenwnene
wwewwwwwwwwwwwwnwsewnw
seseswseseseneesesewsenese
sesweseswsesesewwseweeseseseenwsw
neswseswswwswswseswswswswswwwneswwsw
ewseneseeneswseeesesw
swswwnewnwswneswnwwnewsesewswswswwe
nwnwnwnwnwnenwnwnwnwnwnesenwnw
swnwewsenwwwwwswsewnwneenwnwwnww
swswswseseswseseswnwsewswsesesesenesw
neenenwneneneneneeeeeneeeneeswese
eneeeneneeneeswswnee
swnewswwwswswswswswswswswnwseswsenewswsw
swseswsesweswsewswswseswseseneswswswsww
swenwnenewswnewwsewnwenwnwswnwswwnew
swswwwsenwwnwswsewnesewwnwnenene
weneneeneswnweeweeswweeswnesw
nwswsenenwesenwnwsenwsewenwswnwnwnwnew
nesweenwneeeswwneneneeneeneenwenee
nesesweswswwswswseswswseseswswseseswsw
eeewswnweesweeeseenenenenewee
sewwsesesesenenwseneseseseseseesewsesw
nenewsewnwnwnwneneswnenenenesenwenw
sewwwwswwsewwwwnwnwwwwwwwsw
sesewwseseseseseseseseneeseseeeseese
neneneewwnenenenenenwneneseeesenene
eseeeneneenweeeeeneeee
enwswnwwswenwneewswnwswwseseswseenew
nwnwnwnenwnwnwwnwnwnwnwnwwnwnwnwsenwnw
seswswswenwnwswswswseenewswneneswwsw
wswswwwewwnwswswswnwwesewwsww
seseseeseseseseseeseswseswnesesenwsesese
swnenwswsewwsewswnwswswswnwneenesee
nwnwwsenenwnenwnwnwnwwnwnwswnwnwnwnwnw
senwwswnewwsenewwwsewewwwwwww
wnwwwwnwsenenewwnwwewwnwwnwsenw
ewseewsewnwnenewwwwswwneewww
wnesenweenenweeswwenwesenesenee
eweneneneneweeeeeneswneneseesw
nwwsenewwnenwenwswewwwwseswwww
eewseseeeseeseeseneeseeeeese
wswwneswnwwnweenwnewwswnwnwwwnwwsw
nwswsenwwwnwwwwswnwwnwwnwenwwnenw
wsweswwswswwwwsewweswnwwwswww
neeeweenwneneeneeeseeeneeeeesw
swswswseswwswneesewswnwswseseseswsw
swwwwwnewwwwwwwwww
ewwwewwwwswneswwwwwnwwwwww
swwswswswwsesweswswswwwswseswswnewnw
nenwnwnenwnwnwnwnwnwnwnwnwnwswnenwnesenew
swswswswweswswswseswswswswswswwswnwsw
eeseeseeeeseseseseseeseeesenwnw
seseeseseseseneseseseseseseseseswsewnew
nwwnwnwswswenwnwnwsenwwswnwnwnwewnwnee
eeneswswneeeeeeeeeeeeenene
swswswnwswwswswswneswswswswneseswswswswsw
nenwnwnenwnwneswnwnwnenwnwnenene
swnwnwnenewenenwnenwsenenwnwnw
swswswswswnwwswswswswswnewwswsweswsw
swswsweswneswswswswwwswseswswswswwsww
neswnwswsenewnesenwenenenewnwnwnw
eeeeweewneeeeeeeeeeee
sewswswseseweeseseseeseswnenwenwsene
swswsenwswswswswswswseswswswnweswnwesw
wnesenweeneneneenesenewneeneneene
nwnwnwnwnwnwwnwnenese
wweeeneeeeeseseee
nwnenenwnwwnwnenenwnwnwnwesenenwneseswnw
eeeswenweseeeeeseeenewnwswe
enwneeweneeseswsenwnenwseneneneesw
seseseseseswsesewsewseneneseneneswsesw
seseseeseesenwseseesenwsweeesewse
neeeeeneswweewneeeseeeeenee
swswswwswswswswseswswneswswswwsweswswsw
swswswseswseswswswswswnewseseseswswswse
swwwwswswswswnweswswwswne
wwwnwnwwwwwnewwnwwnwnwnwnwsew
swswswswswswwwswseswnwneswseswnesw
nwneseswsenewnweneswsenenenenwnenene
seseeseseeseenweeseseeswswesesesenwe
neeneneweenewneneenwnweneseesweee
eneeseeseeswsweneeseseseesee
swnenwnwsenwseswsenwseenwswwsesenwsese
eseseeeeswseeeeenweeeeeee
eneeneeneeeeswesweeeeneeene
nwnwewwnwnenewsesenwnwnwnwseesewnww
swswswswswswseswswnwwswnewswseneswseswsw
nwnwnwnwnwnwnwnwwnwnwenwnwnwnwnwnwnw
sewswswswseneesesenweswnwswsesenwseesw
eneeeseesenwweseeneeweeew
nenenenenenenenwneneneneneneenewswe
wwwswwneswwnwenwwnewswnewsesww
wsewwswwnwwwewwnwnwwweswwse
nwesenwnwnwnwwsewenwnenesweneswwnwe
swneswnesweswnwwnenenweeew
nwnwwnwnwenwnenenwnenwenenewneswsenwnene
nwnwnenwsenwwnwwnwnwenwwnwnwwnw
neseseneswwswwseswswsweswseswseseseswsw
nenenenewsenwseenenewneswsenenewnenenene
seseseesesesesesesenwswsewseesesesesese
eneenenenewseseeeneenenwnenenenenenene
nwswnwswneswwseeswswswseswswswswswsww
swweswsewswwseseseswswswswseswswee
nwnenwenewwwnwnwnenenwenwnwesenwne
wwwwwswswewwswwwwwswsweswww
swswwnweseenwwnwwwswswwwseseswnwe
nwnwwnwwwnwenwswwwnewseswnwnwsene
wwwswwwwwswwseswswswnwneseswwsw
wwnwnwwwnwnwswenwnwnwnww
neneeeneswnewneeenenwswee
newnwnenenenwneneswsenenenenenewsesenenene
eseseeseseswwnwswsesenwwsenenwseseene
neneswnenenenwnenwnwne
wswwseswnenwwwswwwwwwwwswneww
seewwewwneeewesenwwnenwwnesesw
neneneneneneeneswnwnenwneneneneswwnwne
nwnwnenenwnenwnewnwsenenenenenenwneneenw
nwwnwnwenwnwnwnenwsenwnwnwnwnenwwnwnwe
swsewwnenenwneneneeneneswneenenenenwswne
eeneneeenesesweewsweenenenwnwenee
nenenwneneswseneneneeneeneneneenenene
wswwwseenenwsenwnesesenwneswnwnwwe
wseswswswwwswswswnwewswswswswswswswsw
nwswseswneneneeneswnenwswneneneneenenwe
sewnenenenenwseswnesenenwsenwnwnenenene
nwwwnwswwneeeewnwnwswewnwnwsenwe
seseseeeesewneseesese
nesenenenenenenenenewneneneseswnenenenew
nwswswswswwswswswwswswswswswswseswswswne
wwwwwsewwwnewwwwwwwwww
nenwnwnwnwneenwnwwnwswnenwswsenesewse
eeseseswseseeeeeeeeseseenesesenw
nwnenenwnwnwnwnwsenenwswnenwnenenwnenenwne
nwwenwnwnwnwnwnenwnenwnwnwnwnwnweswsw
nenwsenenenenenenenwnewnwenwnenenwne
nwwnwwnwseneeseseswnwneeeseeneenee
wewnwnewwnwwwwswwwnwwwseswww
neswseeseseseseseseswsewnwseswswswswsee
sewsesesesenwsenwenwwnesesenwnwse
seeeeneneeeneeeeewwneeeene
neneewwneeneeeeeneneeeeneeee
nwsesweswesesesesewswseseswswseswseseswse
wwnwnwwnwnwnwnwnwwwnenwwnwnwsenww
wnwsewnesweewsenwwenwnwenwwwse
wswwwewswwwwwwwswnweww
swswnwswswswswswnweneswnewneseseswswswne
weseseenwweeswenwseeenesewsenw
swswswswseneswswswswswswswneswswswwswswsw
senenenenwenesenewseenewswneneeene
swnwswseseseseesesewswseseseseseswnwe
neswswewwwewnwwwnwswwnwneewwwsw
swwnewnwweswswnesenwswewseswswseswsww
eseseweeneweeeeeeeenewsew
eeseenwsenwswseeesesesenwwsesenwsew
esweswwseesenenesesenwsesesenwseseee
senwswnwswnwnwswseswswswseseesw
nenwneneenenenewnenwnenenenenenenenesene
seeseeenenwewweesenwweneneeswe
wwwnewwwwwwwswwwwwwsw
neseswsenwseseseseseseswseseseswseseesw
neneeewsewsewenesewnesewsewsew
wwswwnwnwenwnwwnwwwenwwnwnwnenwse
nwnwswnwnenwwnwnwswneswenwwwswnwwe
enenwwneeeeeeeneneeeeeeeeswe
weeeeswesenwse
nwnwnewnwsenenenwnwnwsenwnwnwnwnewnwnwenw
swenesenewwwenenwsewswwwsewnwe
nwswwnwwnenwnewwsenewwwsewwnwse
nwnwnwwnwnwwnwsenwnwwwnewnwnwwwnwnese
seswswwwwwwswswswswswwnewwwww
neswwseenwwnwswseneeewswnwseneesww
seesweswenweseenwnwseswwnesenwwnwee
seseseseneswseseseseseswseseswenenwsese
seesenesesesenwwseseseseneseseseeww
eseseeseseeeseseseseeseseewsesene
wsewwwwwwnenwnwwwwwwnewwnwsw
eseswesenwseseeseeeeseseseeesee
neneneseeneneenewneneneneneene
neeseseseseeseseswseeee
seeeesesesweeesewseneseeesesee
enwweeeeeeeeeseeeeeeesee
wwwseswsewnewwnenewswswswswswwsww
seeewnweseswenenenweeeenee
nwsenwwwwnwnwswnwwwne
wesesewswswneeenwnweneenweneseesw
eeswswwnwswnwnwnwnwesenwwnwnwwnenwnw
nweenwseseneeenwseneenwneswneenee
nwsenwsenwnwnwnwnwwwnwnwnwnwnwnewnwne
seesewseeseseneseseseswsesesesenesese
swwseswnwwwswwswwswwew
enwneenenenewnewsenenenenenenesenene
swwswswwwwwwswneswwswwseswwsene
neenenenwnesweneewswne
nwnwwnesenwnwnwnwnenenenenenwnwnwnenwne
neeenesewwnwsenwswseseeseneswsewsesw
newwnwswswnewswwswwswswwwsewww
wsewwneenwwww
wswwnewwwwwwwwww
wwwwswwwswwnwswewwwswswwww
swseswswswswseseseswseeswswsenwsesw