From 8045c9b9d847346ec983e0de64fa0dd55484287e Mon Sep 17 00:00:00 2001 From: Patrick Michl Date: Fri, 25 Dec 2020 13:18:08 +0100 Subject: [PATCH] Solution for Day 24 --- day_24/first.rb | 99 +++++++++ day_24/input | 556 ++++++++++++++++++++++++++++++++++++++++++++++++ day_24/test | 20 ++ 3 files changed, 675 insertions(+) create mode 100644 day_24/first.rb create mode 100644 day_24/input create mode 100644 day_24/test diff --git a/day_24/first.rb b/day_24/first.rb new file mode 100644 index 0000000..9e580e6 --- /dev/null +++ b/day_24/first.rb @@ -0,0 +1,99 @@ +input = File.readlines('./input').map(&:chomp) + +class Tile + attr_accessor :x, :y, :z, :black, :white + + NEIGHBOURS = { + 'nw' => [0, +1, -1], + 'ne' => [1, 0, -1], + 'sw' => [-1, 0, +1], + 'se' => [0, -1, +1], + 'e' => [+1, -1, 0], + 'w' => [-1, 1, 0] + } + + def initialize(x,y,z) + @x, @y, @z = x, y, z + @black = false + @white = true + end + + def walk_and_flip(dir) + if dir.empty? + @black, @white = @white, @black + return + end + move = if %w[se sw ne nw].include? dir[0,2] + move = dir[0,2] + dir.gsub!(/^../, '') + move + else + move = dir[0,1] + dir.gsub!(/^./, '') + move + end + + offset = NEIGHBOURS[move] + next_coord = [@x, @y, @z].map.with_index {|c,i| c+offset[i]} + tile = if $tiles[next_coord] + $tiles[next_coord] + else + tile = Tile.new(*next_coord) + $tiles[next_coord] = tile + tile + end + tile.walk_and_flip(dir) + end + + def next_day + neigh = neighbours + new_tile = self.dup + if @black && [0,3,4,5,6].include?(neigh.count(&:black)) + new_tile.black = false + new_tile.white = true + elsif @white && neigh.count(&:black) == 2 + new_tile.black = true + new_tile.white = false + end + new_tile + end + + def neighbours + NEIGHBOURS.values.map do |offset| + next_coord = [@x, @y, @z].map.with_index {|c,i| c+offset[i]} + tile = if $tiles[next_coord] + $tiles[next_coord] + else + Tile.new(*next_coord) + end + + end + end +end + +def draw_bounds + $tiles.values.each do |t| + t.neighbours.each do |n| + $tiles[[n.x, n.y, n.z]] = n + end + end +end + +$tiles = {[0,0,0] => Tile.new(0,0,0)} + +input.each do |dir| + $tiles[[0,0,0]].walk_and_flip(dir) +end +puts $tiles.values.count(&:black) + +$new_tiles = {} + +100.times do |i| + draw_bounds + $tiles.each do |coord, tile| + $new_tiles[coord] = tile.next_day + end + $tiles = $new_tiles + $new_tiles = {} +end +puts $tiles.values.count(&:black) diff --git a/day_24/input b/day_24/input new file mode 100644 index 0000000..2371797 --- /dev/null +++ b/day_24/input @@ -0,0 +1,556 @@ +seseseseseswsesesenwseseseswenweeese +nwneneseswneneweeneneeeeneeneene +swswseswswswswswseseeswswswswseswsesww +nwsenwnenenwnwnwewnwnwnwnwnwnwwnwnwnw +sesewseesesenwnewewwnewseeseseswsene +eneneneeewswnenewsenenwnwnenewnene +neneneswseseeeswsw +newneeeeneeeeeeeene +wnwwwswwwnwewnwwsewenwwwwnww +swewswswseseseswseewseseseneswnewwsesw +nwswnwsenwnenwwnwnwnwwnwwnwnwnwwnwnwnw +swwwwwnewwwwswswwwwwwseswsww +wwwewwwwswwwwwwwwwswsw +wnwnwnwnwnwnewwnwwnwnwnwsewswwnwww +sweswnwwwnwwnwnwnwseenwnwnwnwnenwnwnw +nenwwwsewnenwwwwwwnwwnwwswnwnww +eeneeesweeesenwneneeeenweeeene +enwwswnwwnwnweswnwnwseswnwnwnwsewnenenw +nwnwnwnwnwswnwnwnwnwnwnwnwnwnesenwnwnwnenw +nwswwsewswwwwww +sesweseeneeswnweeseweseswsesenwnw +sewswwnwneeswswnewswswswwwwnwswwse +enwnwswnwnenwnenwswneneneneneswnwsewnenwnw +nwnenwnwsenwnwnwnwnwwwnwnwnwnwnwnwnwnw +seesesesesesewsesesesesesesesesesesesene +swneneseswsewswwsenesesewswwnewswseswne +swnwswsenesewneswswnwswsewewswseswnene +wwswwseseswwnwnww +esewnwseseswnweseesenwswseesesesee +seeneneneseenenwsweeeeeeeewe +seseswseswsewseseswsweseswseseswswsese +swneeneeneseneweesewne +nenenenenenenenenenenwnenwsenenenenenene +neneneswneneneneneneswnenenenwenwnenene +wewwewwwnwswswnwewwwwwwwsw +seseseenwsweeeesenweneeeseewse +neneneneenenenenwnenenenewnewnwnwnesenw +nwnwnwwewwseswnesewnwswwseswenene +wwswswswswswwswswsweswswsw +nwnewnwwsenwnwnwnwwnwwnwsenwwwnwwsenw +swweeenwseeseseeenwweseeseseeese +nwnwnwnenwnwnenwwnwnwnwnwnwnwnwnwnwnwe +nwnwnwnwnenwnenenenwenwnwnwnwswnwswnwnw +wwwswwewwwwwwwwwnwwwwwsw +neneneneneeneeneenenenesw +nwswneeneeneseweneeweneneswnwswneswse +seeswwenwneeneeeneeswneeswsenwe +weewwwwwswwwnewwwwnwwwsww +wneseewneweswneneneneneneeswnenesene +swnwenwenwseswneswewnwwnwwsenwnwe +wsewnenenenenenenenenenwnesesenenenene +nenwneneneeneneneswnenenewneenenenenene +eswswswwswnwwswswsweswnwswswswwswe +seeseseseseeeswsewnwneseseesesesese +eseenwseseesweeeeseeweeeesee +eenewneeneneeneeneeswneneneswsene +nwnwsenwnenwnwnwnwnwnwswnwnwnenwnwnwnwnwne +wnwwnweeseswnwnwsweesenewnwnwnwnw +nesweneenenwnwneneswneneseewene +nenenenenenenenenenenwsenenenwneneneeswnenw +swswsweswseswswseswseswswswnwnwsenwswsee +wwnewwwwwsewwewsewnwswwnwnew +swswswseswswswswswseswswsewsweswseswsw +eeneenesweeeeeeeeeneenweee +nwwwwwwnewnwwwwswwww +nenwnwneeneswnwnwnwswnenenwnewswnwswnw +eseseenwsesesesesewsesesesesesesesesese +wwnwwnwwnwenwwnwnwnwnwnwnwsenwswnw +sesewseseeeneewesenwseeseenesee +seeesewsesewwneeeeeseeeeenenw +wswswswswswswwswwwswewwwswwwsw +eswwswswwwwswswseswwwnewwwwwwsw +weseswseeswneseswwsewswseeewnenwsw +nwnwnwnwnwnwenenwnwenwnenwnwenwnwwswsw +senwnenweesesewwesweeeseneneew +nwwnenenenwneeneneneswneneswwsewseene +wswwwewswwewsw +eswneeeeeeeeswneeneeeneenwe +nwseeswnwsesweseseseseseeneswneseseese +eeseesenweeee +senwnwsenwnenwnwnewnenwnwsenenwnwnwswnw +neenwsesewnwnewnwnenesenenwnewseswnene +eweeenwesweeeeeeeseeswneee +eeeswnweeeeneeeeeweeeeee +nwnwnenenenwneneswnwnwnenenenwnenwnesenw +eeweeeeeseseeeeeeeeeee +wswswwsenwwnwneewesewswwnewnew +nenesenesenwnenenwswwnwnenenenenenenee +nenenwenwnwnwnwswnenwneneswnwne +wwswswswwswwwneswwnewww +enwnenwnwwnwnwnweswnwnwnwnwnwswnwnwnene +seseswswswseseswseseseswsesenwseswseswe +newnenwseneeeneneswnenenenenenenwseenee +eeswseeswsesenweeenwsewsee +wnwnwenwnwwnwnwnwwnwnwwnwnwnwwnwnw +nwnwnwnwnenwnwnwnwnwnwewnwnwsenw +swswnwsweswswswswswswswswswseswswswsw +swswwswswswwswswswswswwswwswswweesw +swswswesweswnwswwsenwseswswewnwswswswne +wwwnwwwwewwwwwwwwwwew +wwnwwwwwnwwwwwnwwnwsewnenwnw +nwnwnenwnwnwenwnwswesenwnwswseneneww +newseseesewseweenesesweneewswe +wenwwewswnwwnwnwwwnwenenwsw +neeeeneneneeeenwneswswneswneenesw +seeseseseseswseseeseneseseswnwnwsesewese +eeeeweneeenweenenweeesesesesw +eswnenwneeneenesenenwneseneenwswnenenew +nenwnwwnwnwnwnwenwnwnwnwswnwneneneenw +nwnwnwnwnwnenwnwneenenwnwnwwnenwnenenw +eeeseeeeeeeseweeeewsee +wnwwnwwnwwwwwwnwsenenwnwwwnwww +eseseneesesewnwesweneneswsenweewsw +nwnwnwenwnwwnwnwnwswnweenwnwnwnwnwnww +nenenenwswnenwnenenenwneenenenesenenenene +neeswnwnenenenenenenwneneneneneneeneswne +swseenenwneeneeeeseneenwnenenenee +neswnwnenenenenwnwnwseewnwnenwnwnenene +senwseswsweseseseseswsesenwnwseseneseenw +eneeneneeneswswewneneeswneenwnenw +neenwwneswswsesenesewwsesesesenwwe +seseneseewseseeesewseseseswnwsesene +sesenesesesesesewswseeeseseseeesese +wnenenwnenesenenenenenwneneewnenwsesenw +sesesesesesesenwseseneseseseseseswseswsese +sweswneswswswswswswswswswswswswwswwswsw +nwsweswnwnweseneswsesenewnenwswneenew +neeneneenesweeseenenenewneesweeene +neneeenewwseewneseeeseneenwee +seseseseseeeeeeeseweeseseese +enwswneeeneeseneeneeweeeeenesew +eswswswswswswwnwseseswseeswnwseswswsw +nwewswswwswswswnesewseswswnesweswsee +nwnwenwnwwsenwnwnwnenwnenenwnenwnwnwnwsw +eneneneneneneenenewneneneeneneneene +nwnwnenwnenenwnenwsenwnwnwnwnenenewnwswnenw +wwwnwwswnenewswwseswwwnenewsew +ewwswneenenenwswwnwewenenenewese +nwenwnwnwneseseswnwnwnwswswwneswnwnenwne +nenwenwsenwnwneswnwswnenenwnewnwnwenwnw +wnwnwenwnwwnwnweneswnwnwnwswnwnwnwnwnw +eneeswneenewneenenenewsenwnenee +enwnwnwnwnwnesenwnewnwne +nwwnwwnwnweenwsenenwwwsenwwwswne +wwwnwsweewneswweeswweswsewnw +swseeswwneswseswwswseneswnwswswswwswswsw +enewenweswsesesesewswneeenwwwse +senwnenwnwnwnwnwnwnwnwnwnwnwnwnwnwwnwnw +wsewnenesenwenwswnwnenwswnwnwnwwenwe +wnwwnewwnewwnwnwsewnwnwsweswww +seswswseseseeswnwnwsenweeswnwseswsesese +nwnwwnwneseweenenwnwnenwswneeswseswne +swnwnwswswswswswswswseswseeseseswswsese +nenwnenenwsenenenewnwnwnwnwnenenesenenw +swnwwwwesewweewnwwesenwnwnwnw +swwswseneswwneswsenenenwswneseswswsenenesw +nenenenenenwenesenenenenewnenwnwnenenwne +swnwwswwwswswwswwswwwwseeswsww +eseseseeseseseweseseseseseweee +swsweswswswseswweswnenwswenwwswswne +nwnwnwnwnwnwnesenwnwnwnenenwnenenwnwnene +neswwwwwnewwewseweswwwswww +seseswseneseeseswnwseswseswseswseseswse +sweeeeeweseeeeenwenw +swnwnweewwnwsenwsenwwnewswnenwnwsw +eweeeneenwwseneneswnesewnwseesenwne +swswswswnewwwswswsewwwnwwswweswsw +nwnesenenwewsenwwneseseneswnenenesenw +ewnwenenwseseeneweeesewsw +eeeenwenenweeenweseeneseeseee +esenwseesesesesesweee +sesesenwseswnwswsenwseseenesewsewnwnw +wnwwwwwwnwswwwwewwwwwwww +nwnwsenwnwnwnewnwnwnwnwnwnwwenwnwnwnw +wsewwswwneswwswswwnewswswwwnese +nwnwnwnenenenwnwnwenwwnenwnwnwnwnenenw +nwnwnwnwewnwwnwnwwnwnwwnwnwnwenwnw +wswwswswsewnwswwswsewwwswwswnew +eeewseeeeseneeweeeeeeee +nenenenenenenenenenenenenenenenenenenesw +nwnwnwnwenwnwnwnwneswnwnwnwseenwswwnw +senenwswnenenenwnenewnesene +seswseseeneseneseseeseseseeseseswese +nenwswnwnwsenenwsenwnwsenwnwneswnwwnwenwnw +eeweseneseseseseseeeseeese +swewnwwswwswswwwwwwnwwsewww +swneneneneneeswwnewswseneswneneenenenene +eenwneeneneeseswseneenwnenenenene +sewswsweswseswseenwsenenesese +seswseseswseseseseseseswseseseswseseenw +sweeeeeeeneeseeeseseeee +seweneeswnwneeeeneneenewnesenwne +swwswewwnwnwwnwwewwwwwwnwnwwnw +neneneneneneneswneneneneneneneeneneswnene +wwwnweesenwnewnwswnwnwnwwnwnwnwww +wswnwnwnenwweswewwswswwsewswwsw +sewseseseeeeneseeeeeeeeesee +senenewneseenwneneneneeswnenenwnewnene +neneneeeseneenwneneenwneseneswneeeww +swswswswswswswswswwswswswswsweswswsesw +neswwwswwswwwwewswswewsewswwnw +neneneesweeneneneneneewnenenwnenenene +eswswnenenewneseneneeswnewneesenenene +nwnwnwnwnwnwnwwnwwwnwnwnwswnwwswenwne +seeseesenwswnwesweseneneeeseeeee +eeeeneneneneeneneewneeeseene +seswwswswswswsweswwnwsweswswswswnenw +wwwwneseswwwnwswsewswwswwwswsww +wswnwswswswsesewwwwwswwswwneww +wseswswewswswswswseswewswseswswesw +swnweswwwwswswswswwswww +wswwswwswwswswwnewwsenwwwwswew +neseneenewswwesweneseese +wwwsenwswsewnwnwesweenwwswwnwww +wswnewswsewnwswwswswnewswswswswswwsew +swwswwneseswswswww +neneswnweseenwswneenenweeeeneenee +eenenenwseewseesewswseeeeseeew +enewnwwnwwnwwseneswwwwswnwwsenwnwne +eweseewseeseneneseeseeseenwwsese +neswwswenwwwwwnesewswneswwswsesw +nwnenwnwnenwnwnwnwnwnwnwnwswenenwnenwnw +swnenwnwnenwnenenwnwnwnwnwnwneewsenwnenwne +nwneenwnwnenwnwnwnenwnenwnwnwnewnw +swswseswswswswswswswnwseswswswneswsenwsesw +nwnwnwnenwnenenwnwnwnwnenwswnenwnwnwnenw +nwwnenwnwnwnenwnwsenwnwnwnenenwnwnenwne +neeseewwswseenenw +swwseswswswneseswswswesesenwswneswsesw +newnwwwnwnwwwnwsenwwnwwwesenwnwnw +eswseseswwswseneswsesesesesesenwsesesese +eeeeeeeeeeenweeeeseeee +eesenesewseseeseeeseseeeeseesese +wnwnwnwnwnwenwswnwwnwnwnwnwwwswnwnwnew +nenenwnwnwwesesenwwswnwnewswswswenw +eeseeenwnwswswewnwsweneeenwsenee +eseenwsesweseweeseeseseeswsesene +sesewseneseswsesesesesesesese +nwnenwnwnwnenwswnwenwnewnwnenenwswneene +wwwwwswwwnwwwwwewwwwwww +eseesewseeeseseseeseesesesenesesee +swswewwewwewsw +swseswnwswseeswseswswswswswswswseseswswse +wnwnwwwewwwwwwwswnwnwsenenwww +swswswswswswswseseneswswswswswswswswsww +wenwwewwwswsweswswsenwwswwneew +nwnwneeneswneneneewneswnwneneswnwswnw +wsewswnwnwnwwenwnwnwnwnwnwnwewnwnesw +swswswswswneseswswswswnenwse +eswnenenwseswseseswseseseswseswneseswnw +enenwnwsenwnwnwwneswnenwnwnwnwnwnwenw +sewsesenesewewseseseseseneweseseewse +sesewseswseseswseseseseseswswswseswsenese +neesenenenwneneenenesewneeneeewnw +senenenesenenewwneneenwneneneeenenene +wwwwwnwwwwwnewsewwwwwww +swseswwswswswnwswneene +sesesesesenenwsewseswnesenwwsenenwsewne +nwwwwwwewwww +neneeneeeeswnenenesenwneeneneenenew +eweeeeeeeseneeeeeeewee +newnwnenwnwwwwwswwswwwnwwnwwwnw +nenwnwenwnenwnenenwnenenwnwsenwnwnenew +wswseenenwnwwneswnenwwnenenenenenee +swswnwsweseseswswswseseswswswseswswseenw +seseswswnwseseswwnwsweseseseseseeseswe +nwnwnwwwnwwnwwwnewwwnwsesewnwwnw +swswseweeswswswsewswswnwwwnwenenwsww +eswswesesesesenweseseseseneneseewsenese +wnwenwwwwnewwwwnwnwwwwsw +seeeenwswwsenwsesenwswneswswwwswe +nenesewwwswswswnwswswnewswsw +neseneseswseeseseewswwsewswsenwswswsw +eeseeeseweeneeeeeeeeesesee +sesweenenenweeseeswesweseeeneww +nwnwnenwnenwwswswnwwwse +nenenwswneneesewenenwesenwnenenesene +eesewnwseeneeeeeneseesewwnwe +swenesesenesenenewwnwnenenenesw +swswswswswswswswnwswswswswswswsweswswswsw +eseneswseseseseseseswswsesenw +swsweswswsesenwswswnewswswswswswswnwswsw +wwwneswwswwwneswwsewwswwwwsw +nwnwnwwnwnwnwwnwnwnwnwnwnwenwnwnwwnw +wswwswwwewswswswneswswwwswwwwsw +nenwnenwneenwnenwnenwnwswwnenenwnwnenwnw +seeseseeseeseseweeewnenesw +senwnwnwnwnwnwnenwnwnwnwnwnwnwwwnwsenw +enenesenenwwesewee +swnwswnwneseenenenwswnwnewnenwwnwneesene +swswswseswswswswswswswswswseswswwseesw +swwswnwwwwwwswwewe +wswenewnesesenwswseswseeneneenenwnenwe +wwnwswswewswewww +seseesesesesewsenwseneseseeseseeeww +swseswswswswswseswswseswseswsenwseswswse +wnwwwwwsenwnwweswnwnwsenwewwsw +nenwnwewswnenenenenwnwswnwnwnenenenenwnw +wnwwnwnwnwenwseswnwswenwwwnwwnww +neenwnwswnwneneneenenenwsewneswnwnenwnw +wwswswwwwwwwswwwwnewswnewww +wsenwswsweswewneenweswsenwneneese +swseswnwseseswseseswseswswswseseswseenwse +seswswseneswsesesweseseswseswneswnwwswsese +nenwenwwnwneswnwenwnwnw +neswewnwnwswneenwsenwswnwnenenwnwenenw +eswswnwnwnenwwnwnwswnwnwwnenwnwnwsenw +nwnwnenenwnwnenwswnwnwnwnwnwnenwnwnw +wwwswwwswwwwweneeeswwwwne +eeeenenwneneneneeneeswneeneweee +nwnwnwnwsenwswnwnwnwnwnenwnwnwnwnwnenwnww +swsesesesesesesesesewesesewseseseseseswne +seseeeseeeweeeeeesesewsesee +seswneseswneswsenwenewwsenwsenweswswene +swswswswswswswswswswswswsweeswnwsesww +swwswswswswneswswwswswswwswwwsw +swnwseswswswswswwswswwswswswswswswswsw +nwnenwnenenwswneneneneswnwneenenwnwnenwnene +nwnwwnwnwwsenenwnwnwnwnwwnwwsenwsenw +seseeesesesesesesesenewseeewsewse +swswswenwneneeeenwneenwnwsenene +seseswsewesesesesewseswsenweenwsese +eweeeeesweeenweeeeseee +eseswseswsenwswseswseswswswsw +ewnwwnewnwwnewnwswswnwsenwwnwwwwe +esesenweseseseseswseseseneseseesesenwse +wsweswswwweswwwswswswwwewwswnw +nwnenwnwnwneenenenwnwwnwnwnwnenwwene +seewsweesenwnwwsee +swneswwwswnwenwewswnenwwswseewswswe +eeeeeeeeeeeeseeenwee +sesweeeeseenwenw +wswswswwswwnewseenwswnewswswswswwsw +seswseswneswnwnenwse +senenwswswsenwswseswsenwneeseseswseswse +nwswswswseswneswswseswseseseeswsenesesw +weweswwwswnwwwseswwwnewwnwwsw +neeneeneswneeeeeeneneeneenweene +nwnesenesenwseesewseseseseswesenwew +sesesesesenwnweswweseeeswseneeese +wnwwwewswwwwswewwswwwwnwwww +wswwwswswewwnwwswswswwwswwswww +eeeeeseseeeeneeweeseeenwee +seeeeseeeseeeeeeesesesenwee +seesesenwwswseseneseseswseseseseseseswsese +newwwwswwswwwswwswweswswswsww +nenwnwswnwnwnwnenwnwnwnenenenenwnwnenenw +wwsewwsenwwnenewwnewsenww +swswswswswswswswseseswneseswswswswseswenwnw +seesenwnenewseseswswswwnwseseesesesese +enweseneeneeseeneeeseeweewwee +eeweeeeeeesesenewnwseseesesese +wswsenesesenesesewseenwswswnenwswnwenenw +eswseswesesenwewswwnewnenweswsese +nenwnwneswnwnwnwnenenwnenenwnwnwnwswnwne +nwnenesenenwwneewnwnwnwwnwnwnwnwsenw +seswseswswseseswswneswswswswswswswswsw +nenwneneenenenwswnenwneswneenwneswnenenene +seswswseseswseseswseseneswswseswswseswse +swswseswnenwswswseswswswswseswseswswswswsw +wswwswswwneswswwsweswswswwswsw +nenenesenenwnesenesenenewnwnenwnwnwswsenw +wneenenwnenesesenewnwswnwenwneswnene +sewenwwwwwwseenwnwnwwwnwswwnwne +ewwneeneneeseeesewneneewnewne +nenenesenesenwwneneswnwnweneswswsenwne +weseeeeseeeneneweseseswsewwnw +nwwwswwswsesewswnwswswswwnweswswe +weswwwewwnwwswwwnwseewwwnw +seswswseswseeseswswnwsewseswswnewswswe +sesenwswesenwswseseseseseswswswswswswswsw +wnwnwesewsesewwswnwnwwewnewwnee +seseeseswwswswseswsw +swwnwenwseneswwneenwnewnwnesewswnesee +nwwnwnwnwsenwnwnewnwnwnw +esesewneseeeeeeesee +senwnesewnwnwnenwwswnwwnenesenwnwsww +seswsewswswesewseseseseseneswswsesesw +neseseswwenewswswswnwswsewsesesenesw +senesenwnwswsesewseseswswseseseseswsee +enenenenewneeeneneneneenenenesenenene +wwwwnwnwnwwnwnwnwewwwnw +wnwenwnwnwnwswnwsenwseswwenweenwnwsw +nwnwnwnwenwnwnwnenewnwnwnenwnwnwnwnwnw +seseseenwswnwswswswswseseswneneseswswwsw +neeenwnenwwwnewnenenwnwnesenenenenw +swsenwwnwseneesweswseneneeeneenwwswse +eeeeeseneneeeneneneneeneweesenwe +ewseeswneewenenweeeweneneeeene +swswswswswseneswwswswseswseseseswseswsee +eeeseseseseseseesenwseeeseseseswsese +nwnenenenenewnenwnenenwneswseenenenenenenw +swsesweseswswsenwswseseswswseseswswnwse +senenenewenenenenenenenewnenenesene +nesewseneswwsweseswneseseseswnesese +nwnwnwnwnwwsenwesenwnwnwnwnwnwnwsenwnwnw +nenwnwwnwnwnwnwnenwnwneenenenenenene +wswwsenwwswswwewnww +wwwnewwswwwwwwsewwwwwswww +wswseseneswewseneswswnwswswsenesenwswe +wnwnwenwwnwnwwswswwwnwnwwsweenwnwnw +wswweswwwswnwswswwwwseewswswwnw +swswwwwnwswsweswwswwswswswswswwsww +neseneneeweneneeneneneneneneneeswnenw +nwswswswswswswswswswsesw +nwnwnenwnwnwswnwnwesenwnwnwnwswnwnwswnenw +neswwswseswseneswswseswswswswswswseswswse +swseswsweswswseseswseseswswswswswswnwsw +swsweswesweneeneswneenwneneneneene +seseseseseswsenwseseseseswsese +swwswwewwnewwneswwswwwnewww +neneeeneneeseenenweeee +enwwwswnwnwnewswswwnwwweeseww +nwneeenenenenesenweseeneeweneswsw +nenenewneneneneneneneeenenenenenenene +seeseseseseneseeeseswenwnweseswnwseee +swneswseswseswsesenewsesenesewenesw +nwnwwwwwnwwewwnwwwwwwsenwnw +swswswwsewswswwswnwwsweswnwswwwww +seswseseswseswneseseenwseswwsw +newnewesewwswsewnw +weseesesewneseseseesenesesesesesewse +eeeeseeeeeneeeenenewe +wswwseswseneswswswswnesweseswnwswswswe +eweeseeeeeeneneeeseeseeseswese +nweenwwnwnwwnwenwnwnwnwwwswwswnwse +wwwnenwnwswwnwwwwwnwnwnwwnwwnenwse +enenenenenewnwnesweseewenenesenee +esewswnwenwwnwnwnwnwnwnwswnwwwwse +eeweneswenenweswnesweneneeneee +wseneeseeesewnwswswnenesewneswee +swneeenenenenenwnenenenenenenenewnesene +nwswswswwswseswswswswnwswswsewwswswsw +neenwnwnwnenwnwnwnwnwnwnenwnww +eeeswenweeeseeeeeseseeeee +swseswswswseseswseswneseseswswswsese +nenwnenenwnwnenenenwswnenwnenwnewnwenene +nwnwseseseswswseswswseswsweswswswseseseswse +swnewwwwswwwwsww +seseseswsweswswswswseswseseswseswswsww +nwnenewnenwnwnenwnwnenenenenenesenenenwnw +nwenwnenwnwsenenesenwnwswnesenwneew +swwswwseswswswswwenenenwsene +swswsweseseseseswseswswseswnwswnwseswsenw +wsesenewnewnwwwnwsewnwsewwwnwww +sewswnenesewswenwsenwswneseeneseswsw +swwnwswnwwnwsenwnwwwnwwenenwwnwew +seseseeseswneeseseswesesesesenwswwne +neneeeesenenwnenweeneswneeweseeene +swwswswswsewwwswwnenweweewsewnwsw +seeswseswseseseswseseseseseseswwswnese +esweseseseseseeseseseeeseseseeseenw +wswwswwswswswnwswswswswew +nwnwnwnwnwnwnwnwnweenwwnwnenwsenwnwswnw +eeenwnenewneeeneeeneeeeswneneee +nwwnwwnesesweswswswwseseneeswsweewsw +neweneneeneneneweneneesenenenenenene +nwwnweswnwnwswewnwewenwewwwnw +seswsesesenwwseswneseseseeseseswse +wnwwwnwwwwnwwwewwwwwwww +enwseseseseswswsesesesesesesesesesesesesw +wnwnwwnwnwewnwwwnwwnwwwswnw +eseswseenwneenewnwnwesewnweswswsw +neseswwswwwswswneeswwnweswseswnwesw +seeseseseeenweseeseseeseeswseeese +nwseeseseweseseseeseseeesewnwsesese +swswswseswnwseseswswnwnwsweswseseswswsesw +wweenwswwnwwwwnwnwnwwnwswnwwne +senwwwnewwwwwwswwnwwnwsewwese +swswswswswswswswwswneswswswswseswswswsw +wswswswswswwswwwsweewwswswswswswsw +neneneneeewseneneneneneeneneneeswne +swswneswnwswswswswseswnwswswswwswesese +swwwwwwswsewwwwwenewwwww +nwswwwnwswnewsenwesenwenwnwnwesene +nenewwwnenwweswswwwseswswswwew +seneseseseswswseseswsesesew +swsenwweswwwnewnwnwenwseswsenwswesene +nwnwnwnwnwnenenwnwnwnwnwnenwnenwnwnwnwse +swswswnwswswseswswsweswsweseswswswsewsw +wwswseseseseswweswseeswseswneswswse +sweseswswsesewseseseswsenwneswnesesesese +nenenwnwnwnesenenwnwnenwnweswnenwnwnene +eseneesesenesewsw +seseseseswswsesesesesesewnwseseswswsenwne +sweenenenweeneenene +swwesweneenweeeeese +wseseswseeseseswseneseswnwswseswwswseswse +nwseseeseseeseeseeeenwewwewe +wswswwseswswwswswswswwwwswnenwwsewsw +seswswnwswseswswswswneswnewsweswnwnwse +seswseseseswseseswsenwswsesesesesesesesw +nwsenenwseenwnenenwneswnwnwnww +nenwwwnwnwwwsewwwnwwnwwnwnwswnwne +eeeenesweenenweeene +eseweswseeesesesesenwwnenwsweeeese +ewwwwwwwsewwwwwwnwnwnwnwww +seswseseswseesesesesesewneswseseswswsw +wwwwwwnwwwwwewwwwswwweww +newnewsewswsewenwnwwswneswewesw +eneswneswsweeenwswnwswnwnwswswswsw +sesenweseeseeeeeeee +swswenwnwnwwenwwswsewneewseeswsesw +wneswwwnewwneswwseswwswswwwnew +swwwswwsewseseneswnwneswwwwnwww +eswnwswnwneenwneneseneseswneneneenenenw +senewnwnwsweneswseeneseeewewswneswe +swnwseseenewnenwnewne +neneneneseeneeneneewneneneee +nwnwnwwnwnwwwwnwnwwnwnwwnwwsenww +swwneeneswswseswwsweneswwsenwswswswsw +neneswnwnenewenwnenenwsenwnenenwnwnw +seeeseseeeseeeesewsesee +wsewswwsewwswnesewwnwwwenenenwnw +esenweseeeseeeeseeeseeesweenw +enweeseseenwsesenweseseswnwse +eewneewwneeneeneneneseneneenene +sesesenwneswwswswneseseseswswswseseswsene +weesenewnwswswswnweswswseswsww +seseseeseswseeseseseseseseswsenenwseese +nwwewswwsenwnwsenwnenwnwnwenenwsenesw +seeeeswenweseeeswneswswenwswnwwne +swswsenwseenwsenwnenesewnwwene +eeeeeenweeeeeneseseeeewsese +nwenwwnwnwnwwnwswwwnwwnwwnwnwwwe +nwsenenesenwneeneswnwwnwneseewsewse +swwsenwnenwnwnwsenewsenwsenenwewnenese +wwwwewwnwwwwwwww +neneneneneeneenwneneeneneneeneswnene +senesesesesesesenesesesesesesesesewsesw +enwwswwnewswenewsewsenew +nenesenwwseneneseneneneswnenenenewwnenenw +eeeeeeeesweeeeeseeeeneenw +nwnwwnewesewswsweewwwswneesene +seseeseseeeseewseseeseseseneseee +swenwnenwnwsesewswswnwnwenwnwnwnwene +weswnwswswseseeeswneeeswenweenene +swseswseswsenwseseseseswswswseswsesesw +eseneeswnwswwneseene +swswnwswswswswnwwwswnesesewswwsesw +eeweewsenweeeeeesenwsee +seneseswswweswswsesewseesw +weeeeseeseseeeeseeeseseseee +nwsenwswnwnwnwnwewnwwnwnwnwnwwnwwew +enwnwswseseeneswseswswnwseswswsese +neswnwnenenwnenwnenenenenwnenenenenenenw +wswswswswnwswswswswswswsweswswswswwwsw +eeeneneeeeeneeesweweeeene +eneswnwneweneesw +wwwesewswswwwswwnwwwwwswwsw +nwnwnwswnenwnwnenwnenenesenwnwnwnwnwnwnw +eeseeweswseeeeeeeseesenesenw +eweeeneneeeneeseeeeneeeneene +neseseseneseesenwsewsenwseseseseswsesesw +swswenwnewnwwwsenwweewsenwweww +neswswswswswswwswswswnwswswswswsweneswswsw diff --git a/day_24/test b/day_24/test new file mode 100644 index 0000000..3dc2f67 --- /dev/null +++ b/day_24/test @@ -0,0 +1,20 @@ +sesenwnenenewseeswwswswwnenewsewsw +neeenesenwnwwswnenewnwwsewnenwseswesw +seswneswswsenwwnwse +nwnwneseeswswnenewneswwnewseswneseene +swweswneswnenwsewnwneneseenw +eesenwseswswnenwswnwnwsewwnwsene +sewnenenenesenwsewnenwwwse +wenwwweseeeweswwwnwwe +wsweesenenewnwwnwsenewsenwwsesesenwne +neeswseenwwswnwswswnw +nenwswwsewswnenenewsenwsenwnesesenew +enewnwewneswsewnwswenweswnenwsenwsw +sweneswneswneneenwnewenewwneswswnese +swwesenesewenwneswnwwneseswwne +enesenwswwswneneswsenwnewswseenwsese +wnwnesenesenenwwnenwsewesewsesesew +nenewswnwewswnenesenwnesewesw +eneswnwswnwsenenwnwnwwseeswneewsenese +neswnwewnwnwseenwseesewsenwsweewe +wseweeenwnesenwwwswnew