Day 24 Parts 1 and 2
This commit is contained in:
parent
f109646239
commit
0e55fb96df
5 changed files with 606 additions and 1 deletions
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
My (attempted) solutions to [Advent of Code 2020](https://adventofcode.com/2020) in Elixir.
|
My (attempted) solutions to [Advent of Code 2020](https://adventofcode.com/2020) in Elixir.
|
||||||
|
|
||||||
<img width="978" alt="image" src="https://user-images.githubusercontent.com/498229/102721772-43d60700-4340-11eb-9ccc-baa6479559f8.png">
|
<img width="978" alt="image" src="https://user-images.githubusercontent.com/498229/103093696-6321ac80-463e-11eb-933c-8c6b23d15ee0.png">
|
||||||
|
|
||||||
## Strategy
|
## Strategy
|
||||||
|
|
||||||
|
|
58
day24/README
Normal file
58
day24/README
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
Day 24 Notes
|
||||||
|
|
||||||
|
+--------+
|
||||||
|
| Part 1 |
|
||||||
|
+--------+
|
||||||
|
|
||||||
|
$ elixir day24part1.exs
|
||||||
|
326
|
||||||
|
|
||||||
|
Thoughts:
|
||||||
|
|
||||||
|
Interesting. Need to work out how to implement a hexagonal grid.
|
||||||
|
|
||||||
|
Use Enum.chunk_while to parse the variable-length `e`, `ne`, `s', `sw` etc. input tokens.
|
||||||
|
|
||||||
|
I decided to do it like this: Use x, y coordinates, but horizontally adjacent cells are 2 x units
|
||||||
|
apart. Diagonally adjacent cells are 1 x unit and 1 y unit apart.
|
||||||
|
|
||||||
|
/ \ (0,0)
|
||||||
|
| |
|
||||||
|
/ \ / \ (1, -1)
|
||||||
|
| | |
|
||||||
|
\ / \ /
|
||||||
|
↑
|
||||||
|
(-1, -1)
|
||||||
|
|
||||||
|
Define a tranlation vector for each direction, then we can walk the directions, and take the sum
|
||||||
|
of all the translations.
|
||||||
|
|
||||||
|
Store the black cells in a MapSet, and count them once we're done.
|
||||||
|
|
||||||
|
+--------+
|
||||||
|
| Part 2 |
|
||||||
|
+--------+
|
||||||
|
|
||||||
|
$ elixir day24part2.exs
|
||||||
|
3979
|
||||||
|
|
||||||
|
Thoughts:
|
||||||
|
|
||||||
|
More complicated now, because we actually have to iterate all the black/white cells and their
|
||||||
|
neighbours. Calculating the grid extremities looks complicated due to the hexagonal properties.
|
||||||
|
However, this is very similar to Day 17 Part 2, so I will just adapt that solution for here too:
|
||||||
|
|
||||||
|
1. For all current black squares, check the neighbours to see what its next state should be.
|
||||||
|
- additionally keep track of which white squares we identified.
|
||||||
|
2. As white cells must have a black neighbour to be flipped, we know that it's fine to only
|
||||||
|
check white cells that are next to a black cell. So iterate the white cells we encountered
|
||||||
|
in step 1, and check their neighbours too.
|
||||||
|
|
||||||
|
|
||||||
|
+------------------+
|
||||||
|
| Overall Thoughts |
|
||||||
|
+------------------+
|
||||||
|
|
||||||
|
Let another game of life. 3rd time this year? This one was a bit more interesting due to the
|
||||||
|
hexagonal nature, but part two was almost the same as Day 17. Maybe that's a good reflection
|
||||||
|
on my day 17 implementation, though.
|
53
day24/day24part1.exs
Normal file
53
day24/day24part1.exs
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
defmodule Cell do
|
||||||
|
defstruct [:x, :y]
|
||||||
|
end
|
||||||
|
|
||||||
|
defmodule Day24Part1 do
|
||||||
|
def run do
|
||||||
|
File.read!("input")
|
||||||
|
|> String.split("\n", trim: true)
|
||||||
|
|> Enum.map(&parse_line/1)
|
||||||
|
|> Enum.map(&to_cell/1)
|
||||||
|
|> Enum.reduce(MapSet.new(), fn cell, black ->
|
||||||
|
if MapSet.member?(black, cell) do
|
||||||
|
MapSet.delete(black, cell)
|
||||||
|
else
|
||||||
|
MapSet.put(black, cell)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|> Enum.count()
|
||||||
|
|> IO.puts()
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_line(str) do
|
||||||
|
str
|
||||||
|
|> String.graphemes()
|
||||||
|
|> Enum.chunk_while(
|
||||||
|
nil,
|
||||||
|
fn
|
||||||
|
"n", nil -> {:cont, :north}
|
||||||
|
"s", nil -> {:cont, :south}
|
||||||
|
"e", :north -> {:cont, :northeast, nil}
|
||||||
|
"e", :south -> {:cont, :southeast, nil}
|
||||||
|
"e", nil -> {:cont, :east, nil}
|
||||||
|
"w", :north -> {:cont, :northwest, nil}
|
||||||
|
"w", :south -> {:cont, :southwest, nil}
|
||||||
|
"w", nil -> {:cont, :west, nil}
|
||||||
|
end,
|
||||||
|
fn acc -> {:cont, acc} end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_cell(directions) do
|
||||||
|
Enum.reduce(directions, %Cell{x: 0, y: 0}, &move/2)
|
||||||
|
end
|
||||||
|
|
||||||
|
def move(:east, %Cell{x: x, y: y}), do: %Cell{x: x + 2, y: y}
|
||||||
|
def move(:west, %Cell{x: x, y: y}), do: %Cell{x: x - 2, y: y}
|
||||||
|
def move(:northeast, %Cell{x: x, y: y}), do: %Cell{x: x + 1, y: y + 1}
|
||||||
|
def move(:northwest, %Cell{x: x, y: y}), do: %Cell{x: x - 1, y: y + 1}
|
||||||
|
def move(:southeast, %Cell{x: x, y: y}), do: %Cell{x: x + 1, y: y - 1}
|
||||||
|
def move(:southwest, %Cell{x: x, y: y}), do: %Cell{x: x - 1, y: y - 1}
|
||||||
|
end
|
||||||
|
|
||||||
|
Day24Part1.run()
|
88
day24/day24part2.exs
Normal file
88
day24/day24part2.exs
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
defmodule Cell do
|
||||||
|
defstruct [:x, :y]
|
||||||
|
end
|
||||||
|
|
||||||
|
defmodule Day24Part2 do
|
||||||
|
def run do
|
||||||
|
File.read!("input")
|
||||||
|
|> String.split("\n", trim: true)
|
||||||
|
|> Enum.map(&parse_line/1)
|
||||||
|
|> Enum.reduce(MapSet.new(), fn cell, black ->
|
||||||
|
if MapSet.member?(black, cell) do
|
||||||
|
MapSet.delete(black, cell)
|
||||||
|
else
|
||||||
|
MapSet.put(black, cell)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|> flip_times(100)
|
||||||
|
|> Enum.count()
|
||||||
|
|> IO.puts()
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse_line(str) do
|
||||||
|
str
|
||||||
|
|> String.graphemes()
|
||||||
|
|> Enum.chunk_while(
|
||||||
|
nil,
|
||||||
|
fn
|
||||||
|
"n", nil -> {:cont, :north}
|
||||||
|
"s", nil -> {:cont, :south}
|
||||||
|
"e", :north -> {:cont, :northeast, nil}
|
||||||
|
"e", :south -> {:cont, :southeast, nil}
|
||||||
|
"e", nil -> {:cont, :east, nil}
|
||||||
|
"w", :north -> {:cont, :northwest, nil}
|
||||||
|
"w", :south -> {:cont, :southwest, nil}
|
||||||
|
"w", nil -> {:cont, :west, nil}
|
||||||
|
end,
|
||||||
|
fn acc -> {:cont, acc} end
|
||||||
|
)
|
||||||
|
|> Enum.reduce(%Cell{x: 0, y: 0}, &move/2)
|
||||||
|
end
|
||||||
|
|
||||||
|
def move(:east, %Cell{x: x, y: y}), do: %Cell{x: x + 2, y: y}
|
||||||
|
def move(:west, %Cell{x: x, y: y}), do: %Cell{x: x - 2, y: y}
|
||||||
|
def move(:northeast, %Cell{x: x, y: y}), do: %Cell{x: x + 1, y: y + 1}
|
||||||
|
def move(:northwest, %Cell{x: x, y: y}), do: %Cell{x: x - 1, y: y + 1}
|
||||||
|
def move(:southeast, %Cell{x: x, y: y}), do: %Cell{x: x + 1, y: y - 1}
|
||||||
|
def move(:southwest, %Cell{x: x, y: y}), do: %Cell{x: x - 1, y: y - 1}
|
||||||
|
|
||||||
|
# Below code adapted from Day 17 Part 2
|
||||||
|
|
||||||
|
def flip_times(cells, 0), do: cells
|
||||||
|
def flip_times(cells, count), do: flip_times(flip(cells), count - 1)
|
||||||
|
|
||||||
|
def flip(cells) do
|
||||||
|
{flipped, whites} =
|
||||||
|
Enum.reduce(cells, {MapSet.new(), MapSet.new()}, fn cell, {flipped, whites} ->
|
||||||
|
{black_count, whites} =
|
||||||
|
Enum.reduce(neighbours(cell), {0, whites}, fn neighbour, {black_count, whites} ->
|
||||||
|
if MapSet.member?(cells, neighbour) do
|
||||||
|
{black_count + 1, whites}
|
||||||
|
else
|
||||||
|
{black_count, MapSet.put(whites, neighbour)}
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
flipped =
|
||||||
|
if black_count == 0 or black_count > 2,
|
||||||
|
do: flipped,
|
||||||
|
else: MapSet.put(flipped, cell)
|
||||||
|
|
||||||
|
{flipped, whites}
|
||||||
|
end)
|
||||||
|
|
||||||
|
Enum.reduce(whites, flipped, fn white, flipped ->
|
||||||
|
black_neighbours =
|
||||||
|
white |> neighbours() |> MapSet.new() |> MapSet.intersection(cells) |> Enum.count()
|
||||||
|
|
||||||
|
if black_neighbours == 2, do: MapSet.put(flipped, white), else: flipped
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
def neighbours(cell) do
|
||||||
|
[:east, :west, :northeast, :northwest, :southeast, :southwest]
|
||||||
|
|> Enum.map(&move(&1, cell))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Day24Part2.run()
|
406
day24/input
Normal file
406
day24/input
Normal file
|
@ -0,0 +1,406 @@
|
||||||
|
swsenenwwneeseswswsenwnwenewenwnwse
|
||||||
|
wnewnweswswsenewnenwnwseseweeseswne
|
||||||
|
swwnewwswswswswswswsweeswwwswnwew
|
||||||
|
seeneeenwweenwnweswwseeeee
|
||||||
|
swswseseseswsesesesenwswseswsese
|
||||||
|
seseseneswwnesenwseseswwnenwseenwsesw
|
||||||
|
nwseseswswenwnwswswneseswswseswseswswswnwse
|
||||||
|
enwsenwnewweeeswneenenwesweneswene
|
||||||
|
nwnwnwneswsenenwnwwsenwswnewnee
|
||||||
|
sesewsesenwseeseneseseseswswseswswsese
|
||||||
|
swsenwnwswnwnwneswwnwnenwwwnwnwnenwnw
|
||||||
|
eseswwwwswwwnewwwwwwswnewsww
|
||||||
|
neswenwenwswseenwseeneenweenenee
|
||||||
|
esenwnwwsenwsenenwsenwwnwnwewnwnwwnw
|
||||||
|
nwswesweseseeeeeeeesenese
|
||||||
|
neneeneesewsewswenenwswnw
|
||||||
|
seeneneewneneneneweeneswsenenenee
|
||||||
|
enwwneeeswneeenweseeeeseneenee
|
||||||
|
swwswsesesesewneseseseeseseseseseene
|
||||||
|
nwsewwweswnesewwneseeswwwenwwnw
|
||||||
|
nwnenenenwnwswswwnwwnewneenwnwsenenenwse
|
||||||
|
nwsenwnwnenwsewnenwwwnwnwnwwnwwnww
|
||||||
|
newsenewwwwwwswnwwsesenwwwwwse
|
||||||
|
senweeneeneneeneneeswnenenenewenewe
|
||||||
|
wwnwneswsewnwnenwesenenwneneneneneenene
|
||||||
|
senwnwwwnwnwnwnwnwenenwnwnwswnwnwnwsewnw
|
||||||
|
eenwnenenwseneneneswwneeeseseeseenwne
|
||||||
|
nwswewewneenwsweneeweneneneee
|
||||||
|
swwnwseswswswnweewnwwesw
|
||||||
|
wnwwwwwwwwewwwnw
|
||||||
|
swnenwswnenenwnwnwsewnenwnenenwnwsenenw
|
||||||
|
ewwswswswneswnwwswwwsewwwnwwswsw
|
||||||
|
wwseswneswwwwneswwesenwwwww
|
||||||
|
neswswwenwswswswnwswseswswswswswswewswsw
|
||||||
|
nwswnwswswswswswswseeswswwswswswswswesw
|
||||||
|
senwwswwnwnenesesewwnenwswwnewwwse
|
||||||
|
neneneneeneswsweeneneneneswneeenwsenw
|
||||||
|
swnwneswswwseswswswswswswsweswwsww
|
||||||
|
wsenewewenwwwwnwsenwnweww
|
||||||
|
swnwswswsenwswswnwswswswswsesweswsweesw
|
||||||
|
nenenwnenenenenenwneneswsewnwnwnwsenwnee
|
||||||
|
eseeswnwseneseenweeesenwweenwnwsw
|
||||||
|
eeeswnenenewenenenewneneeeneeese
|
||||||
|
swswswnwseeseswswseseseenwswswse
|
||||||
|
swseneseesewnwwnwsenwnewnewneseww
|
||||||
|
swwwnewwwsenwwnwswwewnenwnesww
|
||||||
|
swseewseeeseeesenwsenesenweeeswe
|
||||||
|
nwnwnwnwweswnwnwnwnwwswnwnwnwnwe
|
||||||
|
nwwnenwnwwnwnwswsenwnwnwwsenesenwnwne
|
||||||
|
seeseseeswseneeeseeseneenweesw
|
||||||
|
wneswnwswnenenenenwnenenenenesenenwnwnw
|
||||||
|
eseseseswewseseweeneeeeswneese
|
||||||
|
nesenenenenenwswnenenwnenwneswnenenenene
|
||||||
|
nwwnwsenwnwnwwnwwnwnwnwesewesenenwnwnw
|
||||||
|
nwnewnwseweneswnwwnw
|
||||||
|
senenesenwneewswewnenenwnenenenwnwne
|
||||||
|
eswwseswwswnwswswwwswswnewswswswsw
|
||||||
|
nenenenwneenenesenwsweseneesweeneene
|
||||||
|
wseneneenewnenenesewnweweneneesw
|
||||||
|
eeeeesenweweeeeneeswnewewene
|
||||||
|
nwneneeswwneseeswneneneneenenenenwnwsee
|
||||||
|
neswseneneenewnewwesweswnee
|
||||||
|
senwweneswwwsenenewnenwseewwsesww
|
||||||
|
nwseneeenwnewsweeeneeeeenenee
|
||||||
|
nwsewnwesweswenwseswneseesese
|
||||||
|
swseneswnwneneseseswswswswswswswswswswsewse
|
||||||
|
nwseneseeseswswswseswesesewswsewwne
|
||||||
|
enwseewsesenwsewnewwnenenenenenwsw
|
||||||
|
swnwwswsenwewswswwsw
|
||||||
|
wwewwwwnwwwnwwewwwwsw
|
||||||
|
nwnewnwnwwnwnwneswnwnwneswsenww
|
||||||
|
wswnewwwswswswwwnewweswwswwse
|
||||||
|
swnwweesenewwnesenesenenwwseneene
|
||||||
|
nwnenwwesenwsewnenwnwwnwnwnwsenw
|
||||||
|
newnwwnwsenwnwnwsewwnewwsewwsew
|
||||||
|
swneseswswswsweswswswwswswsenenewswswsw
|
||||||
|
swsweseswswseseswnweseswwnesesesesesenwsw
|
||||||
|
neneneneneswneeneeewnenewneene
|
||||||
|
sewsenwneswewwnewswwswswwwwswwww
|
||||||
|
eweeeseeesesesesenwese
|
||||||
|
wnwseswnewseneenwweneeswweeesene
|
||||||
|
sesewseseseesesesenwsweesese
|
||||||
|
ewnwnwsesenwnesewewswnwnwneswnwwww
|
||||||
|
nwwwnenesewnwnwwwnwwwsww
|
||||||
|
neswwwnenwseewsesweseeene
|
||||||
|
seseswesenwswseswsese
|
||||||
|
senwweseseseseseswnwseswswswsweeswse
|
||||||
|
swwswswwwwsenenewwweswwnwswswesw
|
||||||
|
eeeenwneenwnewswnenenewswnenenee
|
||||||
|
swwnewswswswswneswswswwsw
|
||||||
|
seeswnewswwwseeenwwswswnew
|
||||||
|
wnwswswswswswneseswswswswwswnesweswswswsw
|
||||||
|
nenwnenwnwnwnwneswnwnwneseneeneswnwwne
|
||||||
|
swneneeeeeesweeeswenweeneenee
|
||||||
|
seseneswnwsweswseswseswsenwse
|
||||||
|
swewewnweeswwswwewsewnwnwnew
|
||||||
|
eeeeweeneeeeeneeneseneswesw
|
||||||
|
wwswwnewwwswwsewnwe
|
||||||
|
wswswwnwswsweswseswsewwsenwnwwnenene
|
||||||
|
neeeeswnewseesesweeseseeneesee
|
||||||
|
nwnwnwnwnwsenenwwnwnwnwwnwnwnenwnwesenw
|
||||||
|
swseseswneswseswnwseswswswsese
|
||||||
|
wwswwwwnwnwnenwnesenwswwnwswnwnenw
|
||||||
|
wwswswseswwswwswswwwne
|
||||||
|
nwnwnwnwwnwseneesewnwnwswweneewesw
|
||||||
|
nesesweeeneeeseseneseseswwseeesese
|
||||||
|
eesweeseenwweeweneeesene
|
||||||
|
seseneseseseswseswsenwewsesewwewese
|
||||||
|
wsweseseenwseseesewneeeesesesenwese
|
||||||
|
wnwnwenweneswnwnenwnwswnwnwnenwwnwsenwnw
|
||||||
|
nwsenenenenwnwnwwnenwnene
|
||||||
|
eeenwnesenwseswsesenwesesweseseswe
|
||||||
|
nwnenwneswnwnwnenwnenenenwnwneswnweswnw
|
||||||
|
weweeeeeeseesenwneneweeeee
|
||||||
|
eewsweeenweeeseenweseeswneene
|
||||||
|
swswwswswnwewnewswseeswswswswwwnesw
|
||||||
|
wsewwswnewwneewwwwsewwenewww
|
||||||
|
nwswsesweneenweewweeseeewsewne
|
||||||
|
nwseswseswswswswswswnweswswsweswswswswnwsw
|
||||||
|
senwnwwnenwnwwsewwwnenwsenwsenwnwww
|
||||||
|
swswenwswswsewneswswswwswwnwswenwwsw
|
||||||
|
nwewwwwsewsenwnwswwwnenesewnwnw
|
||||||
|
neeesweseeeeneeesewsewwsenenesesw
|
||||||
|
sewswswswneswneneswneesewswswwnewsenw
|
||||||
|
wsenwneneneneswnewswseswsweswwwswesw
|
||||||
|
seswseseswnwenwswseseseseenenwseseesesesw
|
||||||
|
enwneweeeeeswe
|
||||||
|
seeswesenewneeseenwsewnwsenesenwsew
|
||||||
|
wswwnwswwweneswwswswswswnwwenesw
|
||||||
|
newnwsenenenwenwwwnweneeswnwnwnenenw
|
||||||
|
nenwnwseswseneswseswseeseeseenwwswese
|
||||||
|
newenewswwwwwnwwsesw
|
||||||
|
wsewwwnwwsesewwwwnewnenwsewww
|
||||||
|
seseseswseseswnenwneseseseseswsewseseswnw
|
||||||
|
swswsweswnweswwseswswswswenenwwswsww
|
||||||
|
nwnwnwnwwweswnwwwwnwswenwwnewewnw
|
||||||
|
nenenwnwsenwnenwnwnwnwwnenwnwnw
|
||||||
|
seseseswsesenwsenesewseswseswsesesesenw
|
||||||
|
neeswnwnwswnweeeneneeswneesw
|
||||||
|
nenwsenenenwswnwnenwnenenwnenwnw
|
||||||
|
nwwseseseseswsweenesenwseswseeeseese
|
||||||
|
eneeenewneeeneneneee
|
||||||
|
neeneneswnewnwnwnwnwnwnwnwnwnwnewnenwse
|
||||||
|
wewseeseseenweesenwseseeswsesese
|
||||||
|
wwnwnwwsesewseeewswewnwnwwne
|
||||||
|
wseswwswnwnwsesenweenwnweeswnewswsw
|
||||||
|
eewweeswnesesewweneswnesesenwsw
|
||||||
|
nwnwnwewnwnwwwwnwswnwwnenwse
|
||||||
|
swnwswneswnwseeswseneswsesesesenw
|
||||||
|
sweeeseesenweneeeswseseenwwsenenw
|
||||||
|
nenesenesweswneesewswneeswwwswsww
|
||||||
|
eenesewnwwswsenewwnwnenwsenenwenw
|
||||||
|
swnenwswnenenewnenesenenenenenenwnwenenw
|
||||||
|
seeseseeswneeewseewnwseseseeseee
|
||||||
|
seewwweweeneeseneeneeeenenew
|
||||||
|
nwnwnwneswnwenenwswnwwnwnwnwnesweenwnw
|
||||||
|
swsesweswwswwwneneswswwswswseswnwsw
|
||||||
|
seswswswswsweneneswwseseseseswswseswwse
|
||||||
|
nweeseeeseswneeewesesenenw
|
||||||
|
swwneseseswswswseneswneswseswseseseswswse
|
||||||
|
seneweswnwweseseseeeneswsesesenwse
|
||||||
|
wsesenwswsesweweesesenwswnesewsw
|
||||||
|
eeseeeeeewswenweneesweeee
|
||||||
|
swnwnwswnwnwenwnwnenenwneenwswnwnwnwnwnwnw
|
||||||
|
sesesenesesesesesesesesesesenwsenesewwsese
|
||||||
|
nwnwnwnwnwnwnwnenwnenwnwnesenww
|
||||||
|
nwnwnenwewwswwseewewwswswswwwsw
|
||||||
|
senwwseeseswneswswseswsw
|
||||||
|
nwnweneseseseseseswswswseswseswsesesee
|
||||||
|
seeswenweeeeeseeseeee
|
||||||
|
seswseseswseeenwwnenwesesweseswnwsw
|
||||||
|
seseseseseeseweeeeseesewese
|
||||||
|
swneneenenenwnenenwnenenenw
|
||||||
|
wsewnwnwnwwnwwenw
|
||||||
|
esenweeeeeswenwsee
|
||||||
|
senenwwenwnwwnwswwwnwnweenwnwnwwsw
|
||||||
|
eeeeeeenweseeeese
|
||||||
|
swnwwsewenwsenwewwnwnwnwenwnwwww
|
||||||
|
neneeewswenenesenenenwnwnenewnwnene
|
||||||
|
enwwnwwwwsenwneswnwwwnwnwsewnwwwe
|
||||||
|
sewswswwswseseseseseseseesesenesenwsw
|
||||||
|
eseseswseesewnesesesesenwesesesese
|
||||||
|
seeesenwnwnweewswnewseeneeneswne
|
||||||
|
wwwwwwswseewwwnwsewneswwww
|
||||||
|
nwswwewnenwswnwenenenwwnweeenenwne
|
||||||
|
wwneeeseswseswswnwsesenwneswswnesesw
|
||||||
|
eeeneneneeneeneneeww
|
||||||
|
nenwwwnwsenwnweswwseewnesenwnwnwne
|
||||||
|
nenewneswwwewnewseewwsewsesw
|
||||||
|
neneswneswwsewneesewwnenwneenenese
|
||||||
|
eswenesewwnenwwsewwswneswnwswwne
|
||||||
|
eswenwseeenesesewsweenweseeesenee
|
||||||
|
nwnwnenewnenenwnenwsenenwneneneswenwnw
|
||||||
|
neenenwswneneswnwnwewnwewnenwneesew
|
||||||
|
nenenwnweneneswnwnesenwnenwnwnwse
|
||||||
|
wneseseeswseswswswswesenwnwsesesesenwnw
|
||||||
|
neneeeeneneneneswneenenenenenw
|
||||||
|
wwswnwwneeewwesewwwwwsenwnww
|
||||||
|
nwswswnwseseswswnewswswswswswwswswswe
|
||||||
|
wnwewnwnwneneeseneeesewswneneewse
|
||||||
|
wwsewseewwwnewsenwwwwwesenwnw
|
||||||
|
swwnesenwsenwwnwesenwnenwwnwsewnenwne
|
||||||
|
eeesewswenwsweeewesewnwneese
|
||||||
|
newseswswwswwwsewswsewwswswnewnwsw
|
||||||
|
wnwnwnwwnwenwenweswnwnwswnwnwnwnwnwsw
|
||||||
|
nwenwnenwsesewwwneewwwwwseswnwse
|
||||||
|
sesweeneenwnwswenwwseseneeenwswese
|
||||||
|
weseseesesewsweeenwneneeseeeene
|
||||||
|
swsewswsweseswswswseeewnwseseswsesw
|
||||||
|
eneswnesenewnwnenenwnwnweswwswnwswnee
|
||||||
|
nwswewwseswwsweewseseneesenwnesw
|
||||||
|
eswseseseenwnwsweeesewewnesenwse
|
||||||
|
swswwnwswnwweswnewwwswseswwwswww
|
||||||
|
seenwwneeeeswenwswseeeeenwene
|
||||||
|
swnewwnewwwswswwwswweww
|
||||||
|
swseneseswseswneweseswswesenwne
|
||||||
|
wsewwwwwwnwwwnwnwwwsewnewwe
|
||||||
|
eeeseneswneenweswnwneeneeenwnee
|
||||||
|
nwnenwswsenenenwnwnwnwswnwnwnwnwnwnwesw
|
||||||
|
senwnwwsenenenwnewnwnenwsenwnenenwnwnee
|
||||||
|
neswswswswwneeswswnewsenenwesewswsee
|
||||||
|
nwseeeeeseeswwenweeneseseeeee
|
||||||
|
seseseseswswseswsenwnwewwseseseenesee
|
||||||
|
esweeeenweese
|
||||||
|
eneneneweneneeeseeeneenwe
|
||||||
|
senwnwsesesesewswswswseesesesenenwsesw
|
||||||
|
senewesweswswnwnwswswswswswswsw
|
||||||
|
neseseesewswwsenweswnesesesenwenwsww
|
||||||
|
swnwswswswswswsesesesesenwseswswsw
|
||||||
|
eseweswneeswwsesesewsenwsesesesenese
|
||||||
|
neneenweeeeeesweeeeeenwesesw
|
||||||
|
neeeneeswenwneeswenwe
|
||||||
|
wnesweneseswwseswswwnesewswnwnewne
|
||||||
|
eseweseeneneeeeneeseneswswswsese
|
||||||
|
ewnenwnwneneenenwnwswnwnenwnwnwnesenwnw
|
||||||
|
enewswneneneneneneenewne
|
||||||
|
seswnwswwswswsenenewswnwseneswenenenew
|
||||||
|
enwewwenenweseweeeesweeeswne
|
||||||
|
eneneneeswnwswneenenwneswnenesweeswee
|
||||||
|
wnwnesenwwwnwnenwswwnwwnwwseswnwenw
|
||||||
|
wwnwwwwwwwwswwwsew
|
||||||
|
enwneneneneneneswneeswseneeenwneene
|
||||||
|
sesesesesenwseseeseseseswneseswwswswsenee
|
||||||
|
swneswnwneenesweeneswsweneeneenenwne
|
||||||
|
nwnwnenwnwswnwnwnwsenwnwnenwsenwwsenenese
|
||||||
|
neeneseswseeneweweneweeseeneenw
|
||||||
|
wwswwswnwswneswswwnwseswwwnwswewse
|
||||||
|
wswwswwswswswwweswsww
|
||||||
|
swswswnwneseswswsewswswseseneswnwseeswswse
|
||||||
|
nwwwwnwewwwnwwww
|
||||||
|
swseenenwewnweswsenwswwseseesesese
|
||||||
|
sesewneseseseseseenwneweswseenwswsese
|
||||||
|
nenwnwnenenwswnwnenwnwnenwswneenwseene
|
||||||
|
neswwswsweneswswwswseswswwnewnesww
|
||||||
|
swswseseeseesenwsesesenwnwneseeseese
|
||||||
|
wwnenwnwnwwwwnwsenwwwseweesenw
|
||||||
|
nwenenwnwsewnwnwnwneewnwwswswww
|
||||||
|
nenwsenwswnenwnwswnwneneswnwnwenwnenwnw
|
||||||
|
neneneenenweseewnenene
|
||||||
|
nwwswsenwseseseeenwnwsesenwenwesese
|
||||||
|
swswswswswswswswswswneswsewswse
|
||||||
|
swnwnwnwnesenenewnwnwnwnwnwnee
|
||||||
|
nwswsenesewwswswswneswswswseseseswwe
|
||||||
|
swsweswwwneswenwnwewwwwese
|
||||||
|
ewnewseeseseewseesewseneeenwese
|
||||||
|
neswenwseeeneswnwwnwwnwseewwswnw
|
||||||
|
nwsenwsesenwnwnewneswneseneneeenenesw
|
||||||
|
nenweswnwneswnwwwnwswnwsenenenwnwnwsww
|
||||||
|
eeeeeweswseseseenwnweeneesee
|
||||||
|
seseseseswwneswseswsesesese
|
||||||
|
swwswswswwwnwwwwswwnewwseeswnw
|
||||||
|
eseseswswseswnwseseswsweswswwseweswse
|
||||||
|
nwnwnwnwnwwenwwseswnww
|
||||||
|
neneneneneenwnenenenenwswnene
|
||||||
|
sesewewnenwwnwsenwswnene
|
||||||
|
swsenwsweneneenewewneenwwneewne
|
||||||
|
swnesesesenwseneswnwnenenwnenwswnee
|
||||||
|
seeswnwnwsenenweneneneneneneneneenew
|
||||||
|
wneewsesewsesenenwsenewsewwsenenese
|
||||||
|
nwenwswnwseeswseneseswneseswswseswseswsesw
|
||||||
|
wsweswneswswswswswswswswswswnweswswsw
|
||||||
|
seseeeseeeseewse
|
||||||
|
swnenenwsenwnenwnesewneewneesesenwnwnwne
|
||||||
|
nwenwsewnwnwenenwnenwnwswnwwwnwnwswe
|
||||||
|
nwenwswseswwswseseswsweswswswswseswswne
|
||||||
|
wsweeeneewseweneswnenenwneenenenene
|
||||||
|
swwswswneseseswseswswswswseswneswswsw
|
||||||
|
eweswswnenesenwswenwseneneswneswswnene
|
||||||
|
nwewwnwnwnwenenwswnwsewnwnwswnwnwnw
|
||||||
|
neeneneneneeswnwneeeeeneweenewne
|
||||||
|
seseeseeneseseeseseweseswnwsesesese
|
||||||
|
eeeeewewee
|
||||||
|
swseneseeenwseewnwseswnenwswnwwnww
|
||||||
|
seseneswswsesenwswseseswseseswesese
|
||||||
|
nenenewwswseneeswneswsenenwnesew
|
||||||
|
nesenenenwnenwnenenwnewenenwnwnewene
|
||||||
|
eseseseeeweeneseeeseswsese
|
||||||
|
enwwwwsewwwnenwswsenwnwnwnwnewnwwnw
|
||||||
|
nwwswwswwnenwwwwwwnwneseewsee
|
||||||
|
neneswnenenenenwnenenenesenewenenenene
|
||||||
|
wwwneweswwwswwwwwneswswwsww
|
||||||
|
neneneneneeenenwneneswnenenenene
|
||||||
|
seseseseswseseseseseneseseeneswenwswsese
|
||||||
|
eeeswneswseeseswswseeneeneeenwe
|
||||||
|
nenenwnwnesesenwnenenwnwnwenwswnwwwnwne
|
||||||
|
nwseseseeeseseseeeswnwsese
|
||||||
|
eseseeseenwwseweseseesewseseseee
|
||||||
|
enwneswwsenenenenenenenwwnenesenenenenene
|
||||||
|
nweweswnwwnewwnwnwwnwwnwwswwe
|
||||||
|
wneswswneswswswsewwwswwnwsewswww
|
||||||
|
nwenwswnwnweswseswsweswswswswsw
|
||||||
|
seseseewsenwswnweswsenwew
|
||||||
|
swwwenwnwnwwwwwwnewwnwnwsewwew
|
||||||
|
swnwwsweswsenwsenewenewneseeenese
|
||||||
|
nesenwnwnwnwnenwnwnwnwnwnwsese
|
||||||
|
nenwneenenenenenenenewnenwseswswnenene
|
||||||
|
enweneesesweeeeswenwenwenweeesw
|
||||||
|
wswnwnewwwwswwwnwwseesesww
|
||||||
|
nwwwnenwnwsewewswnweswww
|
||||||
|
swswswswnenweswswswswswswneswswswneswsw
|
||||||
|
nwsewswswswswswswnwweswswswswswswswnesw
|
||||||
|
senwnwnwsenwwwwnwnwnenwnwnw
|
||||||
|
senenewenwsesenesewswsewneseseswswnewne
|
||||||
|
wnwwnwenwwwwnwwnwwwnwnw
|
||||||
|
nweseenwseseseneseesesesenwsesesewsw
|
||||||
|
seseeeseseswnwsesese
|
||||||
|
wwwwnwnwewwwwwswsewwnewww
|
||||||
|
neneeeeeeeeweeene
|
||||||
|
eneneneneneswsenenenweneseeenenwnewne
|
||||||
|
wesenewseswswswseewswnesewseneswsw
|
||||||
|
eseeseesesewseswsesesesewnwsesesee
|
||||||
|
nweenwseseeseneeenewsesewswwse
|
||||||
|
nwnesenwnenwwnwneenwnwnenenenwnwswnwne
|
||||||
|
seseseseseswnenwsesesesesesesesesesenesw
|
||||||
|
neneneneneenenewneneneneneneneswnwwe
|
||||||
|
nwwswnwnenwnwnwsew
|
||||||
|
swwnewwwnwneenwwwwnwsewswwww
|
||||||
|
swswwnwswswwswwswswswse
|
||||||
|
nenenwnwnwneeneneenewnenwnwsenwnwswsw
|
||||||
|
swswswneewsenewswnw
|
||||||
|
newneeeneseeenenwneeeeewneee
|
||||||
|
seswseswnwsewseseswsesesenwswseneseesesesw
|
||||||
|
nenwwnweeswnenwsenenenwwesesenww
|
||||||
|
nwswseswneswswswswswnwswse
|
||||||
|
weseeeseseweeseeseseenenwseseee
|
||||||
|
nwwwwswewswwswsewnwnwnenewewse
|
||||||
|
wwswnewwwwwwwwwwww
|
||||||
|
wnwwnwewswswesenwewnwwwnwnwwwne
|
||||||
|
nenwnwnwnewwnwnwwswnwnwenwnwnwnwsenw
|
||||||
|
nenwnwneswseswswneeneeswnwnwswnwseswnenw
|
||||||
|
senwwseneneeseseesenwwseeswseeeseene
|
||||||
|
senwneenwseenwnwwwneneneenwnwnwnwsew
|
||||||
|
sesweseseswnwswswnwswseseseseeswseseww
|
||||||
|
nwwwnwwenwnwnwnwnwnwnwsewsenwwswew
|
||||||
|
swneswwsewsewseeswswnenwswwwneswnenw
|
||||||
|
enweswneeseswsesweenwneswnwneenwewe
|
||||||
|
ewwswnwwwwwwwnwwenwnwnwwnw
|
||||||
|
nenenwnenwnwnwnwnwnwse
|
||||||
|
swnwsweneswneeesenwswewnwneseeesw
|
||||||
|
eewnwnwseswenwswsewnesesesenwnese
|
||||||
|
nwnenesenesenwwnenwnwnwnwenwnwwnwswnwnw
|
||||||
|
nwseswnwesenwnesee
|
||||||
|
newseswsenwnwsewswneneenewnwwnwne
|
||||||
|
eneneeewenenenwneeeenesw
|
||||||
|
wswswswwneswswwswwsw
|
||||||
|
wswseseswwnwnweenw
|
||||||
|
wwwwwseswwwenesw
|
||||||
|
neenenwenenenwnesenwneenenenwwswnesw
|
||||||
|
swswneswenwswswswwswsesweeswswswsenw
|
||||||
|
sesenenwsenwnenwneswnwnwwswnwnewnewnw
|
||||||
|
nwewwnwnwwwnwswnwenwenwswewnww
|
||||||
|
neeneneneeswneneneneswnenwnenenw
|
||||||
|
nesewewewsesenenenweenenesweswsenw
|
||||||
|
wnwwseswnwwswnweneswewnwnwnwwnwe
|
||||||
|
eeswnweeeeseeseeewneeeenweee
|
||||||
|
wswwswsenewsesewewnewsenwnwwwnw
|
||||||
|
wswesenwnwneswnwe
|
||||||
|
wwwwwnewwwwswnewwsenwnwnw
|
||||||
|
swswsesesesesesenwesesenwse
|
||||||
|
nwnwnwnwswnenwwsenwnwnwwwnenwnwsewnwnw
|
||||||
|
neswswswseswneswseseswnwwswswnwneswswswse
|
||||||
|
wswwwnwnwwnwwsewnenwwwneswwwne
|
||||||
|
seesweeeenesenweeeweeeenwse
|
||||||
|
senwnwnwnwsenwneneswenenwwnenenenenwnenw
|
||||||
|
swneneswwneeswwswwsenwwswnwneswsesw
|
||||||
|
neeswswsweeeneesweeeneeeneeswnw
|
||||||
|
nwnwseesenwwnwnwsesenwneenwnwnwwnwne
|
||||||
|
sewsenwwsesewwseeseeswseeeseesese
|
||||||
|
swneswswswswswnweswswneswswswswsww
|
||||||
|
swneswswswseseswswswwswneseseswswswsenesw
|
||||||
|
eswnwwwswneesewwswwwnwwwwswse
|
||||||
|
nwnenwnwnwnwnwswsenwnwnwswnenwnwnwnwenw
|
||||||
|
eenenwswnwneswsenwswnwnenwswwnenenwsw
|
||||||
|
senwswseseseeeeenw
|
||||||
|
neneneneneswnwnwwnenwnesenweneswnwnese
|
||||||
|
swnwwwswswswwwwseww
|
||||||
|
swsesenwswswnweseseneswswswsesesewswsw
|
||||||
|
nweeeeeneeeseene
|
||||||
|
esesewswsesesewnwsewseewnenwnesene
|
||||||
|
neenwseeweeweswswnwese
|
||||||
|
wnenwnweseneeesenewseeswww
|
||||||
|
nwnwnwnwnwnwnwwnenwnwnwwnwse
|
||||||
|
nwnwseswnwnwwwnwnwnwnenwsenwnwwnenenwnw
|
||||||
|
neewswnenwseseswwnwseseeeseesenweese
|
||||||
|
seswswseswseseswewswwswneseswswseeswnw
|
||||||
|
eeeeeesenwswswenenwneeeewsweswnw
|
Loading…
Reference in a new issue