Day 13
This commit is contained in:
@@ -5,7 +5,7 @@ import java.util.stream.Collectors
|
|||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
const val INPUT = "/day/12/input.txt"
|
const val DAY12_INPUT = "/day/12/input.txt"
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
val day = Day12()
|
val day = Day12()
|
||||||
@@ -63,7 +63,7 @@ class Day12 {
|
|||||||
|
|
||||||
private fun parsePlantPatterns(): BooleanArray {
|
private fun parsePlantPatterns(): BooleanArray {
|
||||||
val plantPatternRegex = Regex("""([.#]{5}) => ([.#])""")
|
val plantPatternRegex = Regex("""([.#]{5}) => ([.#])""")
|
||||||
val plantPatternIndices = lines(INPUT)
|
val plantPatternIndices = lines(DAY12_INPUT)
|
||||||
.map { plantPatternRegex.matchEntire(it) }
|
.map { plantPatternRegex.matchEntire(it) }
|
||||||
.filter { it != null }
|
.filter { it != null }
|
||||||
.filter { it!!.groupValues[2] == "#" }
|
.filter { it!!.groupValues[2] == "#" }
|
||||||
@@ -74,7 +74,7 @@ class Day12 {
|
|||||||
|
|
||||||
private fun parseInitialState(): BooleanArray {
|
private fun parseInitialState(): BooleanArray {
|
||||||
val initialStateRegex = Regex("""initial state: ([.#]+)""")
|
val initialStateRegex = Regex("""initial state: ([.#]+)""")
|
||||||
return plantsToBooleanArray(lines(INPUT).filter { initialStateRegex.matches(it) }.findFirst()
|
return plantsToBooleanArray(lines(DAY12_INPUT).filter { initialStateRegex.matches(it) }.findFirst()
|
||||||
.map { initialStateRegex.matchEntire(it) }.get().groupValues[1])
|
.map { initialStateRegex.matchEntire(it) }.get().groupValues[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
239
src/main/kotlin/com/basdado/adventofcode/Day13.kt
Normal file
239
src/main/kotlin/com/basdado/adventofcode/Day13.kt
Normal file
@@ -0,0 +1,239 @@
|
|||||||
|
package com.basdado.adventofcode
|
||||||
|
|
||||||
|
import java.lang.IllegalStateException
|
||||||
|
import java.util.stream.Collectors
|
||||||
|
|
||||||
|
const val DAY13_INPUT = "/day/13/input.txt"
|
||||||
|
|
||||||
|
fun main() {
|
||||||
|
val day = Day13()
|
||||||
|
day.puzzle1()
|
||||||
|
day.puzzle2()
|
||||||
|
}
|
||||||
|
|
||||||
|
class Day13 {
|
||||||
|
|
||||||
|
fun puzzle1() {
|
||||||
|
|
||||||
|
val input = getInput()
|
||||||
|
val tracks = parseTracks(input)
|
||||||
|
val carts = parseCarts(input)
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
var tick = 0
|
||||||
|
var sortedCarts = carts.stream().sorted(Comparator.comparing { c: Cart -> c.y }.thenComparing{ c: Cart -> c.x }).collect(Collectors.toList())
|
||||||
|
|
||||||
|
while(colliding(carts) == null) {
|
||||||
|
|
||||||
|
carts[i].move(tracks, tick)
|
||||||
|
|
||||||
|
i++
|
||||||
|
if (i >= sortedCarts.size) {
|
||||||
|
|
||||||
|
// println("Tick $tick")
|
||||||
|
// printTracksAndCarts(tracks, carts)
|
||||||
|
|
||||||
|
tick++
|
||||||
|
sortedCarts = carts.stream().sorted(Comparator.comparing { c: Cart -> c.y }.thenComparing{ c: Cart -> c.x }).collect(Collectors.toList())
|
||||||
|
i = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println(colliding(carts))
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getInput(): List<String> {
|
||||||
|
val rawInput = lines(DAY13_INPUT).collect(Collectors.toList())
|
||||||
|
val lineLength = rawInput.map { it.length }.max()!!
|
||||||
|
return rawInput.map { it + " ".repeat(lineLength - it.length) }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun puzzle2() {
|
||||||
|
|
||||||
|
val input = getInput()
|
||||||
|
val tracks = parseTracks(input)
|
||||||
|
val carts = parseCarts(input).toMutableList()
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
var tick = 0
|
||||||
|
var sortedCarts = carts.stream().sorted(Comparator.comparing { c: Cart -> c.y }.thenComparing{ c: Cart -> c.x }).collect(Collectors.toList())
|
||||||
|
|
||||||
|
while(sortedCarts.size > 1) {
|
||||||
|
|
||||||
|
sortedCarts[i].move(tracks, tick)
|
||||||
|
|
||||||
|
val collision = colliding(sortedCarts)
|
||||||
|
if(collision != null) {
|
||||||
|
sortedCarts.removeIf { c -> c.position() == collision }
|
||||||
|
i -= 2
|
||||||
|
}
|
||||||
|
|
||||||
|
i++
|
||||||
|
if (i >= sortedCarts.size) {
|
||||||
|
|
||||||
|
// println("Tick $tick")
|
||||||
|
// printTracksAndCarts(tracks, carts)
|
||||||
|
|
||||||
|
tick++
|
||||||
|
sortedCarts = sortedCarts.stream().sorted(Comparator.comparing { c: Cart -> c.y }.thenComparing{ c: Cart -> c.x }).collect(Collectors.toList())
|
||||||
|
i = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println(sortedCarts[0].position())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun parseCarts(input: List<String>): List<Cart> {
|
||||||
|
val carts = (0 until input.size).map { y ->
|
||||||
|
(0 until input[y].length)
|
||||||
|
.filter { x -> "v^<>".contains(input[y][x]) }
|
||||||
|
.map { x ->
|
||||||
|
Cart(
|
||||||
|
x, y, when (input[y][x]) {
|
||||||
|
'v' -> Direction.DOWN
|
||||||
|
'^' -> Direction.UP
|
||||||
|
'<' -> Direction.LEFT
|
||||||
|
'>' -> Direction.RIGHT
|
||||||
|
else -> throw IllegalStateException("Not a valid card")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}.flatten()
|
||||||
|
return carts
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun parseTracks(input: List<String>): Array<Array<TrackPart?>> {
|
||||||
|
val tracks = input
|
||||||
|
.map { line ->
|
||||||
|
line.chars().mapToObj { trackPart(it.toChar()) }.toArray { n -> Array<TrackPart?>(n) { null } }
|
||||||
|
}
|
||||||
|
.toTypedArray()
|
||||||
|
return tracks
|
||||||
|
}
|
||||||
|
|
||||||
|
fun printTracksAndCarts(tracks: Array<Array<TrackPart?>>, carts: List<Cart>) {
|
||||||
|
|
||||||
|
(0 until tracks.size).forEach { y ->
|
||||||
|
(0 until tracks[y].size).forEach { x ->
|
||||||
|
val track = tracks[y][x]
|
||||||
|
val cart = carts.find { it.x == x && it.y == y }
|
||||||
|
when {
|
||||||
|
cart != null -> print(cart.direction.char)
|
||||||
|
track != null -> print(track.char)
|
||||||
|
else -> print(" ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
println()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fun trackPart(char: Char): TrackPart? {
|
||||||
|
return if (char == 'v' || char == '^') {
|
||||||
|
TrackPart.VERTICAL
|
||||||
|
} else if (char == '<' || char == '>') {
|
||||||
|
TrackPart.HORIZONTAL
|
||||||
|
} else {
|
||||||
|
TrackPart.values().find { tp -> tp.char == char }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the position of colliding carts (if any) or null otherwise
|
||||||
|
*/
|
||||||
|
fun colliding(carts: List<Cart>): Vector2? {
|
||||||
|
|
||||||
|
val positions = mutableSetOf<Vector2>()
|
||||||
|
for (cart in carts) {
|
||||||
|
val pos = cart.position()
|
||||||
|
if (!positions.contains(pos )) {
|
||||||
|
positions.add(pos )
|
||||||
|
} else {
|
||||||
|
return pos
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
enum class TrackPart(val char: Char) {
|
||||||
|
VERTICAL('|'), HORIZONTAL('-'), TURN_BL_TR('/'), TURN_BR_TL('\\'), INTERSECTION('+')
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class Direction(val char: kotlin.Char) {
|
||||||
|
UP('^'), DOWN('v'), LEFT('<'), RIGHT('>');
|
||||||
|
|
||||||
|
fun turnLeft(): Direction =
|
||||||
|
when(this) {
|
||||||
|
UP -> LEFT
|
||||||
|
DOWN -> RIGHT
|
||||||
|
LEFT -> DOWN
|
||||||
|
RIGHT -> UP
|
||||||
|
}
|
||||||
|
|
||||||
|
fun turnRight(): Direction =
|
||||||
|
when(this) {
|
||||||
|
UP -> RIGHT
|
||||||
|
DOWN -> LEFT
|
||||||
|
LEFT -> UP
|
||||||
|
RIGHT -> DOWN
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum class Turn {
|
||||||
|
RIGHT, LEFT, NONE
|
||||||
|
}
|
||||||
|
|
||||||
|
data class Vector2(val x: Int, val y: Int)
|
||||||
|
|
||||||
|
class Cart(var x: Int, var y: Int, var direction: Direction, var lastIntersectionTurn: Turn = Turn.RIGHT, var lastMoveTick: Int = -1) {
|
||||||
|
fun position() = Vector2(x, y)
|
||||||
|
|
||||||
|
fun move(tracks: Array<Array<TrackPart?>>, tick: Int): Boolean {
|
||||||
|
|
||||||
|
if (lastMoveTick == tick) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
when(direction) {
|
||||||
|
Direction.UP -> y--
|
||||||
|
Direction.DOWN -> y++
|
||||||
|
Direction.LEFT -> x--
|
||||||
|
Direction.RIGHT -> x++
|
||||||
|
}
|
||||||
|
|
||||||
|
direction = when (tracks[y][x]) {
|
||||||
|
TrackPart.TURN_BL_TR -> when(direction) {
|
||||||
|
Direction.UP -> Direction.RIGHT
|
||||||
|
Direction.DOWN -> Direction.LEFT
|
||||||
|
Direction.RIGHT -> Direction.UP
|
||||||
|
Direction.LEFT -> Direction.DOWN
|
||||||
|
}
|
||||||
|
TrackPart.TURN_BR_TL -> when(direction) {
|
||||||
|
Direction.UP -> Direction.LEFT
|
||||||
|
Direction.DOWN -> Direction.RIGHT
|
||||||
|
Direction.RIGHT -> Direction.DOWN
|
||||||
|
Direction.LEFT -> Direction.UP
|
||||||
|
}
|
||||||
|
TrackPart.INTERSECTION -> when(lastIntersectionTurn) {
|
||||||
|
Turn.RIGHT -> {
|
||||||
|
lastIntersectionTurn = Turn.LEFT
|
||||||
|
direction.turnLeft()
|
||||||
|
}
|
||||||
|
Turn.LEFT -> {
|
||||||
|
lastIntersectionTurn = Turn.NONE
|
||||||
|
direction
|
||||||
|
}
|
||||||
|
Turn.NONE -> {
|
||||||
|
lastIntersectionTurn = Turn.RIGHT
|
||||||
|
direction.turnRight()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
null -> throw IllegalStateException("Card got of track!!")
|
||||||
|
else -> direction
|
||||||
|
}
|
||||||
|
|
||||||
|
lastMoveTick = tick
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
6
src/main/resources/day/13/example.txt
Normal file
6
src/main/resources/day/13/example.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/->-\
|
||||||
|
| | /----\
|
||||||
|
| /-+--+-\ |
|
||||||
|
| | | | v |
|
||||||
|
\-+-/ \-+--/
|
||||||
|
\------/
|
||||||
150
src/main/resources/day/13/input.txt
Normal file
150
src/main/resources/day/13/input.txt
Normal file
@@ -0,0 +1,150 @@
|
|||||||
|
/---------\ /-------------------------------\
|
||||||
|
/-+---------+------------------------------\ | |
|
||||||
|
| | |/-----------------------------+------------------------------+-------------------------------+--------------\
|
||||||
|
| | || /------------------------+------------------------------+-\ | |
|
||||||
|
| | || | /------------------+------------------------------+-+-----------------------------+------------\ |
|
||||||
|
/-----+-+---------++----+-----+------------------+------------------------------+-+\ /--+------------+-+------\
|
||||||
|
| | | ||/---+-----+------------------+------------------------------+-++-------------------------+--+-\ | | |
|
||||||
|
/---------+-----+-+---------+++---+-----+------\ | | || | | | | | |
|
||||||
|
| | | | /----+++---+-----+------+-----------+------------------------------+-++-------------------------+--+-+\ | | |
|
||||||
|
| | | | | ||| /-+-----+------+-----------+---------------\ /---+-++-------------------------+--+-++---\ | | |
|
||||||
|
| /-+-----+-+----+----+++-+-+-----+------+-----------+---------\ | | | || | | || | | | |
|
||||||
|
| | | | | | ||| | | | | | /--+-----+----------+---+-++-------------------------+--+-++---+-----+-+--\ |
|
||||||
|
| | | /---+-+----+----+++-+-+-----+------+-----------+------+--+-----+----------+\ | || /----------------+--+\|| | | | | |
|
||||||
|
| | | | | | | ||| | | | | | | | | || | || | | |||| | | | | |
|
||||||
|
| | | | | | | ||| | | | | | /-+--+-----+----------++--+-++---\ | | |||| | | | | |
|
||||||
|
| | | | | | | ||| | | | | |/---+-+--+-----+----------++--+-++---+----+-------\ \--++++---+-----+-+--+---/
|
||||||
|
/+-------+-+-+---+-+----+----+++\| | | | /++---+-+--+-----+----------++--+-++---+----+-------+-----------++++--\| | | |
|
||||||
|
/++-------+-+-+---+-+----+----+++++-+-----+------+----------+++-\ | | | | || | || | | | |||| || | | |
|
||||||
|
||| | | | /-+-+----+----+++++-+-----+------+----------+++-+-+-+-\| | || | || | | | |||| || | | |
|
||||||
|
||| | | | | ^ | | ||||| | | | /-----+++-+-+-+-++\ |/---------++--+-++---+----+-------+-----------++++--++----\| | |
|
||||||
|
||| | | | | | | | ||||| | | | | ||| | | | ||| || || | || | | |/----------++++--++-\ || ^ |
|
||||||
|
||| | | | | \-+----+----+++++-+-----+------+----+-----+/| | | | ||| || /------++--+-++\ | | || |||| || | || | |
|
||||||
|
||| /-+-+-+-+---+--\ | ||||| | | | | | | | | | ||| || | /-++--+-+++--+----+-------++----------++++--++-+--++-+--+----\
|
||||||
|
||| | | | | | | | | ||||| | | | /--+-----+-+-+-+-+-+++----++--+----+-++--+-+++--+----+-------++----------++++--++-+--++-+--+--\ |
|
||||||
|
||| | | | | | |/-+-+----+++++-+-----+------+-+--+----\| | | | | ||| || | | || /+-+++--+----+--\ || |||| || | || | | | |
|
||||||
|
||| | | | | | /++-+-+----+++++-+-----+------+-+--+----++-+-+-+-+-+++----++--+----+-++-++-+++--+---\| | || |||| || | || | | | |
|
||||||
|
||| | | | | | ||| | | ||||| | | | | | || | | | \-+++----++--+----+-++-++-+++--+---++--+----++----------++++--++-+--++-+--/ | |
|
||||||
|
||| | | | | | ||| | | ||||| | /--+------+-+--+----++-+-+-+---+++----++--+----+-++-++-+++--+---++--+----++----------++++--++-+\ || | | |
|
||||||
|
||| | | | | | ||| | | ||||| |/-+--+------+-+--+----++-+-+-+---+++----++--+----+-++\|| ||| | || | || |||| || || || | | |
|
||||||
|
/-+++-----+-+-+-+-+--+++-+-+----+++++-++-+--+------+-+--+----++-+-+-+---+++----++--+--\ | ||||| ||| | || | || |||| || || || | | |
|
||||||
|
| ||| v | | | | ||| | | ||||| || | | | | | || |/+-+---+++----++--+--+-+-+++++-+++-\| || | || |||| || || || | | |
|
||||||
|
| ||| | | | | | ||| | | ||||| || | | | | | || ||| | ||| || | | | \++++-+++-++---++--+----++----------++++--+/ || || | | |
|
||||||
|
| |\+-----+-+-+-+-+--+++-+-+----+++/| || | | | | | ||/+++-+---+++----++--+--+-+--++++-+++-++---++--+----++----------++++--+--++-++-+-----+\|
|
||||||
|
| | | | | | | | ||| | | ||| | || | | /--+-+--+----++++++-+---+++----++--+--+-+--++++-+++-++---++--+----++\ |||| | || || | |||
|
||||||
|
| | | | | | | | ||| | | ||| | || | |/--+--+-+--+----++++++-+---+++----++--+--+-+--++++-+++-++---++--+----+++--\ |||| | || || | |||
|
||||||
|
| | | | | | | | ||| | | ||\-+-++-+--++--+--+-+--+----++++++-+---+++----++--+--+-+--++++-+++-++---++--+----+++--+------++/| | || || | |||
|
||||||
|
| | | |/+-+-+-+--+++-+-+----++--+-++-+-\|| | | | | |||||| | ||| || | | | |||| ||| || || | ||| | || | | || || | |||
|
||||||
|
| | | ||| | | | ||| | | || | || | ||| | | | |/---++++++-+---+++----++--+--+-+--++++-+++-++---++--+----+++--+------++-+--+--++<++-+--\ |||
|
||||||
|
| | | ||| | | | ||| | | || | || | ||| | | | || |||||| | ||| || | | | |||| ||| || || | ||| | || | | || || | | |||
|
||||||
|
| | | ||| | | | ||| | | || | || | ||| /+--+-+--++---++++++\| ||| /++--+--+-+--++++\||| || || | ||| | || | | || || | | |||
|
||||||
|
| | | ||| | | | ||| | | || | ||/+-+++-++--+-+--++---++++++++---+++---+++--+--+-+--++++++++-++---++--+\ ||| | || | | || || | | |||
|
||||||
|
| | | ||| | | | ||| |/+----++--+-++++-+++-++--+-+--++---++++++++---+++---+++\ | | | |||||||| || || || /+++--+--\ || | | || || | | |||
|
||||||
|
| | | /+++-+-+-+--+++-+++----++--+-++++-+++-++--+\| || |||||||| ||| |||| | | | |||||||| || /-++--++--++++--+--+---++-+--+\ || || | | |||
|
||||||
|
| | | |||| | \-+--+++-+++----++--+-++++-+++-++--+++--++---++++++++---+++---++++-+--+-+--/||||||| || | || || |||| | | || | || || || | | |||
|
||||||
|
| | | |||| | | ||| ||| || | |||| ||| || ||| || |||||||| ||| |||| | | | ||||||| || | || || |||| | | || | || || || | | |||
|
||||||
|
\-+-+----++++-+---+--+++-+++----++--+-++++-+++-++--+++--++---++++++++---+++---++++-+--/ | ||||||| || | || || |||| | | || | || || || | | |||
|
||||||
|
| | |||| | | ||| ||| |\--+-++++-+++-++--+++--++---++++++++---+++---++++-+----+---+++++++-++-+-++--++--++++--+--+---++-+--++-++-++-/ | |||
|
||||||
|
| | |||| | | ||| ||| | /+-++++-+++-++--+++--++---++++++++---+++---++++-+----+---+++++++-++-+-++--++--++++--+--+---++-+-\|| || || | |||
|
||||||
|
| | |||| | | ||| ||| | || |||| ||| || ||| || |||||||| ||| |||| |/---+---+++++++-++-+-++--++--++++--+--+-\ || | ||| || || | |||
|
||||||
|
| | /-++++-+--\| ||| ||| | || |||| ||| \+--+++--++---++++++/| ||| /-++++-++---+---+++++++-++-+-++--++--++++--+--+-+-++-+-+++-++-++---\| |||
|
||||||
|
| | | |||| | || ||| ||| | || |||| ||| | ||| || |||||| | /+++-+-++++-++---+---+++++++-++-+-++--++--++++--+--+-+-++-+-+++-++-++--\|| |||
|
||||||
|
| | | |||| | /++--+++-+++----+--++-++++-+++--+--+++--++---++++++-+--++++-+-++++-++---+---+++++++-++-+-++--++\ |||| | | | || | ||| || || ||| |||
|
||||||
|
| | | ||||/+-+++--+++-+++----+--++-++++-+++--+--+++--++---++++++\| |||| | |||| || /-+---+++++++-++\| || ||| |||| | | | || | ||| || || ||| |||
|
||||||
|
| | | |||||| ||| ||| ||| | || |||| ||| | |||/-++---++++++++--++++-+-++++-++\| | ||||||| |||| || ||| |||| | | | || | ||| || || ||| |||
|
||||||
|
| | | |||||| ||| ||| ||| | || |||| |\+--+--++++-++---++++++++--++++-+-++++-++++-+---+++++++-++++-++--+++-++++--+--+-+-++-+-+++-++-+/ ||| |||
|
||||||
|
\-+--+-++++++-+++--+++-+++----+--++-++++-+-+--+--++++-++---+++++/|| |||| | \+++-++++-+---+++/||| |||| || ||| |||| | | | || | ||| || | ||| |||
|
||||||
|
| | |||||| ||| ||| ||| | || |||| | | | ||||/++---+++++-++--++++-+--+++-++++-+---+++-+++-++++-++--+++-++++--+--+-+-++\| ||| || | ||| |||
|
||||||
|
| | |||||| ||| ||| ||| | || |||| | | | ||||||| ||||| || |||| | ||| |||| | ||| ||| |||| || ||| |||| | | | |||| ||| || | ||| |||
|
||||||
|
| | |||||| ||| |||/+++----+--++-++++-+-+--+--+++++++---+++++-++--++++-+--+++-++++-+---+++\||| |||| || |||/++++--+--+-+-++++-+++-++-+---+++\ |||
|
||||||
|
| | |||||| ||| ||||||| | || |||| | | | ||||||| ||||| || |||| | ||| |||| | ||||||| |||| || |||||||| | | | |||| ||| || | |||| |||
|
||||||
|
| | |\++++-+++--++++/|| | || |||| | | | /+++++++---+++++-++--++++-+--+++-++++-+---+++++++-++++-++--++++++++\ | | | |||| ||| || | |||| |||
|
||||||
|
| | | |||| ||| |||| || | || |||| | | | |||||||| ||||| || |||| | ||| |||| | ||||||| |||| ||/-+++++++++-+--+-+-++++-+++-++-+-\ ||^| |||
|
||||||
|
| | | |||| \++--++++-++----+--++-++++-+-+--+-++++++++---+++++-++--++++-+--+++-++++>+---+++++++-++++-+++-++/|||||| | | | |||| ||| || | | |||| |||
|
||||||
|
/--+--+-+-++++--++-\|||| || | || |||| | | | |||||||| ||||| || |||| | ||| |||| | ||||||| |||| ||| || |||||| | | | |||| ||| || | | |||| |||
|
||||||
|
| | | | |||| ^| ||||| || | ||/++++-+-+--+-++++++++---+++++-++-\|||| | ||| |||| | |||||||/++++-+++-++-++++++-+--+-+-++++-+++-++-+-+\|||| |||
|
||||||
|
| | | | |||| || ||||| || | ||||||| | | | |||||||| ||||| |\-+++++-+--+++-++++-+---+++++++++/|| ||| || |||||| | | | |||| ||| || | |||||| |||
|
||||||
|
| | | | |||| || ||||| || | ||||||| | | | |||||||\---+++++-+--+++++-+--+++-++++-+---+++++++++-++-+++-++-++++++-+--+-+-++++-+++-++-+-++++/| |||
|
||||||
|
| | | | |||| || ||||| || | ||||||| | | | ||||||| ||||| | ||||| | ||| |||| | ||||||||| || ||| || |||||| | | | |||| ||| || | |||| | |||
|
||||||
|
| | | | v||| |\-+++++-++----+--+++++++-+-+--+-+++++++----+++++-+--++/|| \--+++-++++-+---+++++++++-++-+++-++-++++++-+--+-+-++++-+++-++-+-+++/ | |||
|
||||||
|
| | | | |||| | ||||| || | ||||||| | | /+-+++++++----+++++-+--++-++----+++-++++-+---+++++++++-++-+++-++-++++++-+--+-+-++++-+++-++-+-+++--+\|||
|
||||||
|
| | /+-+-++++--+-\||||| || | ||||||| | | ||/+++++++----+++++-+--++-++----+++-++++-+---+++++++++-++-+++-++-++++++\| | | |||| ||| || | ||| |||||
|
||||||
|
| | || | |||| | |||||| || /--+--+++++++-+-+-++++++++++----+++++-+--++-++----+++-++++-+--\||||||||| || ||| || |||||||| | | |||| ||| || | ||| |||||
|
||||||
|
| | || | \+++--+-++++++-++-+--+--+++++++-/ | |||||||||| |||||/+--++-++----+++-++++-+--++++++++++-++-+++-++-++++++++\/+-+-++++-+++-++-+\||| |||||
|
||||||
|
| | || | \++--+-++++++-++-+--+--+++++++---+-++++++++++----+++++++--++-/| ||| |||| | |||||||||| || ||| || ||||||||||| | |||| ||| || ||||| |||||
|
||||||
|
| v || | || | |||||| || | | ||||||| | |||||||||| ||\++++--++--+----+++>++++-+--++++++++++-++-+++-++-+++++++++++-+-++++-+++-++-+++++--+++/|
|
||||||
|
| | ||/+---++--+-++++++-++-+--+--+++++++---+-++++++++++----++-++++--++--+----+++-++++-+\ |||||||||| || ||| || ||||||||||| | |||| ||| || ||||| ||| |
|
||||||
|
| | |||| || | ||||\+-++-+--+--+++++++---+-++++++++++----/| |||| || | ||| ||||/++-++++++++++-++-+++-++-+++++++++++\| |||| ||| || ||||| ||| |
|
||||||
|
| | |||| || | |||| | || | | ||||||| | |||||||||| | ||||/-++--+----+++-+++++++-++++++++++\|| ||| || ||||||||||||| |||| ||| || ||||| ||| |
|
||||||
|
| | |||| || /+-++++-+-++-+--+--+++++++---+-++++++++++-----+-+++++-++\ | ||| ||||||| ||||||||||||| ||| || ||||||||||||| |||| ||| || ||||| ||| |
|
||||||
|
| | |||| || || |||| | || | | ||||||| | |||||||||| | ||||| ||| | ||| ||||||| ||\++++++++++-+++-/| ||||||||||||| |||| ||| || ||||| ||| |
|
||||||
|
| | |||| || || |||| | || | | ||||||| | |||||||||| | ||||| |||/+----+++-+++++++-++-++++++++++-+++--+-+++++++++++++-++++-+++\|| ||||| ||| |
|
||||||
|
| | |||| || || |||| | || | | |||||||/--+-++++++++++-----+-+++++-+++++----+++-+++++++-++-++++++++++-+++\ | ||||||||||||| |||| |||||| ||||| ||| |
|
||||||
|
| | |||| \+-++-++++-+-++-+--+--++++++++--+-++++++++++-----+-+++/| ||||| ||| ||||||| || |||||||||| |||| | ||||||||||||| |||| |||||| ||||| ||| |
|
||||||
|
| | |||| | || |||| | || | | |\++++++--+-++++++++++-----+-+++-+-+++++----/|| ||||||| || \+++++++++-++++-+-+++++++++++++-/||| |||||| ||||| ||| |
|
||||||
|
| | |||| | || |||| | || | | | |||||| | |||||||||| | ||| | |\+++-----++-+++++++-++--+++++++++-++++-+-+++++++++++++--+++-++++++-++++/ ||| |
|
||||||
|
| | |||| | || |||| | || | | | |||||| | |||||||||\-----+-+++-+-+-++/ || ||||||| || |||||||||/++++-+-+++++++++++++\ ||| |||||| |||| ||| |
|
||||||
|
| | |||| | || |||| | || | | | |||||| | ||||||||| | ||| | | || || ||||||| || |||||||||||||| | |||||||||||||| ||| |||||| |||| ||| |
|
||||||
|
| | |||| | || |||| | || | | | |||||| | ||||||||| | ||| |/+-++-----\|| ||||||| || |||||||||||||| | |||||||||||||| ||| |||||| |||| ||| |
|
||||||
|
| | |||| /--+-++-++++-+-++-+--+--+\|||||| | ||||||||| | ||| ||| || ||| ||||||| v| |||||||||||||| | |||\++++++++++-+++-++++/| |||| ||| |
|
||||||
|
| | |||| | | \+-++++-+-++-+--+--++++++++--+-+++++++++------+-+++-+++-/| ||| ||||||| || ||||||||||||||/+-+++-++++++++++-+++-++++-+-++++--\||| |
|
||||||
|
| | |||| | | | |||| | || | | |||\++++--+-+++++++++------+-+++-+++--+-----+++-+++++++-++--+/|||||||||||||| ||| ||||||||||/+++-++++-+-++++-\|||| |
|
||||||
|
| | |||| | | | |||\-+-++-+--/ ||| |||\--+-+++++++++------+-+++-+++--+-----+++-+++++++-++--+-+++++++++++/|| |\+-++++++/||||||| |||| | |||| ||||| |
|
||||||
|
| | |||| | | | ||| | || | ||| ||| | ||||||||| | |\+-+++--+-----+++-+++++++-++--+-+++/||||||| || | | |||||| ||||||| |||| | |||| ||||| |
|
||||||
|
|/-+-++++-+-\| | ||| | || | ||| ||| | ||||||||| | | | ||| | ||| ||||||| || | ||| ||||||| || | | |||||| ||||||| |||| | |||| ||||| |
|
||||||
|
|| | |||| | || | ||| | || | ||| ||| | |||||||\+------+-+-+-+++--+-----+++-++/||\+-++--+-+++-+++++++-++-+-+-++++++-+++++++-++++-+-++++-+++++-/
|
||||||
|
|| | |||| | || | ||| | || | ||| ||| /+-+++++++-+-----\| | | ||| | ||| || ||/+-++--+-+++-+++++++-++-+\| |||||| ||||||| |||| | |||| |||||
|
||||||
|
|| | |||| | || | ||| | || | ||| ||| || ||||||| | || | | ||| | |\+-++-++++-++--+-+++-+++++++-++-+++-++++++-+++++++-++++-+-/||| |||||
|
||||||
|
|| | |||| | |\--+-+++--+-++-+-----+++-+++--++-+++++++-+-----++-+-+-+++--+-----+-+-++-++++-++--+-/|| ||||||| || ||| |||||| ||||||| |||| | ||| |||||
|
||||||
|
|| | |||| | | | ||| | || | ||| ||| || ||\++++-+-----++-+-+-+++--+-----+-+-++-++++-++--+--++-+++++++-++-+++-++/||| ||||||| |||| | ||| |||||
|
||||||
|
|| | |||| | | | ||| | || |/----+++-+++\ || || |||| | || | | ||| | | | || |||| || | || |||||\+-++-+++-++-+++-++++/|| |||| | ||| |||||
|
||||||
|
|| |/++++-+-+---+-+++--+-++-++----+++-++++-++-++-++++-+-----++-+-+-+++--+-\ | | || \+++-++<-+--++-+/||| | || ||| || ||| |||| || |||| | ||| |||||
|
||||||
|
|| |||||| | | | ||| | || || ||| |||| || || |||| | || | | ||| | | | | || ||| || | || | ||| | || ||| || ||| |||| || |||| | ||| |||||
|
||||||
|
|| |||||| | | | ||| | |\-++----+++-++++-++-++-++++-+-----++-+-+-+++--+-+---+-+-++--+++-++--+--++-+-+++-+-++-+++-++-+++-++++-+/ |||| | ||| |||||
|
||||||
|
|| ||||||/+-+---+-+++\ | | || /-+++-++++-++-++-++++-+----\|| | | ||| | | | | || ||| || | || | ||| | || ||| || ||| |||| | |||| | ||| |||||
|
||||||
|
|| |||||||| | | |||| | | || | ||| |||| |\-++-++++-+----+++-+-+-+++--+-+---+-+-++--+++-++--+--++-+-+++-+-++-+++-++-/|| |||| | |||| | ||| |||||
|
||||||
|
|| |||||||| | | |||| | | || | ||| |||| | || \+++-+----+++-+-+-+++--+-+---+-+-++--+++-++--+--++-+-+++-+-++-+++-+/ || |||| | |||| | ||| |||||
|
||||||
|
|| |||||||| | | |||| | | || | ||| |||| | || ||| |/---+++-+<+\||| | | |/+-++--+++-++--+--++-+-+++-+-++-+++-+-\ || |||| | |||| | ||| |||||
|
||||||
|
|| |||||||| | | |||| | | || | ||| |||| | || ||| || ||| | ||||| | | ||| || ||| || | || | ||| | || ||| | | || |||| | |||| | ||| |||||
|
||||||
|
|| |||||||| | | |||| | | || | ||| |||| | || ||| || ||| | ||||| | | ||| || ||| || | || | ||| \-++-+++-+-+-++-++++-+--++++-+--+/| |||||
|
||||||
|
|| \+++++++-+---+-++++-+-+--++--+-+++-++++-+--++--/|| || ||| | ||||| | | ||| || \++-++--+--++-+-+++---++-+++-+-+-++-/||| | /++++-+--+-+-+++++-\
|
||||||
|
|| ||||||| | | |||| | | || | ||| |\++-+--++---++-++---+++-+-+++++--+-+---+++-++---++-++--+--++-+-+++---+/ ||| | | || ||| | ||||| | | | ||||| |
|
||||||
|
|| |||||||/+---+-++++-+-+--++--+-+++-+-++-+--++---++-++---+++-+-+++++--+-+---+++-++---++-++-\| || | ||| | ||| | | || ||| | ||||| | | | ||||| |
|
||||||
|
|| ||||||||| | |||| | | || | ||| | || | || ^| || /-+++-+-+++++--+-+-\ ||| || || || || || | ||| /-+--+++-+-+-++--+++-+-+++++-+-\| | ||||| |
|
||||||
|
|| ||||||||| | |||| | | || | ||| | || | || || || | ||| | ||||| | | | ||| || || || || || | ||| | | ||| | | || ||| | ||||| | || | ||||| |
|
||||||
|
|| ||\++++++---/ |||| | | || | ||| | || | || || || | ||| \-+++++--+-+-+-+++-++---++-++-++--++-+-+++-+-+--++/ | | || ||| | ||||| | || | ||v|| |
|
||||||
|
|| || |||||| ||\+-+-+--++--+-+++-+-++-+--++---++-++-+-+++---+++++--+-+-+-+++-++---++-++-++--++-+-++/ | | || | | || ||| | ||||| | || | ||||| |
|
||||||
|
|| || |||||| || | | | || | ||| | || | || || |\-+-+++---+/||| | | | ||| |\---++-++-++--++-+-++--+-+--++--+-+-++--/|| | ||||| | || | ||||| |
|
||||||
|
|| || |||||| || | | | || | ||| | || | /++---++-+--+-+++---+-+++--+-+-+-+++\| || || || || | || | | || | | || || | ||||| | || | ||||| |
|
||||||
|
|| || |||||| || | | | || | ||| | || | ||| || | | ||| | |\+--+-+-+-/|||| || || || || | || | \--++--+-+-++---++-+-+++++-+-++-+-+/||| |
|
||||||
|
|| \+-++++++-----++-+-+-+--++--+-+++-+-++-+-+++---++-+--+-+++---+-+-+--+-/ | |||| || || || || | || | || | | || || | ||||| | || | | ||| |
|
||||||
|
|| | |||||| || | | | || | ||| | || | ||| || | | ||| | | | | | |||| \+-++-++--++-+-++--+----+/ | | || || | ||||| | || | | ||| |
|
||||||
|
|| | |||||| || | | | || | ||| | || | ||| || | | ||\---+-+-+--+---+--++++-----+-++-++--++-+-++--+----+---+-+-++---++-+-++/|| | || | | ||| |
|
||||||
|
|| \-++++++-----/| | | | || | ||| | || | ||| || | | || | | | | | |||| | || || || | || | | | | |\---++-+-++-++-+-+/ | | ||| |
|
||||||
|
|| |||||| | | | | || | ||| | || | ||| || | | || | | | | | |||| | || || || | || | | | | | || | || || | | | | ||| |
|
||||||
|
/++-----++++++------+-+-+-+--++--+-+++-+-++-+-+++---++-+--+\|| | | | | | |||| | || || || | || | | | | | || | || || | | | | ||| |
|
||||||
|
||| |||||| | | | | || | ||| \-++-+-+++---++-+--++++----+-+-+--+---+--++++-----+-+/ || || | || | | | | | || | || || | | | | ||| |
|
||||||
|
||| |||||| | | | | || /+-+++---++-+-+++---++-+--++++---\| | | | | |||| | | || |\-+-++--+----+---+-+-+----++-+-++-++-+-+--/ | ||| |
|
||||||
|
||| /-++++++------+-+-+-+-\|| || ||| || | ||| || | |||| || | | | | |||\-----+-+--++--/ | || | | | | | || | || || | | | ||| |
|
||||||
|
||| | |||||| | | | | ||| || ||| \+-+-+++---++-+--++++---++-+-+--+---+--+++------+-+--++-----+-++--+<---+---+-+-+----++-+-++-++-/ | | ||| |
|
||||||
|
||| | |||||| | | | | ||| || ||| | | ||| || | |||| || | | \---+--+++------+-+--++-----+-++--+----+---+-+-+----++-+-++-+/ | | ||| |
|
||||||
|
||| | |||||| | | | \-+++-++-+++----+-+-+++---++-+--++++---++-+-+------+--+/| | | || | \+--+----+---+-+-+----++-+-++-/ | | ||| |
|
||||||
|
||| | |||||| | | | ||\-++-+++----/ | ||| |\-+--++++---++-+-+------+--+-+------+-+--++-----+--+--+---<+---+-+-+----++-+-++------+----+-++/ |
|
||||||
|
||| | |||||| | | | || || \++------+-+++---+--+--++++---++-+-+------+--+-+------+-+--++-----+--+--+----+---+-+-+----++-+-+/ | | || |
|
||||||
|
||| | |||||| | | | || || || \-+++---+--+--+++/ ||/+-+------+--+-+------+-+--++-\ | | | | | | | || | | | | || |
|
||||||
|
||| | ||||\+------+-+-+---++--++--++--------+++---+--+--+++----++++-+------+--+-+------+-+--/| | | | | | | | | || | | | | || |
|
||||||
|
||| | ||\+-+------+-/ | |\--++--++--------+++---+--+--+++----++++-+------+--+-+------+-/ | | | | | | | | | || | | | | || |
|
||||||
|
||| | \+-+-+------+---+---+---++--++--------+++---+--+--+++----++++-+------+--+-+------/ | | | | | \---+-+-+----++-+-+-------+----+-/| |
|
||||||
|
||| | | | | | | | || || ||| | | \++----++++-+------/ | | | | | \--+--------+-+-+----/| | | | | | |
|
||||||
|
|\+---+--+-+-+------/ | | \+--++--------+++---+--+---++----/||| | | | | | | \--------+-+-+-----+-+-+-------/ | | |
|
||||||
|
| | | | \-+----------+---+----+--/| ||| | | || ||| | | | | | | | | | | | | | | |
|
||||||
|
| | | | | \---+----+---+--------+++---+--+---++-----+++-+---------+-+------------/ | | | | | | | | | | |
|
||||||
|
| \---+--+---/ | | | ||\---+--+---++-----+++-+---------+-+--------------+---+--------------/ | | \-+-+------------/ | |
|
||||||
|
| | | | | \--------++----+--+---++-----+++-/ \-+--------------+---+----------------/ | | | | |
|
||||||
|
| | | | \------------++----+--+---+/ |\+-------------+--------------/ | | | | | |
|
||||||
|
\-----+--+------------------+-----------------++----+--+---/ \-+-------------+------------------+------------------/ | | | |
|
||||||
|
| \------------------+-----------------++----/ | | | | | \---------------+--/
|
||||||
|
| | || | \-------------+------------------/ | |
|
||||||
|
| | || \--------------------------+---------------------------------------------/ |
|
||||||
|
| | |\----------------------------------+---------------------------------------------------------------/
|
||||||
|
\---------------------/ \-----------------------------------/
|
||||||
Reference in New Issue
Block a user