Compare commits
100 commits
02110dfaeb
...
ef539ad5cb
| Author | SHA1 | Date | |
|---|---|---|---|
| ef539ad5cb | |||
| 656db880ab | |||
| 7b161434a5 | |||
| 013f583944 | |||
| fc5ef5f83f | |||
| ea3b670d49 | |||
| d905dcc32d | |||
| 7f9ed7325a | |||
| ea5c7d369b | |||
| 1c84f82f67 | |||
| 7d9f0ae27f | |||
| 526cb9d2e6 | |||
| 2cecebac87 | |||
| 69269e912b | |||
| 0f36a98331 | |||
| a845a4012a | |||
| 58a871b301 | |||
| 1d6c65d119 | |||
| d8eab92d59 | |||
| 0551bbe9e7 | |||
| 7dfce6e7bc | |||
| 42eb09aeca | |||
| bee5998c2e | |||
| 1d0527fc72 | |||
| c27aa66e04 | |||
| b20880b47c | |||
| 4dcbc0f431 | |||
| 507279b0e9 | |||
| 2cba347a13 | |||
| 3bb9396555 | |||
| 5bf73d5948 | |||
| a126c036f1 | |||
| f0bb869336 | |||
| 2f54858040 | |||
| 82d5566cc5 | |||
| 86aa353f5d | |||
| cfb24fc103 | |||
| 336b032520 | |||
| 13740c7423 | |||
| 16d54ff2e0 | |||
| d69f18f129 | |||
| f1d38c578f | |||
| 5939ba8fd1 | |||
| 3d4c9cb443 | |||
| f047fe1d42 | |||
| b78c0016d8 | |||
| 87ce54f838 | |||
| 2aad8aa38a | |||
| 8f9429148f | |||
| 49aa128a1e | |||
| 6c4b5d1b4a | |||
| d7b9b84b9b | |||
| 2448b7080f | |||
| 6e1ae5ce37 | |||
| 752d8100e0 | |||
| 06c3954fa4 | |||
| d263ba25f3 | |||
| 882113d60c | |||
| d1c48525c6 | |||
| fe14cd24f7 | |||
| 28f5896674 | |||
| 6077454573 | |||
| 840d9d5b67 | |||
| 5cc92903db | |||
| d0c5d60c3e | |||
| d8242fb07f | |||
| 8147a809df | |||
| 9629349421 | |||
| a913369e5b | |||
| c644a5b800 | |||
| 91d075bf1b | |||
| 0fd197c8c8 | |||
| eb1ed9547e | |||
| 45b1acf093 | |||
| 517df15185 | |||
| ca6cd04d57 | |||
| c8b28ef2ef | |||
| 80095f3ee5 | |||
| b57e8e30e8 | |||
| 328ae5cc3b | |||
| b4235a9b34 | |||
| 4188180886 | |||
| 25dbce3ee2 | |||
| e306d68e81 | |||
| 4c238e8f76 | |||
| 034e8a6e15 | |||
| dcdecaec56 | |||
| c7d54cd000 | |||
| 6c7b1ceefa | |||
| 96f0060b43 | |||
| 2805202a0d | |||
| 7539caccea | |||
| e1bec41d1d | |||
| 3f121734af | |||
| e308ed92e9 | |||
| cb8aea3bdd | |||
| 076b93e73a | |||
| 50d4959244 | |||
| 561eb1b4fe | |||
| 5f043c383c |
100 changed files with 19248 additions and 0 deletions
64
2016/d01/ex1/ex1.py
Executable file
64
2016/d01/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,64 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
class Direction(enum.Enum):
|
||||||
|
NORTH = Point(-1, 0)
|
||||||
|
EAST = Point(0, 1)
|
||||||
|
SOUTH = Point(1, 0)
|
||||||
|
WEST = Point(0, -1)
|
||||||
|
|
||||||
|
def left(self) -> "Direction":
|
||||||
|
match self:
|
||||||
|
case Direction.NORTH:
|
||||||
|
return Direction.WEST
|
||||||
|
case Direction.EAST:
|
||||||
|
return Direction.NORTH
|
||||||
|
case Direction.SOUTH:
|
||||||
|
return Direction.EAST
|
||||||
|
case Direction.WEST:
|
||||||
|
return Direction.SOUTH
|
||||||
|
|
||||||
|
def right(self) -> "Direction":
|
||||||
|
match self:
|
||||||
|
case Direction.NORTH:
|
||||||
|
return Direction.EAST
|
||||||
|
case Direction.EAST:
|
||||||
|
return Direction.SOUTH
|
||||||
|
case Direction.SOUTH:
|
||||||
|
return Direction.WEST
|
||||||
|
case Direction.WEST:
|
||||||
|
return Direction.NORTH
|
||||||
|
|
||||||
|
def apply(self, p: Point, n: int = 1) -> Point:
|
||||||
|
dx, dy = self.value
|
||||||
|
return Point(p.x + dx * n, p.y + dy * n)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[tuple[str, int]]:
|
||||||
|
return [((line[0]), int(line[1:])) for line in input.split(", ")]
|
||||||
|
|
||||||
|
pos, dir = Point(0, 0), Direction.NORTH
|
||||||
|
directions = parse(input)
|
||||||
|
for turn, length in directions:
|
||||||
|
dir = dir.left() if turn == "L" else dir.right()
|
||||||
|
pos = dir.apply(pos, length)
|
||||||
|
return abs(pos.x) + abs(pos.y)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d01/ex1/input
Normal file
1
2016/d01/ex1/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
R1, R1, R3, R1, R1, L2, R5, L2, R5, R1, R4, L2, R3, L3, R4, L5, R4, R4, R1, L5, L4, R5, R3, L1, R4, R3, L2, L1, R3, L4, R3, L2, R5, R190, R3, R5, L5, L1, R54, L3, L4, L1, R4, R1, R3, L1, L1, R2, L2, R2, R5, L3, R4, R76, L3, R4, R191, R5, R5, L5, L4, L5, L3, R1, R3, R2, L2, L2, L4, L5, L4, R5, R4, R4, R2, R3, R4, L3, L2, R5, R3, L2, L1, R2, L3, R2, L1, L1, R1, L3, R5, L5, L1, L2, R5, R3, L3, R3, R5, R2, R5, R5, L5, L5, R2, L3, L5, L2, L1, R2, R2, L2, R2, L3, L2, R3, L5, R4, L4, L5, R3, L4, R1, R3, R2, R4, L2, L3, R2, L5, R5, R4, L2, R4, L1, L3, L1, L3, R1, R2, R1, L5, R5, R3, L3, L3, L2, R4, R2, L5, L1, L1, L5, L4, L1, L1, R1
|
||||||
74
2016/d01/ex2/ex2.py
Executable file
74
2016/d01/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,74 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
class Direction(enum.Enum):
|
||||||
|
NORTH = Point(-1, 0)
|
||||||
|
EAST = Point(0, 1)
|
||||||
|
SOUTH = Point(1, 0)
|
||||||
|
WEST = Point(0, -1)
|
||||||
|
|
||||||
|
def left(self) -> "Direction":
|
||||||
|
match self:
|
||||||
|
case Direction.NORTH:
|
||||||
|
return Direction.WEST
|
||||||
|
case Direction.EAST:
|
||||||
|
return Direction.NORTH
|
||||||
|
case Direction.SOUTH:
|
||||||
|
return Direction.EAST
|
||||||
|
case Direction.WEST:
|
||||||
|
return Direction.SOUTH
|
||||||
|
|
||||||
|
def right(self) -> "Direction":
|
||||||
|
match self:
|
||||||
|
case Direction.NORTH:
|
||||||
|
return Direction.EAST
|
||||||
|
case Direction.EAST:
|
||||||
|
return Direction.SOUTH
|
||||||
|
case Direction.SOUTH:
|
||||||
|
return Direction.WEST
|
||||||
|
case Direction.WEST:
|
||||||
|
return Direction.NORTH
|
||||||
|
|
||||||
|
def apply(self, p: Point, n: int = 1) -> Point:
|
||||||
|
dx, dy = self.value
|
||||||
|
return Point(p.x + dx * n, p.y + dy * n)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[tuple[str, int]]:
|
||||||
|
return [((line[0]), int(line[1:])) for line in input.split(", ")]
|
||||||
|
|
||||||
|
def first_repeat(directions: list[tuple[str, int]]) -> Point:
|
||||||
|
pos, dir = Point(0, 0), Direction.NORTH
|
||||||
|
directions = parse(input)
|
||||||
|
seen = {pos}
|
||||||
|
for turn, length in directions:
|
||||||
|
dir = dir.left() if turn == "L" else dir.right()
|
||||||
|
for _ in range(length):
|
||||||
|
pos = dir.apply(pos)
|
||||||
|
if pos in seen:
|
||||||
|
return pos
|
||||||
|
seen.add(pos)
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
directions = parse(input)
|
||||||
|
pos = first_repeat(directions)
|
||||||
|
return abs(pos.x) + abs(pos.y)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d01/ex2/input
Normal file
1
2016/d01/ex2/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
R1, R1, R3, R1, R1, L2, R5, L2, R5, R1, R4, L2, R3, L3, R4, L5, R4, R4, R1, L5, L4, R5, R3, L1, R4, R3, L2, L1, R3, L4, R3, L2, R5, R190, R3, R5, L5, L1, R54, L3, L4, L1, R4, R1, R3, L1, L1, R2, L2, R2, R5, L3, R4, R76, L3, R4, R191, R5, R5, L5, L4, L5, L3, R1, R3, R2, L2, L2, L4, L5, L4, R5, R4, R4, R2, R3, R4, L3, L2, R5, R3, L2, L1, R2, L3, R2, L1, L1, R1, L3, R5, L5, L1, L2, R5, R3, L3, R3, R5, R2, R5, R5, L5, L5, R2, L3, L5, L2, L1, R2, R2, L2, R2, L3, L2, R3, L5, R4, L4, L5, R3, L4, R1, R3, R2, R4, L2, L3, R2, L5, R5, R4, L2, R4, L1, L3, L1, L3, R1, R2, R1, L5, R5, R3, L3, L3, L2, R4, R2, L5, L1, L1, L5, L4, L1, L1, R1
|
||||||
69
2016/d02/ex1/ex1.py
Executable file
69
2016/d02/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,69 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
class Direction(enum.StrEnum):
|
||||||
|
UP = "U"
|
||||||
|
DOWN = "D"
|
||||||
|
LEFT = "L"
|
||||||
|
RIGHT = "R"
|
||||||
|
|
||||||
|
def apply(self, p: Point) -> Point:
|
||||||
|
match self:
|
||||||
|
case Direction.UP:
|
||||||
|
dx, dy = -1, 0
|
||||||
|
case Direction.DOWN:
|
||||||
|
dx, dy = 1, 0
|
||||||
|
case Direction.LEFT:
|
||||||
|
dx, dy = 0, -1
|
||||||
|
case Direction.RIGHT:
|
||||||
|
dx, dy = 0, 1
|
||||||
|
return Point(p.x + dx, p.y + dy)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[list[Direction]]:
|
||||||
|
return [[Direction(c) for c in line] for line in input.splitlines()]
|
||||||
|
|
||||||
|
def enter_code(directions: list[list[Direction]]) -> int:
|
||||||
|
KEYPAD = {
|
||||||
|
Point(-1, -1): 1,
|
||||||
|
Point(-1, 0): 2,
|
||||||
|
Point(-1, 1): 3,
|
||||||
|
Point(0, -1): 4,
|
||||||
|
Point(0, 0): 5,
|
||||||
|
Point(0, 1): 6,
|
||||||
|
Point(1, -1): 7,
|
||||||
|
Point(1, 0): 8,
|
||||||
|
Point(1, 1): 9,
|
||||||
|
}
|
||||||
|
res = 0
|
||||||
|
pos = Point(0, 0)
|
||||||
|
for line in directions:
|
||||||
|
for d in line:
|
||||||
|
new_pos = d.apply(pos)
|
||||||
|
if new_pos not in KEYPAD:
|
||||||
|
continue
|
||||||
|
pos = new_pos
|
||||||
|
res = res * 10 + KEYPAD[pos]
|
||||||
|
return res
|
||||||
|
|
||||||
|
directions = parse(input)
|
||||||
|
return enter_code(directions)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
5
2016/d02/ex1/input
Normal file
5
2016/d02/ex1/input
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
DUURRDRRURUUUDLRUDDLLLURULRRLDULDRDUULULLUUUDRDUDDURRULDRDDDUDDURLDLLDDRRURRUUUDDRUDDLLDDDURLRDDDULRDUDDRDRLRDUULDLDRDLUDDDLRDRLDLUUUDLRDLRUUUDDLUURRLLLUUUUDDLDRRDRDRLDRLUUDUDLDRUDDUDLLUUURUUDLULRDRULURURDLDLLDLLDUDLDRDULLDUDDURRDDLLRLLLLDLDRLDDUULRDRURUDRRRDDDUULRULDDLRLLLLRLLLLRLURRRLRLRDLULRRLDRULDRRLRURDDLDDRLRDLDRLULLRRUDUURRULLLRLRLRRUDLRDDLLRRUDUDUURRRDRDLDRUDLDRDLUUULDLRLLDRULRULLRLRDRRLRLULLRURUULRLLRRRDRLULUDDUUULDULDUDDDUDLRLLRDRDLUDLRLRRDDDURUUUDULDLDDLDRDDDLURLDRLDURUDRURDDDDDDULLDLDLU
|
||||||
|
LURLRUURDDLDDDLDDLULRLUUUDRDUUDDUDLDLDDLLUDURDRDRULULLRLDDUDRRDRUDLRLDDDURDUURLUURRLLDRURDRLDURUDLRLLDDLLRDRRLURLRRUULLLDRLULURULRRDLLLDLDLRDRRURUUUDUDRUULDLUDLURLRDRRLDRUDRUDURLDLDDRUULDURDUURLLUDRUUUUUURRLRULUDRDUDRLLDUDUDUULURUURURULLUUURDRLDDRLUURDLRULDRRRRLRULRDLURRUULURDRRLDLRUURUDRRRDRURRLDDURLUDLDRRLDRLLLLRDUDLULUDRLLLDULUDUULLULLRLURURURDRRDRUURDULRDDLRULLLLLLDLLURLRLLRDLLRLUDLRUDDRLLLDDUDRLDLRLDUDU
|
||||||
|
RRDDLDLRRUULRDLLURLRURDLUURLLLUUDDULLDRURDUDRLRDRDDUUUULDLUDDLRDULDDRDDDDDLRRDDDRUULDLUDUDRRLUUDDRUDLUUDUDLUDURDURDLLLLDUUUUURUUURDURUUUUDDURULLDDLDLDLULUDRULULULLLDRLRRLLDLURULRDLULRLDRRLDDLULDDRDDRURLDLUULULRDRDRDRRLLLURLLDUUUDRRUUURDLLLRUUDDDULRDRRUUDDUUUDLRRURUDDLUDDDUDLRUDRRDLLLURRRURDRLLULDUULLURRULDLURRUURURRLRDULRLULUDUULRRULLLDDDDURLRRRDUDULLRRDURUURUUULUDLDULLUURDRDRRDURDLUDLULRULRLLURULDRUURRRRDUDULLLLLRRLRUDDUDLLURLRDDLLDLLLDDUDDDDRDURRL
|
||||||
|
LLRURUDUULRURRUDURRDLUUUDDDDURUUDLLDLRULRUUDUURRLRRUDLLUDLDURURRDDLLRUDDUDLDUUDDLUUULUUURRURDDLUDDLULRRRUURLDLURDULULRULRLDUDLLLLDLLLLRLDLRLDLUULLDDLDRRRURDDRRDURUURLRLRDUDLLURRLDUULDRURDRRURDDDDUUUDDRDLLDDUDURDLUUDRLRDUDLLDDDDDRRDRDUULDDLLDLRUDULLRRLLDUDRRLRURRRRLRDUDDRRDDUUUDLULLRRRDDRUUUDUUURUULUDURUDLDRDRLDLRLLRLRDRDRULRURLDDULRURLRLDUURLDDLUDRLRUDDURLUDLLULDLDDULDUDDDUDRLRDRUUURDUULLDULUUULLLDLRULDULUDLRRURDLULUDUDLDDRDRUUULDLRURLRUURDLULUDLULLRD
|
||||||
|
UURUDRRDDLRRRLULLDDDRRLDUDLRRULUUDULLDUDURRDLDRRRDLRDUUUDRDRRLLDULRLUDUUULRULULRUDURDRDDLDRULULULLDURULDRUDDDURLLDUDUUUULRUULURDDDUUUURDLDUUURUDDLDRDLLUDDDDULRDLRUDRLRUDDURDLDRLLLLRLULRDDUDLLDRURDDUDRRLRRDLDDUDRRLDLUURLRLLRRRDRLRLLLLLLURULUURRDDRRLRLRUURDLULRUUDRRRLRLRULLLLUDRULLRDDRDDLDLDRRRURLURDDURRLUDDULRRDULRURRRURLUURDDDUDLDUURRRLUDUULULURLRDDRULDLRLLUULRLLRLUUURUUDUURULRRRUULUULRULDDURLDRRULLRDURRDDDLLUDLDRRRRUULDDD
|
||||||
73
2016/d02/ex2/ex2.py
Executable file
73
2016/d02/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,73 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
class Direction(enum.StrEnum):
|
||||||
|
UP = "U"
|
||||||
|
DOWN = "D"
|
||||||
|
LEFT = "L"
|
||||||
|
RIGHT = "R"
|
||||||
|
|
||||||
|
def apply(self, p: Point) -> Point:
|
||||||
|
match self:
|
||||||
|
case Direction.UP:
|
||||||
|
dx, dy = -1, 0
|
||||||
|
case Direction.DOWN:
|
||||||
|
dx, dy = 1, 0
|
||||||
|
case Direction.LEFT:
|
||||||
|
dx, dy = 0, -1
|
||||||
|
case Direction.RIGHT:
|
||||||
|
dx, dy = 0, 1
|
||||||
|
return Point(p.x + dx, p.y + dy)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def parse(input: str) -> list[list[Direction]]:
|
||||||
|
return [[Direction(c) for c in line] for line in input.splitlines()]
|
||||||
|
|
||||||
|
def enter_code(directions: list[list[Direction]]) -> str:
|
||||||
|
KEYPAD = {
|
||||||
|
Point(-2, 2): "1",
|
||||||
|
Point(-1, 1): "2",
|
||||||
|
Point(-1, 2): "3",
|
||||||
|
Point(-1, 3): "4",
|
||||||
|
Point(0, 0): "5",
|
||||||
|
Point(0, 1): "6",
|
||||||
|
Point(0, 2): "7",
|
||||||
|
Point(0, 3): "8",
|
||||||
|
Point(0, 4): "9",
|
||||||
|
Point(1, 1): "A",
|
||||||
|
Point(1, 2): "B",
|
||||||
|
Point(1, 3): "C",
|
||||||
|
Point(2, 2): "D",
|
||||||
|
}
|
||||||
|
letters = []
|
||||||
|
pos = Point(0, 0)
|
||||||
|
for line in directions:
|
||||||
|
for d in line:
|
||||||
|
new_pos = d.apply(pos)
|
||||||
|
if new_pos not in KEYPAD:
|
||||||
|
continue
|
||||||
|
pos = new_pos
|
||||||
|
letters.append(KEYPAD[pos])
|
||||||
|
return "".join(letters)
|
||||||
|
|
||||||
|
directions = parse(input)
|
||||||
|
return enter_code(directions)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
5
2016/d02/ex2/input
Normal file
5
2016/d02/ex2/input
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
DUURRDRRURUUUDLRUDDLLLURULRRLDULDRDUULULLUUUDRDUDDURRULDRDDDUDDURLDLLDDRRURRUUUDDRUDDLLDDDURLRDDDULRDUDDRDRLRDUULDLDRDLUDDDLRDRLDLUUUDLRDLRUUUDDLUURRLLLUUUUDDLDRRDRDRLDRLUUDUDLDRUDDUDLLUUURUUDLULRDRULURURDLDLLDLLDUDLDRDULLDUDDURRDDLLRLLLLDLDRLDDUULRDRURUDRRRDDDUULRULDDLRLLLLRLLLLRLURRRLRLRDLULRRLDRULDRRLRURDDLDDRLRDLDRLULLRRUDUURRULLLRLRLRRUDLRDDLLRRUDUDUURRRDRDLDRUDLDRDLUUULDLRLLDRULRULLRLRDRRLRLULLRURUULRLLRRRDRLULUDDUUULDULDUDDDUDLRLLRDRDLUDLRLRRDDDURUUUDULDLDDLDRDDDLURLDRLDURUDRURDDDDDDULLDLDLU
|
||||||
|
LURLRUURDDLDDDLDDLULRLUUUDRDUUDDUDLDLDDLLUDURDRDRULULLRLDDUDRRDRUDLRLDDDURDUURLUURRLLDRURDRLDURUDLRLLDDLLRDRRLURLRRUULLLDRLULURULRRDLLLDLDLRDRRURUUUDUDRUULDLUDLURLRDRRLDRUDRUDURLDLDDRUULDURDUURLLUDRUUUUUURRLRULUDRDUDRLLDUDUDUULURUURURULLUUURDRLDDRLUURDLRULDRRRRLRULRDLURRUULURDRRLDLRUURUDRRRDRURRLDDURLUDLDRRLDRLLLLRDUDLULUDRLLLDULUDUULLULLRLURURURDRRDRUURDULRDDLRULLLLLLDLLURLRLLRDLLRLUDLRUDDRLLLDDUDRLDLRLDUDU
|
||||||
|
RRDDLDLRRUULRDLLURLRURDLUURLLLUUDDULLDRURDUDRLRDRDDUUUULDLUDDLRDULDDRDDDDDLRRDDDRUULDLUDUDRRLUUDDRUDLUUDUDLUDURDURDLLLLDUUUUURUUURDURUUUUDDURULLDDLDLDLULUDRULULULLLDRLRRLLDLURULRDLULRLDRRLDDLULDDRDDRURLDLUULULRDRDRDRRLLLURLLDUUUDRRUUURDLLLRUUDDDULRDRRUUDDUUUDLRRURUDDLUDDDUDLRUDRRDLLLURRRURDRLLULDUULLURRULDLURRUURURRLRDULRLULUDUULRRULLLDDDDURLRRRDUDULLRRDURUURUUULUDLDULLUURDRDRRDURDLUDLULRULRLLURULDRUURRRRDUDULLLLLRRLRUDDUDLLURLRDDLLDLLLDDUDDDDRDURRL
|
||||||
|
LLRURUDUULRURRUDURRDLUUUDDDDURUUDLLDLRULRUUDUURRLRRUDLLUDLDURURRDDLLRUDDUDLDUUDDLUUULUUURRURDDLUDDLULRRRUURLDLURDULULRULRLDUDLLLLDLLLLRLDLRLDLUULLDDLDRRRURDDRRDURUURLRLRDUDLLURRLDUULDRURDRRURDDDDUUUDDRDLLDDUDURDLUUDRLRDUDLLDDDDDRRDRDUULDDLLDLRUDULLRRLLDUDRRLRURRRRLRDUDDRRDDUUUDLULLRRRDDRUUUDUUURUULUDURUDLDRDRLDLRLLRLRDRDRULRURLDDULRURLRLDUURLDDLUDRLRUDDURLUDLLULDLDDULDUDDDUDRLRDRUUURDUULLDULUUULLLDLRULDULUDLRRURDLULUDUDLDDRDRUUULDLRURLRUURDLULUDLULLRD
|
||||||
|
UURUDRRDDLRRRLULLDDDRRLDUDLRRULUUDULLDUDURRDLDRRRDLRDUUUDRDRRLLDULRLUDUUULRULULRUDURDRDDLDRULULULLDURULDRUDDDURLLDUDUUUULRUULURDDDUUUURDLDUUURUDDLDRDLLUDDDDULRDLRUDRLRUDDURDLDRLLLLRLULRDDUDLLDRURDDUDRRLRRDLDDUDRRLDLUURLRLLRRRDRLRLLLLLLURULUURRDDRRLRLRUURDLULRUUDRRRLRLRULLLLUDRULLRDDRDDLDLDRRRURLURDDURRLUDDULRRDULRURRRURLUURDDDUDLDUURRRLUDUULULURLRDDRULDLRLLUULRLLRLUUURUUDUURULRRRUULUULRULDDURLDRRULLRDURRDDDLLUDLDRRRRUULDDD
|
||||||
28
2016/d03/ex1/ex1.py
Executable file
28
2016/d03/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_triple(input: str) -> tuple[int, int, int]:
|
||||||
|
nums = tuple(map(int, input.split()))
|
||||||
|
assert len(nums) == 3
|
||||||
|
return nums
|
||||||
|
|
||||||
|
def parse(input: str) -> list[tuple[int, int, int]]:
|
||||||
|
return [parse_triple(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def is_triangle(x: int, y: int, z: int) -> bool:
|
||||||
|
return (x + y) > z and (x + z) > y and (y + z) > x
|
||||||
|
|
||||||
|
numbers = parse(input)
|
||||||
|
return sum(is_triangle(*t) for t in numbers)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1914
2016/d03/ex1/input
Normal file
1914
2016/d03/ex1/input
Normal file
File diff suppressed because it is too large
Load diff
39
2016/d03/ex2/ex2.py
Executable file
39
2016/d03/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_triple(input: str) -> tuple[int, int, int]:
|
||||||
|
nums = tuple(map(int, input.split()))
|
||||||
|
assert len(nums) == 3
|
||||||
|
return nums
|
||||||
|
|
||||||
|
def parse(input: str) -> list[tuple[int, int, int]]:
|
||||||
|
return [parse_triple(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def is_triangle(x: int, y: int, z: int) -> bool:
|
||||||
|
return (x + y) > z and (x + z) > y and (y + z) > x
|
||||||
|
|
||||||
|
def transpose_triples(
|
||||||
|
numbers: list[tuple[int, int, int]],
|
||||||
|
) -> list[tuple[int, int, int]]:
|
||||||
|
res: list[tuple[int, int, int]] = []
|
||||||
|
for l1, l2, l3 in itertools.batched(numbers, 3):
|
||||||
|
for i in range(3):
|
||||||
|
res.append((l1[i], l2[i], l3[i]))
|
||||||
|
return res
|
||||||
|
|
||||||
|
numbers = parse(input)
|
||||||
|
numbers = transpose_triples(numbers)
|
||||||
|
return sum(is_triangle(*t) for t in numbers)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1914
2016/d03/ex2/input
Normal file
1914
2016/d03/ex2/input
Normal file
File diff suppressed because it is too large
Load diff
39
2016/d04/ex1/ex1.py
Executable file
39
2016/d04/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Room(NamedTuple):
|
||||||
|
name: str
|
||||||
|
sector_id: int
|
||||||
|
checksum: str
|
||||||
|
|
||||||
|
def is_real(self) -> bool:
|
||||||
|
letters = collections.Counter(self.name.replace("-", ""))
|
||||||
|
checksum = sorted(letters.most_common(), key=lambda t: (-t[1], t[0]))[:5]
|
||||||
|
return "".join(c for c, _ in checksum) == self.checksum
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Room":
|
||||||
|
input, checksum = map(lambda s: s.removesuffix("]"), input.split("["))
|
||||||
|
*name, sector_id = input.split("-")
|
||||||
|
return cls("-".join(name), int(sector_id), checksum)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Room]:
|
||||||
|
return [Room.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
rooms = parse(input)
|
||||||
|
return sum(room.sector_id for room in rooms if room.is_real())
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
991
2016/d04/ex1/input
Normal file
991
2016/d04/ex1/input
Normal file
|
|
@ -0,0 +1,991 @@
|
||||||
|
aczupnetwp-dnlgpyrpc-sfye-dstaatyr-561[patyc]
|
||||||
|
jsehsyafy-vqw-ljsafafy-866[nymla]
|
||||||
|
tyepcyletzylw-ncjzrpytn-prr-opawzjxpye-743[cnrdl]
|
||||||
|
foadouwbu-qvcqczohs-obozmgwg-662[lamjh]
|
||||||
|
ckgvutofkj-pkrrehkgt-zkinturume-436[krtue]
|
||||||
|
pelbtravp-pnaql-ernpdhvfvgvba-481[szram]
|
||||||
|
yflexwxoalrp-ciltbo-tlohpelm-887[bmwep]
|
||||||
|
ipvohghykvbz-ihzrla-jbzavtly-zlycpjl-253[lzhvy]
|
||||||
|
cybyjqho-whqtu-rqiauj-fkhsxqiydw-322[syzwi]
|
||||||
|
tipfxvezt-sleep-tljkfdvi-jvimztv-425[tveif]
|
||||||
|
ktiaaqnqml-xtiabqk-oziaa-xczkpiaqvo-616[aiqko]
|
||||||
|
ckgvutofkj-xghhoz-gtgreyoy-306[nyhpz]
|
||||||
|
molgbzqfib-zovldbkfz-zxkav-lmboxqflkp-341[xlomg]
|
||||||
|
ikhcxvmbex-vtgwr-vhtmbgz-mxvaghehzr-111[hvgmx]
|
||||||
|
dpssptjwf-fhh-tfswjdft-805[fstdh]
|
||||||
|
oaddaeuhq-otaoaxmfq-qzsuzqqduzs-534[qadou]
|
||||||
|
dzczkrip-xiruv-sleep-drerxvdvek-685[erdvi]
|
||||||
|
jvsvymbs-yhiipa-vwlyhapvuz-149[zfyqn]
|
||||||
|
nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-853[sjnfy]
|
||||||
|
mbiyqoxsm-lsyrkjkbnyec-nio-wkbuodsxq-614[bkosy]
|
||||||
|
jchipqat-uadltg-hidgpvt-375[kcnop]
|
||||||
|
jqwpihizlwca-lgm-nqvivkqvo-980[ldeay]
|
||||||
|
xfbqpojafe-dipdpmbuf-tfswjdft-493[fdpbj]
|
||||||
|
kwvacumz-ozilm-kpwkwtibm-lmxtwgumvb-798[mwkbi]
|
||||||
|
eqttqukxg-ejqeqncvg-ocpcigogpv-648[sdtzl]
|
||||||
|
dsxxw-bwc-bcnjmwkclr-678[cwbxd]
|
||||||
|
jvuzbtly-nyhkl-ibuuf-thuhnltlua-175[ulhtb]
|
||||||
|
rdadguja-uadltg-bpgztixcv-401[adgtu]
|
||||||
|
atyzghrk-kmm-ktmotkkxotm-930[xzfpe]
|
||||||
|
uwtojhynqj-ojqqdgjfs-xjwanhjx-151[waqmk]
|
||||||
|
hwdtljsnh-uqfxynh-lwfxx-rfsfljrjsy-567[fhjls]
|
||||||
|
xst-wigvix-gspsvjyp-gerhc-erepcwmw-724[uplfw]
|
||||||
|
kzgwomvqk-jcvvg-zmamizkp-122[kmvzg]
|
||||||
|
sbejpbdujwf-dboez-dpbujoh-dvtupnfs-tfswjdf-623[uxrpz]
|
||||||
|
bxaxipgn-vgpst-rwdrdapit-prfjxhxixdc-609[xpdir]
|
||||||
|
avw-zljyla-zjhclunly-obua-ayhpupun-981[aluyh]
|
||||||
|
nuatmlmdpage-qss-fdmuzuzs-404[btopv]
|
||||||
|
oaddaeuhq-otaoaxmfq-dqoquhuzs-716[aoqdu]
|
||||||
|
myvybpev-cmkfoxqob-rexd-bomosfsxq-432[khwfc]
|
||||||
|
oxaflxzqfsb-zelzlixqb-jxohbqfkd-471[hxkwc]
|
||||||
|
fnjyxwrinm-snuuhknjw-anbnjalq-875[ztvnr]
|
||||||
|
qfmcusbwq-pibbm-fsqswjwbu-922[bqswf]
|
||||||
|
wihmogyl-aluxy-jfumncw-alumm-nluchcha-916[lmuac]
|
||||||
|
oxaflxzqfsb-avb-bkdfkbbofkd-757[trzjy]
|
||||||
|
ksodcbwnsr-qzoggwtwsr-gqojsbusf-vibh-fsgsofqv-818[gsdca]
|
||||||
|
rzvkjiduzy-xcjxjgvoz-gvwjmvojmt-161[zufvq]
|
||||||
|
nwlddtqtpo-mldvpe-dezclrp-639[zlnki]
|
||||||
|
vkppo-rqiauj-huqsgkyiyjyed-530[yijkp]
|
||||||
|
dfcxsqhwzs-qobrm-qcohwbu-fsoqeiwgwhwcb-688[wqbch]
|
||||||
|
vxupkizork-xghhoz-aykx-zkyzotm-462[kzoxh]
|
||||||
|
zotts-jfumncw-alumm-omyl-nymncha-396[bstha]
|
||||||
|
yaxsnlcrun-npp-cajrwrwp-355[nprac]
|
||||||
|
bkwzkqsxq-pvygob-nozkbdwoxd-822[bkodq]
|
||||||
|
frqvxphu-judgh-fdqgb-frdwlqj-hqjlqhhulqj-595[ezyxq]
|
||||||
|
hqtyeqsjylu-sqdto-sedjqydcudj-764[dqjsy]
|
||||||
|
fab-eqodqf-omzpk-fdmuzuzs-430[yxkbc]
|
||||||
|
gpewwmjmih-glsgspexi-xvemrmrk-204[cynzd]
|
||||||
|
kwtwznct-jcvvg-wxmzibqwva-694[cdaps]
|
||||||
|
guahyncw-wuhxs-zchuhwcha-396[xwnmj]
|
||||||
|
pybgmyargtc-zsllw-dglylagle-912[mcrsp]
|
||||||
|
kyelcrga-zyqicr-jyzmpyrmpw-782[yrcmp]
|
||||||
|
wsvsdkbi-qbkno-zvkcdsm-qbkcc-myxdksxwoxd-432[kdsbc]
|
||||||
|
ltpedcxots-rwdrdapit-advxhixrh-271[drtxa]
|
||||||
|
elrkdcdugrxv-sodvwlf-judvv-vklsslqj-465[vdlsj]
|
||||||
|
htwwtxnaj-hfsid-htfynsl-ywfnsnsl-281[ghfea]
|
||||||
|
nij-mywlyn-xsy-xymcah-682[kiasm]
|
||||||
|
zovldbkfz-yrkkv-abmilvjbkq-939[chetn]
|
||||||
|
esyfwlau-kusnwfywj-zmfl-ghwjslagfk-398[fwlsa]
|
||||||
|
lahxpnwrl-yujbcrl-pajbb-mnyuxhvnwc-147[tzcxk]
|
||||||
|
rwcnawjcrxwju-lqxlxujcn-lxwcjrwvnwc-381[hxsdl]
|
||||||
|
pbybeshy-pynffvsvrq-wryylorna-jbexfubc-143[ybfre]
|
||||||
|
lxaaxbren-kdwwh-bqryyrwp-407[sktqh]
|
||||||
|
pybgmyargtc-zyqicr-rpyglgle-106[vsdft]
|
||||||
|
jfifqxov-doxab-yxphbq-obxznrfpfqflk-939[nyvhm]
|
||||||
|
pualyuhapvuhs-jovjvshal-thuhnltlua-383[lrfob]
|
||||||
|
gvcskirmg-tpewxmg-kveww-pskmwxmgw-438[ujily]
|
||||||
|
lgh-kwujwl-tmffq-esfsywewfl-242[fwles]
|
||||||
|
jyddc-fewoix-hitevxqirx-412[ixdec]
|
||||||
|
uzfqdzmfuazmx-otaoaxmfq-ogefayqd-eqdhuoq-222[lbfru]
|
||||||
|
ryexqpqhteki-sxesebqju-tufbeocudj-348[tjzhb]
|
||||||
|
kfg-jvtivk-sleep-wzeretzex-477[ektvz]
|
||||||
|
kzgwomvqk-jcvvg-bmkpvwtwog-174[vgkwm]
|
||||||
|
odiih-kdwwh-uxprbcrlb-251[bdhir]
|
||||||
|
htqtwkzq-xhfajsljw-mzsy-yjhmstqtld-229[thjqs]
|
||||||
|
qjopwxha-xwogap-owhao-914[astye]
|
||||||
|
wrs-vhfuhw-edvnhw-hqjlqhhulqj-439[vufmz]
|
||||||
|
rdggdhxkt-xcitgcpixdcpa-rpcsn-rdpixcv-stktadebtci-609[cdtip]
|
||||||
|
eqttqukxg-fag-eqpvckpogpv-544[jmtpx]
|
||||||
|
kdijqrbu-sqdto-seqjydw-iuhlysui-946[bioht]
|
||||||
|
fydelmwp-awldetn-rcldd-cplnbftdtetzy-951[kpxim]
|
||||||
|
ubhatstkwhnl-unggr-nlxk-mxlmbgz-761[geyqm]
|
||||||
|
ocipgvke-gii-fgxgnqrogpv-726[giopv]
|
||||||
|
fab-eqodqf-otaoaxmfq-iadwetab-430[azmnb]
|
||||||
|
fab-eqodqf-otaoaxmfq-pqhqxabyqzf-456[qafob]
|
||||||
|
xekdwvwnzkqo-zua-naoawnyd-784[anwdk]
|
||||||
|
sbejpbdujwf-fhh-tbmft-285[mbfsn]
|
||||||
|
hwbba-eqpuwogt-itcfg-rncuvke-itcuu-ugtxkegu-648[ugtce]
|
||||||
|
hqcfqwydw-fbqijys-whqii-cqdqwucudj-452[ztesw]
|
||||||
|
dmpuamofuhq-nmewqf-emxqe-742[meqfu]
|
||||||
|
iqmbazulqp-pkq-iadwetab-976[kcxmz]
|
||||||
|
lahxpnwrl-ljwmh-lxjcrwp-bnaerlnb-927[lnrwa]
|
||||||
|
laffe-lruckx-vaxingyotm-306[aflxc]
|
||||||
|
forwcoqhwjs-qcffcgwjs-tzcksf-rsdzcmasbh-220[csfwh]
|
||||||
|
yflexwxoalrp-gbiivybxk-abpfdk-731[sjtrd]
|
||||||
|
foadouwbu-ibghopzs-pogysh-kcfygvcd-506[ogbcd]
|
||||||
|
rtqlgevkng-hnqygt-ugtxkegu-232[zdgob]
|
||||||
|
yrwxefpi-fyrrc-asvowlst-880[jmzfi]
|
||||||
|
tyepcyletzylw-nlyoj-nzletyr-fdpc-epdetyr-795[jfvnq]
|
||||||
|
rkpqxyib-yxphbq-lmboxqflkp-627[vzmla]
|
||||||
|
xjinphzm-bmvyz-hvbizodx-ytz-gjbdnodxn-967[jmuws]
|
||||||
|
ktfitzbgz-vtgwr-inkvatlbgz-813[tgzbi]
|
||||||
|
hqtyeqsjylu-sbqiiyvyut-fbqijys-whqii-vydqdsydw-634[yqisd]
|
||||||
|
hcd-gsqfsh-dzoghwq-ufogg-qcbhowbasbh-506[hgboq]
|
||||||
|
ryexqpqhteki-uww-qdqboiyi-140[qiewy]
|
||||||
|
bkzrrhehdc-qzaahs-cdoknxldms-625[czsmn]
|
||||||
|
sawlkjevaz-lhwopey-cnwoo-yqopkian-oanreya-966[znhlt]
|
||||||
|
xjgjmapg-hdgdovmt-bmvyz-zbb-yzkgjthzio-577[gzbjm]
|
||||||
|
myxcewob-qbkno-lexxi-wkbuodsxq-250[xboek]
|
||||||
|
nsyjwsfyntsfq-hfsid-htfynsl-wjfhvznxnynts-255[umtns]
|
||||||
|
kpvgtpcvkqpcn-ecpfa-ewuvqogt-ugtxkeg-596[ehsca]
|
||||||
|
vkrhzxgbv-cxeeruxtg-ftgtzxfxgm-579[ymast]
|
||||||
|
pbeebfvir-fpniratre-uhag-genvavat-663[smznt]
|
||||||
|
vehmsegxmzi-glsgspexi-hitpscqirx-802[jszht]
|
||||||
|
tyepcyletzylw-nlyoj-nzletyr-cpdplcns-223[lycen]
|
||||||
|
jxdkbqfz-oxaflxzqfsb-avb-lmboxqflkp-523[mzvny]
|
||||||
|
tcfkqcevkxg-tcddkv-uvqtcig-336[cdsln]
|
||||||
|
ide-htrgti-hrpktcvtg-wjci-ldgzhwde-947[tdghi]
|
||||||
|
ojk-nzxmzo-kgvnodx-bmvnn-ozxcijgjbt-213[nojxz]
|
||||||
|
avw-zljyla-msvdly-yljlpcpun-539[lyajp]
|
||||||
|
rdchjbtg-vgpst-rpcsn-rdpixcv-htgkxrth-661[rtcgh]
|
||||||
|
xlrypetn-dnlgpyrpc-sfye-dezclrp-353[pelry]
|
||||||
|
enqvbnpgvir-enoovg-erfrnepu-455[ftlpj]
|
||||||
|
xjinphzm-bmvyz-xviyt-xjvodib-pnzm-oznodib-291[mlybz]
|
||||||
|
rwcnawjcrxwju-kjbtnc-bqryyrwp-511[tkyns]
|
||||||
|
gokzyxsjon-pvygob-nofovyzwoxd-458[ndtfs]
|
||||||
|
bjfutsneji-hfsid-htfynsl-rfwpjynsl-489[fsjnh]
|
||||||
|
ydjuhdqjyedqb-rqiauj-qdqboiyi-452[qdijy]
|
||||||
|
enzcntvat-rtt-genvavat-351[lznyt]
|
||||||
|
rdadguja-qjccn-advxhixrh-791[yncim]
|
||||||
|
fmsledevhsyw-ikk-irkmriivmrk-646[nlxzm]
|
||||||
|
jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-471[oxpbf]
|
||||||
|
jqwpihizlwca-zijjqb-aitma-408[gzpmw]
|
||||||
|
pyknyegle-afmamjyrc-bcqgel-808[gynip]
|
||||||
|
zbytomdsvo-mkxni-bocokbmr-406[obmkc]
|
||||||
|
wfummczcyx-luvvcn-fuvilunils-526[bavmt]
|
||||||
|
hwdtljsnh-gfxpjy-rfsfljrjsy-541[gpszy]
|
||||||
|
lsyrkjkbnyec-oqq-gybucryz-848[ybckq]
|
||||||
|
oaddaeuhq-vqxxknqmz-xasuefuoe-378[rzmqe]
|
||||||
|
vhglnfxk-zktwx-fbebmtkr-zktwx-wrx-vhgmtbgfxgm-813[xepwt]
|
||||||
|
yrwxefpi-gerhc-hitevxqirx-594[eirxh]
|
||||||
|
mvydjvxodqz-xviyt-xjvodib-rjmfncjk-265[cqirj]
|
||||||
|
kdijqrbu-tou-kiuh-juijydw-140[uijdk]
|
||||||
|
ugjjgkanw-usfvq-vwkayf-970[rntsw]
|
||||||
|
froruixo-fdqgb-ilqdqflqj-569[cylni]
|
||||||
|
gpsxdprixkt-hrpktcvtg-wjci-gtprfjxhxixdc-999[xptcg]
|
||||||
|
kwvacumz-ozilm-akidmvomz-pcvb-nqvivkqvo-460[emnrk]
|
||||||
|
pejji-zvkcdsm-qbkcc-domrxyvyqi-484[cdijk]
|
||||||
|
rdadguja-xcitgcpixdcpa-qphzti-bpgztixcv-791[cipad]
|
||||||
|
rkpqxyib-zxkav-zlxqfkd-qoxfkfkd-965[qiftn]
|
||||||
|
bkzrrhehdc-bnmrtldq-fqzcd-atmmx-qdrdzqbg-937[dqrbm]
|
||||||
|
eqttqukxg-rtqlgevkng-dwppa-fgxgnqrogpv-570[gxetc]
|
||||||
|
zbytomdsvo-mkxni-myxdksxwoxd-510[xdmok]
|
||||||
|
ymszqfuo-rxaiqd-dqmocgueufuaz-274[umtwy]
|
||||||
|
pelbtravp-ovbunmneqbhf-qlr-znantrzrag-663[xlyio]
|
||||||
|
rdadguja-ytaanqtpc-gtprfjxhxixdc-141[krcaf]
|
||||||
|
etaqigpke-hnqygt-eqpvckpogpv-362[pegqk]
|
||||||
|
rtqlgevkng-etaqigpke-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-206[gxszf]
|
||||||
|
fubrjhqlf-fkrfrodwh-sxufkdvlqj-777[pozts]
|
||||||
|
wfintfhynaj-wfggny-xjwanhjx-957[nfjwa]
|
||||||
|
xcitgcpixdcpa-bpvctixr-qphzti-gthtpgrw-479[zjlmc]
|
||||||
|
gntmfefwitzx-hfsid-fsfqdxnx-697[oanif]
|
||||||
|
xgjougizobk-jek-jkvgxzsktz-384[kgjzo]
|
||||||
|
nzydfxpc-rclop-mldvpe-cpdplcns-925[pcdln]
|
||||||
|
ltpedcxots-qphzti-gtrtxkxcv-739[txcpd]
|
||||||
|
gvaaz-fhh-mphjtujdt-233[hajtd]
|
||||||
|
jchipqat-rpcsn-gtprfjxhxixdc-297[cpxhi]
|
||||||
|
gsvvswmzi-gerhc-tyvglewmrk-308[zbdcy]
|
||||||
|
dmybmsuzs-omzpk-oamfuzs-pqhqxabyqzf-508[mzqsa]
|
||||||
|
iruzfrtkzmv-treup-tfrkzex-jkfirxv-295[rfktz]
|
||||||
|
pdjqhwlf-mhoobehdq-vwrudjh-127[hdjoq]
|
||||||
|
rgndvtcxr-hrpktcvtg-wjci-apqdgpidgn-375[jdrhb]
|
||||||
|
sbqiiyvyut-isqludwuh-xkdj-efuhqjyedi-114[qjzpn]
|
||||||
|
lahxpnwrl-npp-nwprwnnarwp-459[ontmq]
|
||||||
|
zntargvp-onfxrg-fnyrf-871[fnrga]
|
||||||
|
molgbzqfib-avb-absbilmjbkq-601[bailm]
|
||||||
|
kpvgtpcvkqpcn-tcddkv-wugt-vguvkpi-492[vkpcg]
|
||||||
|
jfifqxov-doxab-zxkav-zlkqxfkjbkq-341[kxfqa]
|
||||||
|
qfmcusbwq-dzoghwq-ufogg-fsqswjwbu-220[zbjty]
|
||||||
|
xjinphzm-bmvyz-mvwwdo-yzkgjthzio-785[zmhij]
|
||||||
|
ejpanjwpekjwh-ydkykhwpa-owhao-186[hqlfd]
|
||||||
|
nzydfxpc-rclop-prr-cplnbftdtetzy-483[pcrtd]
|
||||||
|
kwtwznct-rmttgjmiv-amzdqkma-590[mtakw]
|
||||||
|
muqfedyput-fbqijys-whqii-iqbui-790[gjxky]
|
||||||
|
egdytrixat-rgndvtcxr-rpcsn-jhtg-ithixcv-115[trcgi]
|
||||||
|
fab-eqodqf-rxaiqd-mzmxkeue-404[eqadf]
|
||||||
|
zotts-xsy-guleyncha-708[ymnbi]
|
||||||
|
mbiyqoxsm-pvygob-gybucryz-536[zbyxv]
|
||||||
|
dmybmsuzs-bxmefuo-sdmee-pqhqxabyqzf-716[mbeqs]
|
||||||
|
qspkfdujmf-ezf-fohjoffsjoh-519[fjohs]
|
||||||
|
nwlddtqtpo-prr-xlcvpetyr-249[owkmz]
|
||||||
|
amlqskcp-epybc-aylbw-amyrgle-bctcjmnkclr-808[clabm]
|
||||||
|
qspkfdujmf-qmbtujd-hsbtt-eftjho-727[tigys]
|
||||||
|
pualyuhapvuhs-thnulapj-msvdly-ylzlhyjo-877[lhuya]
|
||||||
|
diozmivodjivg-zbb-nzmqdxzn-629[zdibm]
|
||||||
|
yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-qerekiqirx-126[erixk]
|
||||||
|
qlm-pbzobq-zxkav-zlxqfkd-zrpqljbo-pbosfzb-575[phqza]
|
||||||
|
irgyyolokj-lruckx-aykx-zkyzotm-904[ubkvy]
|
||||||
|
cebwrpgvyr-pnaql-pbngvat-bcrengvbaf-793[bagnp]
|
||||||
|
wlsiayhcw-wifilzof-wuhxs-mylpcwym-630[wilyc]
|
||||||
|
nglmtuex-ktuubm-nlxk-mxlmbgz-215[egtsz]
|
||||||
|
sbejpbdujwf-dboez-nbobhfnfou-883[jpkmo]
|
||||||
|
qzoggwtwsr-qobrm-gsfjwqsg-480[xkwvm]
|
||||||
|
nwzekwypera-oywrajcan-dqjp-wymqeoepekj-472[zeydw]
|
||||||
|
sawlkjevaz-ywjzu-yqopkian-oanreya-836[ayejk]
|
||||||
|
pybgmyargtc-afmamjyrc-rpyglgle-470[zgmsu]
|
||||||
|
nzwzcqfw-qwzhpc-cplnbftdtetzy-977[zctwf]
|
||||||
|
lhkhszqx-fqzcd-okzrshb-fqzrr-cdudknoldms-651[defrs]
|
||||||
|
ugfkmewj-yjsvw-owshgfarwv-tskcwl-wfyafwwjafy-294[wfajs]
|
||||||
|
gpbepvxcv-gpqqxi-stktadebtci-609[npyad]
|
||||||
|
pxtihgbsxw-vahvhetmx-hixktmbhgl-397[pvcfe]
|
||||||
|
guahyncw-vohhs-fiacmncwm-656[chamn]
|
||||||
|
wfruflnsl-uqfxynh-lwfxx-wjfhvznxnynts-463[fnxlw]
|
||||||
|
lzfmdshb-cxd-dmfhmddqhmf-703[dmfhb]
|
||||||
|
gzefmnxq-eomhqzsqd-tgzf-oazfmuzyqzf-118[zfqme]
|
||||||
|
udskkaxawv-usfvq-ugslafy-hmjuzskafy-658[asufk]
|
||||||
|
ugjjgkanw-vqw-ksdwk-112[kwgja]
|
||||||
|
enqvbnpgvir-cynfgvp-tenff-fuvccvat-975[vfnce]
|
||||||
|
fydelmwp-ojp-nfdezxpc-dpcgtnp-353[gziom]
|
||||||
|
fmsledevhsyw-gpewwmjmih-glsgspexi-tyvglewmrk-178[egmsw]
|
||||||
|
shmml-enoovg-freivprf-585[efmor]
|
||||||
|
bnqqnrhud-atmmx-qdrdzqbg-651[qdbmn]
|
||||||
|
pxtihgbsxw-vahvhetmx-nlxk-mxlmbgz-943[xhmbg]
|
||||||
|
xfbqpojafe-dipdpmbuf-tbmft-441[wuizc]
|
||||||
|
zsxyfgqj-uqfxynh-lwfxx-ijxnls-749[futrq]
|
||||||
|
oaddaeuhq-nmewqf-dqmocgueufuaz-508[mwlcv]
|
||||||
|
buzahisl-zjhclunly-obua-zavyhnl-201[kzylj]
|
||||||
|
yhwooebeaz-iwcjapey-oywrajcan-dqjp-zaoecj-524[aejoc]
|
||||||
|
bwx-amkzmb-qvbmzvibqwvit-lgm-zmikycqaqbqwv-772[dubva]
|
||||||
|
oxmeeuruqp-ngzzk-fqotzaxask-638[zaeko]
|
||||||
|
xfbqpojafe-qmbtujd-hsbtt-efwfmpqnfou-363[fbqte]
|
||||||
|
iehepwnu-cnwza-xqjju-nayaerejc-472[eajnc]
|
||||||
|
ytu-xjhwjy-jll-ijxnls-385[moyjn]
|
||||||
|
nvrgfezqvu-treup-tfrkzex-wzeretzex-997[fpvnt]
|
||||||
|
kwvacumz-ozilm-moo-camz-bmabqvo-434[sanvt]
|
||||||
|
lxaaxbren-ouxfna-bjunb-277[abnxu]
|
||||||
|
gpsxdprixkt-uadltg-tcvxcttgxcv-453[txcgd]
|
||||||
|
owshgfarwv-jsttal-hmjuzskafy-658[asfhj]
|
||||||
|
pbafhzre-tenqr-qlr-ynobengbel-403[ebnrl]
|
||||||
|
yaxsnlcrun-mhn-jlzdrbrcrxw-121[wngsc]
|
||||||
|
bgmxkgtmbhgte-vtgwr-vhtmbgz-tgterlbl-995[gtbme]
|
||||||
|
nvrgfezqvu-avccpsvre-tljkfdvi-jvimztv-269[vcefi]
|
||||||
|
apwmeclga-pyzzgr-dglylagle-158[auvsi]
|
||||||
|
qczcftiz-pogysh-rsgwub-350[kcdvs]
|
||||||
|
qlm-pbzobq-gbiivybxk-abpfdk-211[bikpq]
|
||||||
|
crwwv-rkpqxyib-yrkkv-cfkxkzfkd-419[krcfv]
|
||||||
|
sbnqbhjoh-cbtlfu-tupsbhf-285[bhfst]
|
||||||
|
qlm-pbzobq-avb-bkdfkbbofkd-159[golnc]
|
||||||
|
nchhg-jiasmb-lmaqov-902[dpmcw]
|
||||||
|
tagzsrsjvgmk-jsttal-umklgewj-kwjnauw-944[fsqml]
|
||||||
|
rkpqxyib-yxphbq-jxkxdbjbkq-601[npbtf]
|
||||||
|
ujqgywfau-tmffq-hmjuzskafy-736[zmnlk]
|
||||||
|
ujqgywfau-hdsklau-yjskk-umklgewj-kwjnauw-190[kujwa]
|
||||||
|
uqtqbizg-ozilm-jcvvg-lmxizbumvb-850[mhanw]
|
||||||
|
yhtwhnpun-ihzrla-klclsvwtlua-591[lkqzn]
|
||||||
|
sbqiiyvyut-sqdto-seqjydw-sedjqydcudj-738[warvn]
|
||||||
|
bwx-amkzmb-uqtqbizg-ozilm-moo-kwvbiqvumvb-746[wystg]
|
||||||
|
tipfxvezt-vxx-cfxzjkztj-555[xtzfj]
|
||||||
|
cjpibabsepvt-cvooz-sftfbsdi-571[myqsb]
|
||||||
|
ymszqfuo-fab-eqodqf-pkq-xmnadmfadk-274[tkbds]
|
||||||
|
wlqqp-treup-tfrkzex-jkfirxv-581[refkp]
|
||||||
|
lnkfaypeha-fahhuxawj-wjwhuoeo-550[ahwef]
|
||||||
|
lsyrkjkbnyec-oqq-ckvoc-874[azsyv]
|
||||||
|
gvcskirmg-fewoix-wlmttmrk-360[mgikr]
|
||||||
|
irdgrxzex-tipfxvezt-treup-tfrkzex-cfxzjkztj-607[txzer]
|
||||||
|
avw-zljyla-zjhclunly-obua-yljlpcpun-617[lajuy]
|
||||||
|
nwzekwypera-lhwopey-cnwoo-hkceopeyo-134[zulqp]
|
||||||
|
vkppo-sqdto-seqjydw-jhqydydw-114[dqyjo]
|
||||||
|
zixppfcfba-zxkav-zlkqxfkjbkq-679[txhzn]
|
||||||
|
sbnqbhjoh-dboez-sftfbsdi-623[bsdfh]
|
||||||
|
qjopwxha-bhksan-zalhkuiajp-316[ahjkp]
|
||||||
|
yhtwhnpun-thnulapj-ibuuf-klzpnu-773[unhpl]
|
||||||
|
uwtojhynqj-kqtbjw-wjfhvznxnynts-827[ntyqj]
|
||||||
|
jef-iushuj-rkddo-ijehqwu-504[biekf]
|
||||||
|
gspsvjyp-tpewxmg-kveww-gywxsqiv-wivzmgi-672[sryce]
|
||||||
|
rgllk-eomhqzsqd-tgzf-etubbuzs-118[zbegl]
|
||||||
|
shmml-pubpbyngr-ynobengbel-403[bnegl]
|
||||||
|
gsrwyqiv-kvehi-fewoix-wivzmgiw-256[rimyz]
|
||||||
|
iuxxuyobk-yigbktmkx-natz-xkykgxin-852[kxiyb]
|
||||||
|
excdklvo-oqq-vklybkdybi-744[utifh]
|
||||||
|
ojk-nzxmzo-agjrzm-xpnojhzm-nzmqdxz-915[zmjno]
|
||||||
|
qspkfdujmf-sbccju-eftjho-103[byjhc]
|
||||||
|
fodvvlilhg-mhoobehdq-whfkqrorjb-699[taskb]
|
||||||
|
aflwjfslagfsd-usfvq-ogjckzgh-814[emsnh]
|
||||||
|
sebehvkb-uww-tulubefcudj-712[ubewc]
|
||||||
|
egdytrixat-gpbepvxcv-hrpktcvtg-wjci-hidgpvt-531[vzdcg]
|
||||||
|
nsyjwsfyntsfq-zsxyfgqj-gzssd-wjxjfwhm-749[sgmhv]
|
||||||
|
ktfitzbgz-yehpxk-kxvxbobgz-761[ryzea]
|
||||||
|
tcrjjzwzvu-irsszk-rthlzjzkzfe-503[ocepg]
|
||||||
|
dfcxsqhwzs-pibbm-sbuwbssfwbu-558[tocys]
|
||||||
|
nwzekwypera-bhksan-odellejc-758[eakln]
|
||||||
|
qfmcusbwq-qobrm-qcohwbu-fsoqeiwgwhwcb-402[cpzsy]
|
||||||
|
cvabijtm-zijjqb-uizsmbqvo-434[btzma]
|
||||||
|
irdgrxzex-srjbvk-glityrjzex-867[rxegi]
|
||||||
|
rdadguja-tvv-gtrtxkxcv-609[tvadg]
|
||||||
|
wdjcvuvmyjpn-zbb-mznzvmxc-213[ndmaz]
|
||||||
|
vagreangvbany-sybjre-nanylfvf-507[bryme]
|
||||||
|
vjpwncrl-mhn-bqryyrwp-979[rnpwy]
|
||||||
|
jqwpihizlwca-ntwemz-abwziom-642[iyzsa]
|
||||||
|
jchipqat-rwdrdapit-detgpixdch-921[dipta]
|
||||||
|
vqr-ugetgv-tcddkv-eqpvckpogpv-440[vgpcd]
|
||||||
|
ajyqqgdgcb-aylbw-amyrgle-qyjcq-756[qyagb]
|
||||||
|
fbebmtkr-zktwx-utldxm-nlxk-mxlmbgz-553[onbvf]
|
||||||
|
hwdtljsnh-kqtbjw-ijajqturjsy-827[jthqs]
|
||||||
|
sedikcuh-whqtu-sxesebqju-udwyduuhydw-556[rvudf]
|
||||||
|
ipvohghykvbz-tpspahyf-nyhkl-yhiipa-huhsfzpz-123[hpyiz]
|
||||||
|
fubrjhqlf-mhoobehdq-oderudwrub-153[bdhor]
|
||||||
|
mbggf-zjhclunly-obua-dvyrzovw-695[bglou]
|
||||||
|
houngfgxjuay-igtje-aykx-zkyzotm-176[qcita]
|
||||||
|
lugjuacha-mwupyhayl-bohn-xyjulngyhn-318[gnftc]
|
||||||
|
rdggdhxkt-rpcsn-rdpixcv-itrwcdadvn-505[uancd]
|
||||||
|
yaxsnlcrun-ouxfna-jwjuhbrb-199[xnmwj]
|
||||||
|
yrwxefpi-tpewxmg-kveww-wlmttmrk-334[rfqkl]
|
||||||
|
ktwbhtvmbox-unggr-kxtvjnblbmbhg-215[bgthk]
|
||||||
|
amlqskcp-epybc-bwc-pcyaosgqgrgml-600[cgpab]
|
||||||
|
ujqgywfau-usfvq-ugslafy-jwuwanafy-606[uafwy]
|
||||||
|
nwzekwypera-lhwopey-cnwoo-lqnydwoejc-134[xithv]
|
||||||
|
nwzekwypera-acc-naoawnyd-160[itvch]
|
||||||
|
luxciuwncpy-ohmnuvfy-yaa-wihnuchgyhn-526[hnuyc]
|
||||||
|
ygcrqpkbgf-ejqeqncvg-tgegkxkpi-674[gekqc]
|
||||||
|
mtzslklcozfd-qwzhpc-nfdezxpc-dpcgtnp-223[ucwob]
|
||||||
|
tinnm-tzcksf-zcuwghwqg-948[nmktj]
|
||||||
|
rdchjbtg-vgpst-hrpktcvtg-wjci-itrwcdadvn-453[ngtzh]
|
||||||
|
yrwxefpi-nippcfier-hizipstqirx-932[ipref]
|
||||||
|
cvabijtm-xtiabqk-oziaa-kcabwumz-amzdqkm-590[mpqzo]
|
||||||
|
dpmpsgvm-dipdpmbuf-efqmpznfou-259[pmdfu]
|
||||||
|
ynukcajey-nwxxep-zarahkliajp-238[ytaej]
|
||||||
|
zbytomdsvo-mkxni-mykdsxq-nocsqx-770[mosxd]
|
||||||
|
tagzsrsjvgmk-xdgowj-jwuwanafy-814[efhpk]
|
||||||
|
xqvwdeoh-fdqgb-rshudwlrqv-127[jpkat]
|
||||||
|
kpvgtpcvkqpcn-fag-qrgtcvkqpu-596[pcgkq]
|
||||||
|
zlkprjbo-doxab-gbiivybxk-obpbxoze-393[boxik]
|
||||||
|
zbytomdsvo-mrymyvkdo-domrxyvyqi-744[ymodv]
|
||||||
|
jvuzbtly-nyhkl-qlssfilhu-klwhyatlua-695[lhuya]
|
||||||
|
nzydfxpc-rclop-nsznzwlep-xlylrpxpye-145[plnxy]
|
||||||
|
atyzghrk-xghhoz-rghuxgzuxe-748[ghxzr]
|
||||||
|
vhglnfxk-zktwx-ietlmbv-zktll-ftkdxmbgz-787[wbspa]
|
||||||
|
njmjubsz-hsbef-dipdpmbuf-vtfs-uftujoh-623[fubjs]
|
||||||
|
pyknyegle-aylbw-jmegqrgaq-756[egyal]
|
||||||
|
bgmxkgtmbhgte-lvtoxgzxk-angm-vhgmtbgfxgm-137[gmtxb]
|
||||||
|
ydjuhdqjyedqb-vbemuh-jusxdebewo-946[debju]
|
||||||
|
jxdkbqfz-zxkav-zlxqfkd-mrozexpfkd-263[kxzdf]
|
||||||
|
nbhofujd-dipdpmbuf-pqfsbujpot-597[pbdfu]
|
||||||
|
wrs-vhfuhw-fdqgb-vklsslqj-647[sfhlq]
|
||||||
|
vkrhzxgbv-vtgwr-ehzblmbvl-449[knuzb]
|
||||||
|
gsrwyqiv-kvehi-fyrrc-pefsvexsvc-750[versc]
|
||||||
|
hqcfqwydw-vbemuh-ixyffydw-270[fwydh]
|
||||||
|
vetllbybxw-vkrhzxgbv-lvtoxgzxk-angm-ybgtgvbgz-527[jxrwq]
|
||||||
|
bkzrrhehdc-eknvdq-cdrhfm-365[dhrce]
|
||||||
|
cybyjqho-whqtu-rkddo-qsgkyiyjyed-530[ydqhj]
|
||||||
|
ckgvutofkj-hatte-ynovvotm-332[tovka]
|
||||||
|
sawlkjevaz-zua-iwngapejc-758[jzwql]
|
||||||
|
mvhkvbdib-kgvnodx-bmvnn-gjbdnodxn-551[bmkyo]
|
||||||
|
enzcntvat-fpniratre-uhag-grpuabybtl-689[sqkoh]
|
||||||
|
bqvvu-acc-oanreyao-108[acovb]
|
||||||
|
tyepcyletzylw-nlyoj-nzletyr-nfdezxpc-dpcgtnp-275[yelnp]
|
||||||
|
fbebmtkr-zktwx-lvtoxgzxk-angm-kxlxtkva-839[kxtab]
|
||||||
|
ojk-nzxmzo-wvnfzo-vivgtndn-707[mlndw]
|
||||||
|
tpspahyf-nyhkl-qlssfilhu-klwsvftlua-487[iewds]
|
||||||
|
shoewudys-isqludwuh-xkdj-husuylydw-868[tlyhz]
|
||||||
|
qzoggwtwsr-qobrm-oqeiwgwhwcb-116[wgoqb]
|
||||||
|
zlkprjbo-doxab-yxphbq-pxibp-237[ocanz]
|
||||||
|
iruzfrtkzmv-avccpsvre-vexzevvizex-893[nyktl]
|
||||||
|
hqtyeqsjylu-hqrryj-tulubefcudj-894[ujqye]
|
||||||
|
zlkprjbo-doxab-fkqbokxqflkxi-mixpqfz-doxpp-xznrfpfqflk-523[fxkpo]
|
||||||
|
dpmpsgvm-sbccju-dvtupnfs-tfswjdf-129[neysa]
|
||||||
|
qcbgiasf-ufors-dzoghwq-ufogg-zopcfohcfm-246[yhmkz]
|
||||||
|
esyfwlau-ugjjgkanw-usfvq-kzahhafy-242[wnzhb]
|
||||||
|
mbiyqoxsm-lkcuod-nozkbdwoxd-432[odbkm]
|
||||||
|
usfvq-ugslafy-vwhdgqewfl-632[fglqs]
|
||||||
|
gokzyxsjon-zvkcdsm-qbkcc-oxqsxoobsxq-484[xrkfl]
|
||||||
|
hdgdovmt-bmvyz-wvnfzo-gjbdnodxn-395[bwicg]
|
||||||
|
sehheiylu-fhezusjybu-rkddo-udwyduuhydw-530[udhye]
|
||||||
|
glrcplyrgmlyj-aylbw-amyrgle-nspafyqgle-210[dmuny]
|
||||||
|
aflwjfslagfsd-jsttal-xafsfuafy-138[faslj]
|
||||||
|
yuxufmdk-sdmpq-iqmbazulqp-otaoaxmfq-pqbxakyqzf-586[qamfp]
|
||||||
|
jef-iushuj-sxesebqju-ixyffydw-270[iztnj]
|
||||||
|
zvyvgnel-tenqr-enzcntvat-ohaal-ratvarrevat-793[atven]
|
||||||
|
yuxufmdk-sdmpq-vqxxknqmz-ogefayqd-eqdhuoq-612[qdmux]
|
||||||
|
yhtwhnpun-kfl-ylhjxbpzpapvu-357[phlnu]
|
||||||
|
egdytrixat-qjccn-bpcpvtbtci-557[mtpgc]
|
||||||
|
wsvsdkbi-qbkno-mkxni-mykdsxq-ecob-docdsxq-120[dksbo]
|
||||||
|
xtwtelcj-rclop-ojp-dstaatyr-873[omnal]
|
||||||
|
wifilzof-jfumncw-alumm-xypyfijgyhn-318[evfso]
|
||||||
|
mvydjvxodqz-agjrzm-hvivbzhzio-655[vzdhi]
|
||||||
|
jsehsyafy-usfvq-ugslafy-jwuwanafy-840[afsyu]
|
||||||
|
myxcewob-qbkno-nio-bocokbmr-900[obckm]
|
||||||
|
ipvohghykvbz-wshzapj-nyhzz-vwlyhapvuz-539[hzvpy]
|
||||||
|
tbxmlkfwba-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-185[bkopz]
|
||||||
|
rdadguja-eaphixr-vgphh-itrwcdadvn-869[nfpxs]
|
||||||
|
lugjuacha-jfumncw-alumm-zchuhwcha-734[uachm]
|
||||||
|
jsehsyafy-jsttal-jwsuimakalagf-762[mnvlh]
|
||||||
|
zixppfcfba-yrkkv-absbilmjbkq-393[ihgyz]
|
||||||
|
bxaxipgn-vgpst-rdchjbtg-vgpst-rpcsn-rdpixcv-hpath-817[pgtch]
|
||||||
|
rtqlgevkng-ejqeqncvg-hkpcpekpi-154[xpgty]
|
||||||
|
laffe-hgyqkz-xkikobotm-488[kfoab]
|
||||||
|
jfifqxov-doxab-zxkav-zlxqfkd-qoxfkfkd-419[ubaro]
|
||||||
|
myxcewob-qbkno-cmkfoxqob-rexd-zebmrkcsxq-952[boxce]
|
||||||
|
apuut-wvnfzo-rjmfncjk-447[fjnua]
|
||||||
|
lejkrscv-tfcfiwlc-avccpsvre-fgvirkzfej-113[cfver]
|
||||||
|
nglmtuex-cxeeruxtg-kxvxbobgz-215[xegbt]
|
||||||
|
sgmtkzoi-kmm-xkgiwaoyozout-748[qrkst]
|
||||||
|
amppmqgtc-djmucp-rcaflmjmew-912[bcvna]
|
||||||
|
xst-wigvix-fyrrc-wepiw-438[ygref]
|
||||||
|
dzczkrip-xiruv-jtrmvexvi-ylek-fgvirkzfej-295[irvek]
|
||||||
|
diozmivodjivg-xviyt-xjvodib-zibdizzmdib-265[zmrey]
|
||||||
|
rgndvtcxr-ytaanqtpc-stepgibtci-661[tcagi]
|
||||||
|
xgsvgmotm-hgyqkz-jkyomt-358[ajyhb]
|
||||||
|
zloolpfsb-yxphbq-ixyloxqlov-393[loxbp]
|
||||||
|
zilqwikbqdm-jiasmb-uizsmbqvo-668[ibmqs]
|
||||||
|
rtqlgevkng-rncuvke-itcuu-ucngu-206[ucgne]
|
||||||
|
dmybmsuzs-yuxufmdk-sdmpq-eomhqzsqd-tgzf-iadwetab-482[nkqyl]
|
||||||
|
vetllbybxw-ktuubm-hixktmbhgl-345[ikqop]
|
||||||
|
bwx-amkzmb-jcvvg-ikycqaqbqwv-954[symcn]
|
||||||
|
ubhatstkwhnl-ynssr-lvtoxgzxk-angm-kxlxtkva-163[ktxal]
|
||||||
|
zlilocri-yxphbq-pefmmfkd-471[filmp]
|
||||||
|
yflexwxoalrp-zlkprjbo-doxab-zxkav-zlxqfkd-qoxfkfkd-419[xkflo]
|
||||||
|
oxaflxzqfsb-zelzlixqb-xznrfpfqflk-393[flxzq]
|
||||||
|
ixccb-vfdyhqjhu-kxqw-ghyhorsphqw-101[pzgst]
|
||||||
|
pybgmyargtc-qaytclecp-fslr-sqcp-rcqrgle-860[crglp]
|
||||||
|
zbytomdsvo-mkxni-kmaescsdsyx-562[smdko]
|
||||||
|
hwbba-dwppa-ocpcigogpv-570[pabcg]
|
||||||
|
eza-dpncpe-nlyoj-nzletyr-wlmzclezcj-171[elzcn]
|
||||||
|
tbxmlkfwba-mixpqfz-doxpp-zlkqxfkjbkq-159[kxbfp]
|
||||||
|
vetllbybxw-yehpxk-ehzblmbvl-657[blehv]
|
||||||
|
zuv-ykixkz-jek-lotgtiotm-852[ktioz]
|
||||||
|
fnjyxwrinm-mhn-mnyjacvnwc-277[zgpnw]
|
||||||
|
odiih-ljwmh-lxjcrwp-mnenuxyvnwc-615[nwchi]
|
||||||
|
wfummczcyx-wuhxs-qilembij-838[mciuw]
|
||||||
|
sno-rdbqds-bgnbnkzsd-bnmszhmldms-859[sbdnm]
|
||||||
|
nvrgfezqvu-gcrjkzt-xirjj-ivjvrity-555[ylfxv]
|
||||||
|
encuukhkgf-uecxgpigt-jwpv-ujkrrkpi-622[kugpc]
|
||||||
|
lnkfaypeha-xqjju-qoan-paopejc-446[ajpen]
|
||||||
|
kmjezxodgz-ytz-gvwjmvojmt-109[jmzgo]
|
||||||
|
ygcrqpkbgf-hnqygt-octmgvkpi-128[gckpq]
|
||||||
|
jxdkbqfz-mixpqfz-doxpp-tlohpelm-107[pxdfl]
|
||||||
|
xjgjmapg-xviyt-xjvodib-adivixdib-759[ixdjv]
|
||||||
|
laffe-jek-sgtgmksktz-644[vuenb]
|
||||||
|
pbafhzre-tenqr-enoovg-ratvarrevat-975[ymshj]
|
||||||
|
lqwhuqdwlrqdo-vfdyhqjhu-kxqw-uhvhdufk-959[kzlvy]
|
||||||
|
rflsjynh-jll-zxjw-yjxynsl-697[jlyns]
|
||||||
|
wrs-vhfuhw-sodvwlf-judvv-ghvljq-361[vhwdf]
|
||||||
|
ynssr-unggr-tvjnblbmbhg-163[bgnrs]
|
||||||
|
jyfvnlupj-jvsvymbs-yhiipa-zopwwpun-903[nrdma]
|
||||||
|
kzeed-hfsid-uzwhmfxnsl-515[uoyvx]
|
||||||
|
ide-htrgti-uadltg-gtprfjxhxixdc-375[tdgix]
|
||||||
|
sorozgxe-mxgjk-hatte-vaxingyotm-358[fwxei]
|
||||||
|
ydjuhdqjyedqb-fbqijys-whqii-jusxdebewo-582[nuzsj]
|
||||||
|
yknnkoera-xwogap-paydjkhkcu-498[kanop]
|
||||||
|
nzydfxpc-rclop-upwwjmply-opdtry-691[pycdl]
|
||||||
|
dlhwvupglk-jhukf-jvhapun-zlycpjlz-409[lhjpu]
|
||||||
|
kwvacumz-ozilm-moo-bmkpvwtwog-694[mowkv]
|
||||||
|
kmjezxodgz-wpiit-mzxzdqdib-863[anvbu]
|
||||||
|
xlrypetn-nsznzwlep-xlylrpxpye-587[znfwt]
|
||||||
|
pybgmyargtc-qaytclecp-fslr-umpiqfmn-600[nzvej]
|
||||||
|
etyyx-qzaahs-lzqjdshmf-781[ahqsy]
|
||||||
|
ovbunmneqbhf-wryylorna-znantrzrag-221[pnazx]
|
||||||
|
gzefmnxq-bxmefuo-sdmee-ymzmsqyqzf-352[lgvpu]
|
||||||
|
ixeumktoi-jek-jkbkruvsktz-488[mzeun]
|
||||||
|
dzczkrip-xiruv-avccpsvre-glityrjzex-321[eflmp]
|
||||||
|
wfruflnsl-hfsid-fhvznxnynts-307[fnshl]
|
||||||
|
vkppo-rkddo-iqbui-218[dikop]
|
||||||
|
muqfedyput-zubboruqd-mehaixef-452[inbaj]
|
||||||
|
ftzgxmbv-cxeeruxtg-nlxk-mxlmbgz-683[xgmbe]
|
||||||
|
htsxzrjw-lwfij-uqfxynh-lwfxx-hzxytrjw-xjwanhj-827[xjwhf]
|
||||||
|
qekrixmg-wgezirkiv-lyrx-tyvglewmrk-282[regik]
|
||||||
|
ktiaaqnqml-jiasmb-apqxxqvo-226[asvyf]
|
||||||
|
lejkrscv-irdgrxzex-srjbvk-kvtyefcfxp-165[rekvx]
|
||||||
|
hvbizodx-nxvqzibzm-cpio-hvmfzodib-291[izbov]
|
||||||
|
ltpedcxots-tvv-rjhidbtg-htgkxrt-297[tdghr]
|
||||||
|
dlhwvupglk-mbggf-jovjvshal-zlycpjlz-565[lgjvh]
|
||||||
|
xfbqpojafe-tdbwfohfs-ivou-sfbdrvjtjujpo-779[fjobd]
|
||||||
|
kmjezxodgz-xviyt-gvwjmvojmt-577[flhas]
|
||||||
|
jshzzpmplk-jhukf-jvhapun-vwlyhapvuz-669[hpjuv]
|
||||||
|
tfejldvi-xiruv-gcrjkzt-xirjj-drerxvdvek-295[dpsef]
|
||||||
|
zotts-yaa-lymyulwb-968[skymd]
|
||||||
|
rmn-qcapcr-zyqicr-umpiqfmn-704[cmqri]
|
||||||
|
xfbqpojafe-cbtlfu-qvsdibtjoh-727[bfjoq]
|
||||||
|
ykhknbqh-nwxxep-oanreyao-732[naehk]
|
||||||
|
raphhxuxts-hrpktcvtg-wjci-hidgpvt-921[hmzng]
|
||||||
|
yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-hizipstqirx-932[mdsza]
|
||||||
|
xjgjmapg-xviyt-vivgtndn-603[utnks]
|
||||||
|
cxy-bnlanc-mhn-vjwjpnvnwc-745[mtsvn]
|
||||||
|
ujoon-gpbepvxcv-eaphixr-vgphh-uxcpcrxcv-687[pcvxh]
|
||||||
|
ykjoqian-cnwza-iwcjapey-lhwopey-cnwoo-opknwca-264[owacn]
|
||||||
|
lnkfaypeha-oywrajcan-dqjp-zalwnpiajp-108[apjnl]
|
||||||
|
ktwbhtvmbox-yehpxk-mktbgbgz-293[cndif]
|
||||||
|
hqcfqwydw-cqwdujys-rqiauj-qsgkyiyjyed-738[qydjw]
|
||||||
|
amlqskcp-epybc-zyqicr-kylyeckclr-600[sdrzj]
|
||||||
|
bnmrtldq-fqzcd-rbzudmfdq-gtms-zbpthrhshnm-443[dmbhq]
|
||||||
|
nwlddtqtpo-nlyoj-nzletyr-epnsyzwzrj-379[tyrzv]
|
||||||
|
cvabijtm-kpwkwtibm-lmxtwgumvb-980[mbtwi]
|
||||||
|
amlqskcp-epybc-afmamjyrc-jyzmpyrmpw-574[mpyac]
|
||||||
|
aflwjfslagfsd-vqw-dstgjslgjq-424[sfgjl]
|
||||||
|
willimcpy-zfiqyl-xymcah-110[ilycm]
|
||||||
|
kpvgtpcvkqpcn-lgnnadgcp-ujkrrkpi-128[knmqz]
|
||||||
|
wyvqljapsl-buzahisl-ibuuf-lunpullypun-409[wyhza]
|
||||||
|
amlqskcp-epybc-pyzzgr-pcacgtgle-210[cpgae]
|
||||||
|
xtwtelcj-rclop-mldvpe-dstaatyr-821[nkabu]
|
||||||
|
pdjqhwlf-gbh-sxufkdvlqj-751[cdmbz]
|
||||||
|
wkqxodsm-zvkcdsm-qbkcc-ecob-docdsxq-432[cdkoq]
|
||||||
|
xjmmjndqz-wpiit-gjbdnodxn-811[djnim]
|
||||||
|
zlkprjbo-doxab-zelzlixqb-absbilmjbkq-939[blzai]
|
||||||
|
htqtwkzq-xhfajsljw-mzsy-ywfnsnsl-619[lfsnu]
|
||||||
|
zhdsrqlchg-mhoobehdq-xvhu-whvwlqj-361[hqdlo]
|
||||||
|
tcfkqcevkxg-tcorcikpi-ejqeqncvg-uvqtcig-544[lsyzm]
|
||||||
|
kwtwznct-kivlg-zmamizkp-824[ixjen]
|
||||||
|
bkzrrhehdc-qzaahs-rghoohmf-287[hraoz]
|
||||||
|
lxuxaodu-mhn-cajrwrwp-303[aruwx]
|
||||||
|
tcorcikpi-dcumgv-octmgvkpi-700[vygzd]
|
||||||
|
crwwv-zlkprjbo-doxab-yxphbq-bkdfkbbofkd-809[bkdof]
|
||||||
|
xgvnndadzy-xcjxjgvoz-ncdkkdib-447[dnxcg]
|
||||||
|
elrkdcdugrxv-fkrfrodwh-xvhu-whvwlqj-179[eubfs]
|
||||||
|
odkasqzuo-rxaiqd-eqdhuoqe-430[nlyts]
|
||||||
|
vhglnfxk-zktwx-xzz-xgzbgxxkbgz-917[xzgkb]
|
||||||
|
jyfvnlupj-wyvqljapsl-jovjvshal-zlycpjlz-357[jlvpy]
|
||||||
|
gpbepvxcv-eaphixr-vgphh-gtrtxkxcv-687[pvxgh]
|
||||||
|
jrncbavmrq-zntargvp-qlr-qrirybczrag-741[dnzpg]
|
||||||
|
hqfxxnknji-hfsid-knsfshnsl-307[wtfhe]
|
||||||
|
aietsrmdih-nippcfier-stivexmsrw-750[iersm]
|
||||||
|
glrcplyrgmlyj-pyzzgr-pcqcypaf-912[nkoyv]
|
||||||
|
ugfkmewj-yjsvw-hdsklau-yjskk-sfsdqkak-216[ksjad]
|
||||||
|
mhi-lxvkxm-vtgwr-kxtvjnblbmbhg-917[bmvxg]
|
||||||
|
tipfxvezt-irsszk-kvtyefcfxp-451[fteik]
|
||||||
|
jxdkbqfz-mixpqfz-doxpp-qoxfkfkd-939[fxdkp]
|
||||||
|
dsxxw-pyzzgr-qrmpyec-288[prxyz]
|
||||||
|
ejpanjwpekjwh-fahhuxawj-ajcejaanejc-394[jaehw]
|
||||||
|
pinovwgz-xgvnndadzy-xviyt-vxlpdndodji-109[dnvix]
|
||||||
|
szfyrqriuflj-upv-rercpjzj-243[jprqg]
|
||||||
|
dmbttjgjfe-gmpxfs-efqbsunfou-701[fbegj]
|
||||||
|
sgmtkzoi-inuiurgzk-ykxboiky-436[qlcfs]
|
||||||
|
slqryzjc-djmucp-ylyjwqgq-158[jqycl]
|
||||||
|
aflwjfslagfsd-vqw-hmjuzskafy-398[fasjl]
|
||||||
|
slqryzjc-djmucp-pcacgtgle-886[cgjlp]
|
||||||
|
qjopwxha-ywjzu-ajcejaanejc-420[zoehr]
|
||||||
|
amjmpdsj-njyqrga-epyqq-kylyeckclr-756[yksln]
|
||||||
|
zlkprjbo-doxab-zxkav-zlxqfkd-abpfdk-445[kabdx]
|
||||||
|
lhkhszqx-fqzcd-bgnbnkzsd-nodqzshnmr-989[nzdhq]
|
||||||
|
dlhwvupglk-ibuuf-klwhyatlua-591[dzktb]
|
||||||
|
dpotvnfs-hsbef-cbtlfu-ufdiopmphz-623[homsd]
|
||||||
|
ajvyjprwp-npp-mnbrpw-875[pjnrw]
|
||||||
|
lxwbdvna-pajmn-snuuhknjw-mnyuxhvnwc-251[nuwah]
|
||||||
|
vetllbybxw-lvtoxgzxk-angm-xgzbgxxkbgz-865[mknli]
|
||||||
|
aflwjfslagfsd-jsehsyafy-usfvq-vwkayf-268[fsayj]
|
||||||
|
xjgjmapg-agjrzm-gvwjmvojmt-291[jgmav]
|
||||||
|
plolwdub-judgh-iorzhu-dqdobvlv-465[dloub]
|
||||||
|
htqtwkzq-wfggny-fsfqdxnx-645[wsznf]
|
||||||
|
fkqbokxqflkxi-zxkav-zlxqfkd-jxohbqfkd-341[kxfqb]
|
||||||
|
oxjmxdfkd-avb-tlohpelm-653[dlmox]
|
||||||
|
xtwtelcj-rclop-nsznzwlep-epnsyzwzrj-873[zelnp]
|
||||||
|
rtqlgevkng-gii-ceswkukvkqp-466[kgeiq]
|
||||||
|
molgbzqfib-yrkkv-ixyloxqlov-237[lobik]
|
||||||
|
zbytomdsvo-mrymyvkdo-nocsqx-848[pahef]
|
||||||
|
szfyrqriuflj-treup-tfrkzex-ivtvzmzex-867[xejut]
|
||||||
|
upq-tfdsfu-kfmmzcfbo-mphjtujdt-909[fmtud]
|
||||||
|
ykhknbqh-lhwopey-cnwoo-bejwjyejc-342[hwxgn]
|
||||||
|
qfkkj-nsznzwlep-nzyeltyxpye-327[vkmwy]
|
||||||
|
excdklvo-zvkcdsm-qbkcc-psxkxmsxq-900[cvoiz]
|
||||||
|
dszphfojd-dboez-dpbujoh-xpsltipq-623[zbxem]
|
||||||
|
udpsdjlqj-iorzhu-ghsorbphqw-517[hdjop]
|
||||||
|
xcitgcpixdcpa-ide-htrgti-gpqqxi-gthtpgrw-609[gitpc]
|
||||||
|
cybyjqho-whqtu-uww-tuiywd-348[styfx]
|
||||||
|
yuxufmdk-sdmpq-nmewqf-oazfmuzyqzf-924[hfsly]
|
||||||
|
tfejldvi-xiruv-avccpsvre-crsfirkfip-997[rxygp]
|
||||||
|
wsvsdkbi-qbkno-oqq-wkxkqowoxd-822[koqwb]
|
||||||
|
qcbgiasf-ufors-tzcksf-sbuwbssfwbu-610[ivjsc]
|
||||||
|
vkrhzxgbv-wrx-lmhktzx-839[xhkrv]
|
||||||
|
xmrrq-bwddqtwsf-vwnwdghewfl-242[fpmoq]
|
||||||
|
kmjezxodgz-nxvqzibzm-cpio-gjbdnodxn-577[isocd]
|
||||||
|
iutyaskx-mxgjk-kmm-jkyomt-436[kmjtx]
|
||||||
|
ide-htrgti-snt-rjhidbtg-htgkxrt-531[tghir]
|
||||||
|
vkppo-uww-bqrehqjeho-764[xmntl]
|
||||||
|
bdavqofuxq-pkq-ymzmsqyqzf-196[qfmyz]
|
||||||
|
diozmivodjivg-hvbizodx-zbb-ozxcijgjbt-915[zueag]
|
||||||
|
cybyjqho-whqtu-hqrryj-bqrehqjeho-374[hqjry]
|
||||||
|
vcibutulxiom-vohhs-lywycpcha-630[owyks]
|
||||||
|
chnylhuncihuf-wuhxs-fiacmncwm-786[chnuf]
|
||||||
|
xekdwvwnzkqo-ywjzu-ykwpejc-wymqeoepekj-264[dmbln]
|
||||||
|
etyyx-cxd-vnqjrgno-391[hntfq]
|
||||||
|
pwcvonofrcig-dfcxsqhwzs-qobrm-qighcasf-gsfjwqs-194[scfqg]
|
||||||
|
xgvnndadzy-ezggtwzvi-nojmvbz-837[vnsth]
|
||||||
|
dszphfojd-qmbtujd-hsbtt-usbjojoh-467[rskch]
|
||||||
|
npmhcargjc-aylbw-amyrgle-yaosgqgrgml-886[galmr]
|
||||||
|
qczcftiz-gqojsbusf-vibh-twbobqwbu-350[bnsiu]
|
||||||
|
kwvacumz-ozilm-kzgwomvqk-xtiabqk-oziaa-twoqabqka-980[akoqz]
|
||||||
|
dsxxw-zyqicr-cleglccpgle-418[clegx]
|
||||||
|
jrncbavmrq-cynfgvp-tenff-ynobengbel-611[nbefc]
|
||||||
|
hqtyeqsjylu-fbqijys-whqii-tuiywd-322[mitks]
|
||||||
|
rnqnyfwd-lwfij-wfggny-xmnuunsl-697[tseia]
|
||||||
|
fhezusjybu-rqiauj-udwyduuhydw-868[ngyzs]
|
||||||
|
pkl-oaynap-ywjzu-ykwpejc-opknwca-628[pakwy]
|
||||||
|
nuatmlmdpage-vqxxknqmz-geqd-fqefuzs-508[romxa]
|
||||||
|
awzwhofm-ufors-qobrm-qcohwbu-hsqvbczcum-948[obchm]
|
||||||
|
dfcxsqhwzs-rms-fsgsofqv-766[sfqcd]
|
||||||
|
wlqqp-tyftfcrkv-rercpjzj-711[rcfjp]
|
||||||
|
clotzlnetgp-awldetn-rcldd-nzyeltyxpye-743[letdn]
|
||||||
|
lgh-kwujwl-hdsklau-yjskk-vwhsjlewfl-788[lkwhj]
|
||||||
|
uqtqbizg-ozilm-kivlg-kwibqvo-uizsmbqvo-512[iqbov]
|
||||||
|
vetllbybxw-lvtoxgzxk-angm-kxlxtkva-683[xlktv]
|
||||||
|
qyujihctyx-mwupyhayl-bohn-uwkocmcncih-760[chyui]
|
||||||
|
crwwv-zxkav-obzbfsfkd-237[bfkvw]
|
||||||
|
qczcftiz-pogysh-igsf-hsghwbu-610[tnjwm]
|
||||||
|
udpsdjlqj-gbh-hqjlqhhulqj-725[hjqld]
|
||||||
|
yuxufmdk-sdmpq-nmewqf-emxqe-326[meqdf]
|
||||||
|
molgbzqfib-ciltbo-ildfpqfzp-653[bfilo]
|
||||||
|
uwtojhynqj-gfxpjy-ywfnsnsl-151[jnyfs]
|
||||||
|
qvbmzvibqwvit-jiasmb-camz-bmabqvo-330[bmvai]
|
||||||
|
xmtjbzidx-xviyt-xjvodib-xpnojhzm-nzmqdxz-603[torgb]
|
||||||
|
ykjoqian-cnwza-fahhuxawj-qoan-paopejc-628[ajnoc]
|
||||||
|
gvcskirmg-veffmx-irkmriivmrk-906[imrkv]
|
||||||
|
njmjubsz-hsbef-dboez-dpbujoh-bdrvjtjujpo-649[astyb]
|
||||||
|
ovbunmneqbhf-pnaql-pbngvat-jbexfubc-845[yzqwm]
|
||||||
|
joufsobujpobm-kfmmzcfbo-usbjojoh-571[mkpnw]
|
||||||
|
lzfmdshb-cxd-lzmzfdldms-287[dlmzf]
|
||||||
|
froruixo-mhoobehdq-pdunhwlqj-439[ohdqr]
|
||||||
|
xcitgcpixdcpa-rpcsn-rdpixcv-bpcpvtbtci-193[cpitx]
|
||||||
|
dfcxsqhwzs-ksodcbwnsr-xszzmpsob-rsgwub-168[sbwzc]
|
||||||
|
iuruxlar-lruckx-sgtgmksktz-436[krugl]
|
||||||
|
nbhofujd-dboez-fohjoffsjoh-467[ofhjb]
|
||||||
|
pejji-tovvilokx-nozvyiwoxd-276[bzkve]
|
||||||
|
bxaxipgn-vgpst-rpcsn-rdpixcv-rjhidbtg-htgkxrt-583[upjyv]
|
||||||
|
bkzrrhehdc-bzmcx-bnzshmf-lzqjdshmf-443[hzbmc]
|
||||||
|
dpssptjwf-gmpxfs-mphjtujdt-571[pjstd]
|
||||||
|
pdjqhwlf-sodvwlf-judvv-orjlvwlfv-829[tuszv]
|
||||||
|
mfklstdw-tmffq-wfyafwwjafy-918[wmvan]
|
||||||
|
joufsobujpobm-ezf-gjobodjoh-779[xwadm]
|
||||||
|
hafgnoyr-gbc-frperg-rtt-grpuabybtl-481[jcgnd]
|
||||||
|
joufsobujpobm-fhh-tijqqjoh-233[johbf]
|
||||||
|
zuv-ykixkz-vrgyzoi-mxgyy-yzuxgmk-150[yzgkx]
|
||||||
|
ibghopzs-qvcqczohs-qighcasf-gsfjwqs-948[ubrmn]
|
||||||
|
qfmcusbwq-pwcvonofrcig-foppwh-fsgsofqv-584[focpq]
|
||||||
|
aczupnetwp-awldetn-rcldd-qtylyntyr-119[tdlny]
|
||||||
|
dpssptjwf-ezf-sfdfjwjoh-909[znfwy]
|
||||||
|
qxdwpopgsdjh-ytaanqtpc-pcpanhxh-297[pahcd]
|
||||||
|
ucynmlgxcb-aylbw-rpyglgle-626[lgybc]
|
||||||
|
oqnidbshkd-okzrshb-fqzrr-rdquhbdr-573[rdbhq]
|
||||||
|
frqvxphu-judgh-fdqgb-vhuylfhv-647[hfuvd]
|
||||||
|
vhehkyne-cxeeruxtg-hixktmbhgl-319[ehxgk]
|
||||||
|
gsrwyqiv-kvehi-gerhc-gsexmrk-vigimzmrk-412[girek]
|
||||||
|
ajmrxjlcren-yujbcrl-pajbb-bnaerlnb-719[lvzpq]
|
||||||
|
zixppfcfba-bdd-bkdfkbbofkd-393[hnmcz]
|
||||||
|
aflwjfslagfsd-hdsklau-yjskk-ugflsafewfl-918[flsak]
|
||||||
|
xtwtelcj-rclop-upwwjmply-nzyeltyxpye-847[lpyet]
|
||||||
|
oaddaeuhq-qss-dqmocgueufuaz-924[qzwti]
|
||||||
|
tvsnigxmpi-wgezirkiv-lyrx-hitpscqirx-568[irxgp]
|
||||||
|
ksodcbwnsr-qczcftiz-gqojsbusf-vibh-igsf-hsghwbu-272[sbcfg]
|
||||||
|
sgmtkzoi-jek-gtgreyoy-410[tqkns]
|
||||||
|
rzvkjiduzy-kgvnodx-bmvnn-omvdidib-109[fpsxk]
|
||||||
|
diozmivodjivg-rzvkjiduzy-zbb-adivixdib-447[nayqm]
|
||||||
|
froruixo-vfdyhqjhu-kxqw-rshudwlrqv-517[rhqud]
|
||||||
|
dmpuamofuhq-dmnnuf-ymzmsqyqzf-222[mwnak]
|
||||||
|
mybbycsfo-zvkcdsm-qbkcc-wkbuodsxq-380[bcksd]
|
||||||
|
tcrjjzwzvu-wcfnvi-vexzevvizex-633[vzeci]
|
||||||
|
qzoggwtwsr-gqojsbusf-vibh-hsqvbczcum-870[sbgqc]
|
||||||
|
enzcntvat-cynfgvp-tenff-phfgbzre-freivpr-845[xnfot]
|
||||||
|
gsvvswmzi-gerhc-gsexmrk-stivexmsrw-984[segmr]
|
||||||
|
fhezusjybu-vbemuh-iqbui-244[iektm]
|
||||||
|
oqnidbshkd-idkkxadzm-qdzbpthrhshnm-469[gekyh]
|
||||||
|
pybgmyargtc-cee-nspafyqgle-574[egyac]
|
||||||
|
jyddc-gerhc-gsexmrk-vigimzmrk-672[gmrcd]
|
||||||
|
tipfxvezt-gcrjkzt-xirjj-rercpjzj-399[ldquc]
|
||||||
|
bdavqofuxq-bxmefuo-sdmee-dqeqmdot-768[hwmck]
|
||||||
|
fbebmtkr-zktwx-vtgwr-hixktmbhgl-475[tbkgh]
|
||||||
|
irgyyolokj-igtje-iugzotm-rumoyzoiy-202[mpijw]
|
||||||
|
fbebmtkr-zktwx-xzz-kxlxtkva-865[yicwo]
|
||||||
|
tyepcyletzylw-dnlgpyrpc-sfye-nfdezxpc-dpcgtnp-145[badwi]
|
||||||
|
vrurcjah-pajmn-ljwmh-anbnjalq-849[ajnhl]
|
||||||
|
rtqlgevkng-ecpfa-fgukip-700[gefkp]
|
||||||
|
pdjqhwlf-froruixo-udeelw-wudlqlqj-907[kymab]
|
||||||
|
tinnm-xszzmpsob-qcbhowbasbh-688[nhcdm]
|
||||||
|
nij-mywlyn-wuhxs-lywycpcha-318[ywchl]
|
||||||
|
fnjyxwrinm-ouxfna-ldbcxvna-bnaerln-979[naxbf]
|
||||||
|
ajvyjprwp-bljenwpna-qdwc-anjlzdrbrcrxw-823[jrwan]
|
||||||
|
diozmivodjivg-wpiit-mzxzdqdib-551[kmhon]
|
||||||
|
nij-mywlyn-dyffsvyuh-xyjfisgyhn-656[yfnhi]
|
||||||
|
fhezusjybu-zubboruqd-vydqdsydw-504[dubyq]
|
||||||
|
ubhatstkwhnl-lvtoxgzxk-angm-kxvxbobgz-579[xbgkt]
|
||||||
|
xcitgcpixdcpa-rwdrdapit-htgkxrth-557[zastp]
|
||||||
|
wfintfhynaj-jll-hzxytrjw-xjwanhj-281[jhnwa]
|
||||||
|
irgyyolokj-vrgyzoi-mxgyy-rumoyzoiy-800[sptbo]
|
||||||
|
jvyyvzpcl-yhkpvhjapcl-ibuuf-aljouvsvnf-227[vjlpu]
|
||||||
|
iruzfrtkzmv-treup-kirzezex-841[rzeik]
|
||||||
|
cxy-bnlanc-ljwmh-ujkxajcxah-979[waqkz]
|
||||||
|
qzoggwtwsr-foppwh-difqvogwbu-948[wgofp]
|
||||||
|
qyujihctyx-dyffsvyuh-zchuhwcha-552[hycuf]
|
||||||
|
yknnkoera-lhwopey-cnwoo-pnwejejc-992[enowc]
|
||||||
|
zovldbkfz-zxkav-zlxqfkd-xkxivpfp-289[vtcos]
|
||||||
|
mrxivrexmsrep-glsgspexi-erepcwmw-750[btrnl]
|
||||||
|
udskkaxawv-kusnwfywj-zmfl-dgyaklauk-866[xeozd]
|
||||||
|
esyfwlau-tmffq-vwnwdghewfl-632[czoml]
|
||||||
|
hjgbwuladw-kusnwfywj-zmfl-esfsywewfl-294[xwfie]
|
||||||
|
hwbba-rncuvke-itcuu-ocpcigogpv-232[cubgi]
|
||||||
|
vhkkhlbox-vtgwr-xgzbgxxkbgz-631[typnq]
|
||||||
|
nvrgfezqvu-szfyrqriuflj-vxx-jkfirxv-139[krijl]
|
||||||
|
iuruxlar-zuv-ykixkz-lruckx-xkykgxin-826[kxuir]
|
||||||
|
yhwooebeaz-ywjzu-yqopkian-oanreya-966[ynwkb]
|
||||||
|
iuxxuyobk-pkrrehkgt-xkgiwaoyozout-176[sjwtp]
|
||||||
|
glrcplyrgmlyj-djmucp-qrmpyec-236[clmpr]
|
||||||
|
pejji-tovvilokx-bocokbmr-588[obijk]
|
||||||
|
hplazytkpo-upwwjmply-dpcgtnpd-119[pdltw]
|
||||||
|
nij-mywlyn-xsy-jolwbumcha-136[yjlmn]
|
||||||
|
pynffvsvrq-ohaal-fgbentr-923[fanrv]
|
||||||
|
lgh-kwujwl-kusnwfywj-zmfl-kwjnauwk-736[wkjlu]
|
||||||
|
dszphfojd-sbccju-mbcpsbupsz-727[sbcpd]
|
||||||
|
ixeumktoi-lruckx-zkinturume-800[ktsyl]
|
||||||
|
fmsledevhsyw-tvsnigxmpi-veffmx-viwievgl-412[veifm]
|
||||||
|
mrxivrexmsrep-fyrrc-qevoixmrk-880[wtmdx]
|
||||||
|
qmpmxevc-kvehi-wgezirkiv-lyrx-wlmttmrk-620[zyxjd]
|
||||||
|
zixppfcfba-oxyyfq-qbzeklildv-289[fbilp]
|
||||||
|
nwlddtqtpo-dnlgpyrpc-sfye-wlmzclezcj-431[jefsy]
|
||||||
|
tinnm-foppwh-oqeiwgwhwcb-688[fzyjx]
|
||||||
|
plolwdub-judgh-fdqgb-ghyhorsphqw-413[hystk]
|
||||||
|
bwx-amkzmb-zijjqb-bmkpvwtwog-460[bmwjk]
|
||||||
|
qcbgiasf-ufors-pibbm-ghcfous-896[bfscg]
|
||||||
|
ktwbhtvmbox-vetllbybxw-cxeeruxtg-tgterlbl-215[tmybs]
|
||||||
|
lqwhuqdwlrqdo-mhoobehdq-vwrudjh-387[dhqow]
|
||||||
|
lgh-kwujwl-tskcwl-vwhdgqewfl-684[afnbs]
|
||||||
|
yuxufmdk-sdmpq-rxaiqd-efadmsq-976[mczye]
|
||||||
|
ftzgxmbv-unggr-kxlxtkva-917[ezfmx]
|
||||||
|
rmn-qcapcr-aylbw-amyrgle-ylyjwqgq-158[prcqj]
|
||||||
|
fhezusjybu-rqiauj-husuylydw-582[uyhjs]
|
||||||
|
apuut-xviyt-xjvodib-yzkvmohzio-525[yomvc]
|
||||||
|
mybbycsfo-dyz-combod-zvkcdsm-qbkcc-oxqsxoobsxq-848[obcsd]
|
||||||
|
yhwooebeaz-lhwopey-cnwoo-zalhkuiajp-706[oaehw]
|
||||||
|
bqxnfdmhb-bzmcx-trdq-sdrshmf-469[zdyht]
|
||||||
|
dmpuamofuhq-vqxxknqmz-pqbmdfyqzf-924[qmfdp]
|
||||||
|
kmjezxodgz-ytz-mzvxlpdndodji-889[gefcn]
|
||||||
|
apuut-xviyt-xjvodib-mznzvmxc-369[vximt]
|
||||||
|
fodvvlilhg-surmhfwloh-hjj-hqjlqhhulqj-647[hljqf]
|
||||||
|
tipfxvezt-srjbvk-tljkfdvi-jvimztv-269[vtijf]
|
||||||
|
ikhcxvmbex-xzz-labiibgz-423[qnzsg]
|
||||||
|
qzchnzbshud-azrjds-lzmzfdldms-885[xubgy]
|
||||||
|
eadalsjq-yjsvw-vqw-esjcwlafy-398[ajswe]
|
||||||
|
oxmeeuruqp-bxmefuo-sdmee-etubbuzs-898[stupo]
|
||||||
|
frqvxphu-judgh-xqvwdeoh-fdqgb-frdwlqj-zrunvkrs-257[dqrfh]
|
||||||
|
ltpedcxots-gpbepvxcv-qphzti-igpxcxcv-349[jzdyi]
|
||||||
|
vhkkhlbox-vtgwr-phkdlahi-969[tmszy]
|
||||||
|
cvabijtm-jcvvg-lmdmtwxumvb-226[nvfca]
|
||||||
|
sedikcuh-whqtu-sqdto-qsgkyiyjyed-790[dqsye]
|
||||||
|
gzefmnxq-bdavqofuxq-rxaiqd-ymzmsqyqzf-690[zklij]
|
||||||
|
zntargvp-cynfgvp-tenff-qrcyblzrag-351[sqzyh]
|
||||||
|
xfbqpojafe-dboez-xpsltipq-857[ehgum]
|
||||||
|
uqtqbizg-ozilm-jcvvg-lmaqov-980[xzwsi]
|
||||||
|
xjgjmapg-ezggtwzvi-xpnojhzm-nzmqdxz-161[zgjmx]
|
||||||
|
muqfedyput-vbemuh-fkhsxqiydw-920[udefh]
|
||||||
|
kzeed-gfxpjy-ywfnsnsl-489[xeoyn]
|
||||||
|
pynffvsvrq-onfxrg-ynobengbel-741[nfbeg]
|
||||||
|
froruixo-iorzhu-rshudwlrqv-647[rouhi]
|
||||||
|
amjmpdsj-qaytclecp-fslr-qyjcq-938[cjqal]
|
||||||
|
otzkxtgzoutgr-jek-iayzuskx-ykxboik-826[kotxz]
|
||||||
|
tpspahyf-nyhkl-jhukf-zavyhnl-279[hyafk]
|
||||||
|
pualyuhapvuhs-ihzrla-ylhjxbpzpapvu-929[lbncu]
|
||||||
|
odiih-ajkkrc-mnbrpw-355[ikrab]
|
||||||
|
votubcmf-gmpxfs-bdrvjtjujpo-363[jbfmo]
|
||||||
|
zgmfyxypbmsq-rmn-qcapcr-bwc-pcacgtgle-704[ztspm]
|
||||||
|
uqtqbizg-ozilm-nchhg-jiasmb-ivitgaqa-382[snpaf]
|
||||||
|
willimcpy-jfumncw-alumm-lyuwkocmcncih-734[cmliu]
|
||||||
|
ibghopzs-qvcqczohs-hsqvbczcum-506[chqsz]
|
||||||
|
ugjjgkanw-tmffq-vwkayf-216[lfrby]
|
||||||
|
pynffvsvrq-pnaql-erprvivat-507[vpraf]
|
||||||
|
aczupnetwp-nlyoj-nzletyr-pyrtyppctyr-197[pytnr]
|
||||||
|
vkppo-sqdto-seqjydw-bewyijysi-686[sydei]
|
||||||
|
dpotvnfs-hsbef-ezf-qvsdibtjoh-337[fsbde]
|
||||||
|
wlqqp-avccpsvre-ivtvzmzex-425[vcepq]
|
||||||
|
jfifqxov-doxab-gbiivybxk-jxohbqfkd-549[skgzo]
|
||||||
|
rgndvtcxr-jchipqat-rpcsn-igpxcxcv-713[cprxg]
|
||||||
|
ykhknbqh-xqjju-wymqeoepekj-576[ejkqh]
|
||||||
|
pejji-mrymyvkdo-domrxyvyqi-536[ymdij]
|
||||||
|
wihmogyl-aluxy-xsy-womnigyl-mylpcwy-786[ylmwg]
|
||||||
|
jlidywncfy-zfiqyl-mbcjjcha-162[cjyfi]
|
||||||
|
pynffvsvrq-sybjre-grpuabybtl-455[byavk]
|
||||||
|
uqtqbizg-ozilm-uiovmbqk-akidmvomz-pcvb-bziqvqvo-694[xywnk]
|
||||||
|
lxaaxbren-ouxfna-ydalqjbrwp-225[mibtg]
|
||||||
|
joufsobujpobm-kfmmzcfbo-dvtupnfs-tfswjdf-675[ijokq]
|
||||||
|
crwwv-gbiivybxk-pqloxdb-913[rtmzn]
|
||||||
|
pkl-oaynap-nwxxep-bejwjyejc-576[jfmel]
|
||||||
|
wfummczcyx-gcfcnuls-aluxy-wuhxs-wihnuchgyhn-786[giqsn]
|
||||||
|
htsxzrjw-lwfij-ojqqdgjfs-ijajqturjsy-229[tjxbs]
|
||||||
|
qczcftiz-foppwh-rsgwub-246[exnyt]
|
||||||
|
lnkfaypeha-xwogap-naoawnyd-342[zynls]
|
||||||
|
thnulapj-zjhclunly-obua-thuhnltlua-201[luhan]
|
||||||
|
vkppo-fbqijys-whqii-bqrehqjeho-504[lkosn]
|
||||||
|
eqpuwogt-itcfg-ecpfa-qrgtcvkqpu-622[cgpqt]
|
||||||
|
odkasqzuo-oazegyqd-sdmpq-otaoaxmfq-efadmsq-222[aoqdm]
|
||||||
|
ide-htrgti-bxaxipgn-vgpst-qjccn-pcpanhxh-453[pcghi]
|
||||||
|
luxciuwncpy-jfumncw-alumm-xyjulngyhn-552[unclm]
|
||||||
|
plolwdub-judgh-hjj-zrunvkrs-777[yfulq]
|
||||||
|
pejji-lexxi-oxqsxoobsxq-458[xoeij]
|
||||||
|
uzfqdzmfuazmx-pkq-fdmuzuzs-170[npsqv]
|
||||||
|
bknsykmdsfo-zvkcdsm-qbkcc-cdybkqo-614[fastx]
|
||||||
|
qfkkj-upwwjmply-qtylyntyr-873[yjklp]
|
||||||
|
hqcfqwydw-zubboruqd-ijehqwu-218[djvhz]
|
||||||
|
kmjezxodgz-pinovwgz-zbb-ncdkkdib-473[vimty]
|
||||||
|
bknsykmdsfo-myvybpev-mkxni-mykdsxq-bocokbmr-562[sdwfr]
|
||||||
|
eqttqukxg-gii-hkpcpekpi-960[yljdr]
|
||||||
|
drxevkzt-wcfnvi-cfxzjkztj-607[twoxz]
|
||||||
|
vkppo-rkddo-ijehqwu-504[dkope]
|
||||||
|
rgllk-rxaiqd-dqmocgueufuaz-456[mxkzr]
|
||||||
|
ktiaaqnqml-moo-xczkpiaqvo-122[aoqik]
|
||||||
|
amjmpdsj-njyqrga-epyqq-pcqcypaf-600[pqajy]
|
||||||
|
rwcnawjcrxwju-npp-ujkxajcxah-199[jacwx]
|
||||||
|
fmsledevhsyw-gspsvjyp-gerhc-gsexmrk-ywiv-xiwxmrk-412[segmr]
|
||||||
|
ajmrxjlcren-kdwwh-anbnjalq-745[myzet]
|
||||||
|
aoubshwq-tinnm-suu-fsoqeiwgwhwcb-480[wsubh]
|
||||||
|
rdggdhxkt-rpcsn-hpath-531[tsamh]
|
||||||
|
pbafhzre-tenqr-pnaql-pbngvat-nanylfvf-715[upmid]
|
||||||
|
zbytomdsvo-cmkfoxqob-rexd-gybucryz-562[obycd]
|
||||||
|
bkwzkqsxq-mkxni-ecob-docdsxq-978[ksmtq]
|
||||||
|
oknkvcta-itcfg-ecpfa-ncdqtcvqta-414[lcwjp]
|
||||||
|
fydelmwp-clmmte-cpnptgtyr-405[jlgak]
|
||||||
|
tcorcikpi-ecpfa-gpikpggtkpi-804[picgk]
|
||||||
|
xtwtelcj-rclop-upwwjmply-hzcvdsza-327[clpwj]
|
||||||
|
tcfkqcevkxg-ecpfa-eqcvkpi-ncdqtcvqta-752[cqekt]
|
||||||
|
etaqigpke-tcddkv-uvqtcig-440[tcdeg]
|
||||||
|
raphhxuxts-qxdwpopgsdjh-rpcsn-rdpixcv-sthxvc-843[tvexn]
|
||||||
|
atyzghrk-xghhoz-ktmotkkxotm-748[kthog]
|
||||||
|
fmsledevhsyw-nippcfier-asvowlst-412[zksal]
|
||||||
|
oaxadrgx-eomhqzsqd-tgzf-eqdhuoqe-846[zfylm]
|
||||||
|
qcbgiasf-ufors-dzoghwq-ufogg-qcbhowbasbh-194[bgofh]
|
||||||
|
qvbmzvibqwvit-bwx-amkzmb-jiasmb-xczkpiaqvo-122[bimva]
|
||||||
|
qfkkj-prr-hzcvdsza-639[dqmts]
|
||||||
|
jvyyvzpcl-ibuuf-bzly-alzapun-981[mnakf]
|
||||||
|
dsxxw-cee-pcacgtgle-626[odsgr]
|
||||||
|
buzahisl-zjhclunly-obua-zlycpjlz-617[rsglh]
|
||||||
|
gpewwmjmih-tpewxmg-kveww-jmrergmrk-594[mwegr]
|
||||||
|
aietsrmdih-hci-stivexmsrw-516[hsvof]
|
||||||
|
ujoon-ytaanqtpc-stepgibtci-219[tacin]
|
||||||
|
kpvgtpcvkqpcn-fag-ceswkukvkqp-830[cijob]
|
||||||
|
etaqigpke-uecxgpigt-jwpv-ocpcigogpv-154[gpcei]
|
||||||
|
eqnqthwn-tcddkv-rwtejcukpi-674[tcdek]
|
||||||
|
mhi-lxvkxm-ktuubm-nlxk-mxlmbgz-241[mxklb]
|
||||||
|
avw-zljyla-wshzapj-nyhzz-ylzlhyjo-149[plqkx]
|
||||||
|
xekdwvwnzkqo-nwxxep-odellejc-862[xyzwn]
|
||||||
|
pkl-oaynap-bhksan-qoan-paopejc-498[ojduv]
|
||||||
|
xjinphzm-bmvyz-xjgjmapg-ezggtwzvi-zibdizzmdib-499[zigmb]
|
||||||
|
bdavqofuxq-rxaiqd-bgdotmeuzs-508[clbmv]
|
||||||
|
xzwrmkbqtm-jcvvg-ewzsapwx-902[wmvxz]
|
||||||
|
dmybmsuzs-rxaiqd-xmnadmfadk-846[dmasx]
|
||||||
|
surmhfwloh-exqqb-vwrudjh-127[hqruw]
|
||||||
|
gntmfefwitzx-ojqqdgjfs-xytwflj-827[xgtuv]
|
||||||
|
tbxmlkfwba-zxkav-zlxqfkd-ildfpqfzp-965[jncig]
|
||||||
|
sbnqbhjoh-tdbwfohfs-ivou-qvsdibtjoh-597[rftxz]
|
||||||
|
hqcfqwydw-fbqijys-whqii-iqbui-322[iqwbf]
|
||||||
|
forwcoqhwjs-xszzmpsob-gvwddwbu-324[ftyzu]
|
||||||
|
zlilocri-oxjmxdfkd-ciltbo-pbosfzbp-991[gjars]
|
||||||
|
kwzzwaqdm-rmttgjmiv-uizsmbqvo-434[mziqt]
|
||||||
|
willimcpy-gcfcnuls-aluxy-mwupyhayl-bohn-yhachyylcha-162[kcimx]
|
||||||
|
uqtqbizg-ozilm-kivlg-uizsmbqvo-954[pifvj]
|
||||||
|
ugdgjxmd-tskcwl-wfyafwwjafy-762[wfadg]
|
||||||
|
ajyqqgdgcb-bwc-qyjcq-262[qcbgj]
|
||||||
|
yknnkoera-oywrajcan-dqjp-wjwhuoeo-602[oajnw]
|
||||||
|
bqxnfdmhb-qzaahs-rzkdr-963[abdhq]
|
||||||
|
dwbcjkun-mhn-jwjuhbrb-693[niusd]
|
||||||
|
wlqqp-wcfnvi-crsfirkfip-373[nrtqs]
|
||||||
|
guahyncw-wbiwifuny-xymcah-240[wyach]
|
||||||
|
qfkkj-prr-opgpwzaxpye-613[pkrae]
|
||||||
|
cqwdujys-tou-tufbeocudj-322[ucdjo]
|
||||||
|
wfruflnsl-wfggny-ijuqtdrjsy-931[wjznm]
|
||||||
|
bnqqnrhud-okzrshb-fqzrr-cdrhfm-105[rhqbd]
|
||||||
|
yhtwhnpun-tpspahyf-nyhkl-jovjvshal-zlycpjlz-487[hlpyj]
|
||||||
|
iutyaskx-mxgjk-hatte-lotgtiotm-176[shzku]
|
||||||
|
gntmfefwitzx-kqtbjw-xfqjx-645[nmfsa]
|
||||||
|
jvsvymbs-jhukf-jbzavtly-zlycpjl-695[frnkz]
|
||||||
|
dlhwvupglk-zjhclunly-obua-jvuahputlua-825[ulahj]
|
||||||
|
wyvqljapsl-jhukf-jvhapun-ylzlhyjo-487[jlhya]
|
||||||
|
ghkmaihex-hucxvm-lmhktzx-267[hmxka]
|
||||||
|
irgyyolokj-vrgyzoi-mxgyy-xkikobotm-670[ryfvl]
|
||||||
|
kwzzwaqdm-zijjqb-amzdqkma-564[qzdtv]
|
||||||
|
rflsjynh-idj-xytwflj-541[jflyd]
|
||||||
|
emixwvqhml-ntwemz-zmkmqdqvo-200[zmbdq]
|
||||||
|
kzgwomvqk-rmttgjmiv-abwziom-330[mtnsk]
|
||||||
|
xjgjmapg-wpiit-vivgtndn-499[weiza]
|
||||||
|
cebwrpgvyr-pnaql-grpuabybtl-117[xqmjc]
|
||||||
|
egdytrixat-uadltg-uxcpcrxcv-297[ctxad]
|
||||||
|
gvaaz-ezf-tfswjdft-623[fatzd]
|
||||||
|
excdklvo-mkxni-mykdsxq-mecdywob-cobfsmo-692[mocdk]
|
||||||
|
ovbunmneqbhf-pnaql-bcrengvbaf-351[mtgcw]
|
||||||
|
nwlddtqtpo-clmmte-nzyeltyxpye-509[ydnsh]
|
||||||
|
froruixo-udeelw-vwrudjh-309[sxgvu]
|
||||||
|
hqcfqwydw-sxesebqju-cqhaujydw-660[fghtp]
|
||||||
|
bpvctixr-rwdrdapit-ldgzhwde-895[sfioq]
|
||||||
|
ajmrxjlcren-yaxsnlcrun-bljenwpna-qdwc-fxatbqxy-797[fnjis]
|
||||||
|
lugjuacha-zfiqyl-uhufsmcm-370[uacfh]
|
||||||
|
houngfgxjuay-pkrrehkgt-iayzuskx-ykxboik-852[kguxy]
|
||||||
|
gcfcnuls-aluxy-luxciuwncpy-jfumncw-alumm-uhufsmcm-214[zftvs]
|
||||||
|
oxmeeuruqp-otaoaxmfq-emxqe-794[drzyv]
|
||||||
|
nvrgfezqvu-upv-tfekrzedvek-867[evfkr]
|
||||||
|
uwtojhynqj-xhfajsljw-mzsy-zxjw-yjxynsl-801[jyswx]
|
||||||
|
zixppfcfba-yxphbq-jxohbqfkd-887[zgoyn]
|
||||||
|
qczcftiz-qvcqczohs-aobousasbh-402[coqsz]
|
||||||
|
lejkrscv-upv-tfekrzedvek-919[ekvrc]
|
||||||
|
chnylhuncihuf-zfiqyl-zchuhwcha-604[magtu]
|
||||||
|
vetllbybxw-lvtoxgzxk-angm-ybgtgvbgz-605[gbltv]
|
||||||
|
dmpuamofuhq-omzpk-qzsuzqqduzs-820[quzmd]
|
||||||
|
rdggdhxkt-gpqqxi-rdcipxcbtci-219[yrlha]
|
||||||
|
tfejldvi-xiruv-wcfnvi-jvimztvj-243[fqclr]
|
||||||
|
foadouwbu-dzoghwq-ufogg-gvwddwbu-324[dgouw]
|
||||||
|
tbxmlkfwba-pzxsbkdbo-erkq-bkdfkbbofkd-913[hgans]
|
||||||
|
gpbepvxcv-rpcsn-itrwcdadvn-453[sbuap]
|
||||||
|
szfyrqriuflj-srjbvk-ivrthlzjzkzfe-633[sqwil]
|
||||||
|
jqwpihizlwca-jiasmb-ivitgaqa-122[amzud]
|
||||||
|
bqvvu-ywjzu-qoan-paopejc-264[ajopq]
|
||||||
|
mvydjvxodqz-wpiit-gvwjmvojmt-525[oabkn]
|
||||||
|
ktiaaqnqml-moo-zmikycqaqbqwv-252[qamik]
|
||||||
|
dpmpsgvm-cbtlfu-sfdfjwjoh-909[pntzm]
|
||||||
|
nzcczdtgp-nsznzwlep-qtylyntyr-171[nztyc]
|
||||||
|
htqtwkzq-idj-rfwpjynsl-723[ndmel]
|
||||||
|
gzefmnxq-nmewqf-eqdhuoqe-300[eqfmn]
|
||||||
|
qzlozfhmf-cxd-lzqjdshmf-469[fzdhl]
|
||||||
|
pinovwgz-mvydjvxodqz-xviyt-xjvodib-yzndbi-447[pztyh]
|
||||||
|
gspsvjyp-gerhc-gsexmrk-vieguymwmxmsr-256[gmser]
|
||||||
|
ygcrqpkbgf-tcfkqcevkxg-hnqygt-vtckpkpi-102[puovq]
|
||||||
|
jsehsyafy-tmffq-vwhdgqewfl-112[rnach]
|
||||||
|
qmpmxevc-kvehi-hci-eguymwmxmsr-204[mechi]
|
||||||
|
tcfkqcevkxg-tcorcikpi-gii-gpikpggtkpi-544[wytzs]
|
||||||
|
pbafhzre-tenqr-enzcntvat-onfxrg-ratvarrevat-845[raten]
|
||||||
|
shoewudys-rqiauj-bqrehqjeho-270[ehqjo]
|
||||||
|
xjinphzm-bmvyz-ojk-nzxmzo-ezggtwzvi-zibdizzmdib-577[zimbd]
|
||||||
|
rkpqxyib-bdd-pbosfzbp-939[bpdfi]
|
||||||
|
vcibutulxiom-vumeyn-omyl-nymncha-786[ziwys]
|
||||||
|
nvrgfezqvu-upv-ivrthlzjzkzfe-321[vzefr]
|
||||||
|
krxqjijamxdb-yujbcrl-pajbb-dbna-cnbcrwp-303[bjacr]
|
||||||
|
zixppfcfba-mixpqfz-doxpp-qbzeklildv-653[zdxgu]
|
||||||
|
lsyrkjkbnyec-mkxni-gybucryz-640[ykbcn]
|
||||||
|
qspkfdujmf-kfmmzcfbo-dpoubjonfou-155[fomub]
|
||||||
|
sno-rdbqds-rbzudmfdq-gtms-cdozqsldms-755[yaubo]
|
||||||
|
houngfgxjuay-vrgyzoi-mxgyy-ygrky-462[ygoru]
|
||||||
|
gcfcnuls-aluxy-wifilzof-yaa-omyl-nymncha-266[alycf]
|
||||||
|
hwdtljsnh-gzssd-xfqjx-463[fajso]
|
||||||
|
htwwtxnaj-idj-hzxytrjw-xjwanhj-281[hzrnq]
|
||||||
|
sorozgxe-mxgjk-lruckx-xkgiwaoyozout-176[oxgkr]
|
||||||
|
ynssr-vtgwr-vhtmbgz-ftgtzxfxgm-475[gtfmr]
|
||||||
|
rtqlgevkng-lgnnadgcp-yqtmujqr-648[nelzc]
|
||||||
|
kwtwznct-rmttgjmiv-camz-bmabqvo-460[nmbls]
|
||||||
|
surmhfwloh-fdqgb-wudlqlqj-959[lqdfh]
|
||||||
|
iutyaskx-mxgjk-hgyqkz-rumoyzoiy-644[ykgim]
|
||||||
|
jqwpihizlwca-kivlg-kwibqvo-wxmzibqwva-434[iwqva]
|
||||||
|
amppmqgtc-djmucp-asqrmkcp-qcptgac-496[cpmaq]
|
||||||
|
apuut-xjmmjndqz-wpiit-vivgtndn-187[intdj]
|
||||||
|
ftzgxmbv-vtgwr-wxlbzg-267[gbtvw]
|
||||||
|
eza-dpncpe-mldvpe-wlmzclezcj-171[eclpz]
|
||||||
|
rnqnyfwd-lwfij-wfggny-ijuqtdrjsy-827[fjnwy]
|
||||||
|
aflwjfslagfsd-xdgowj-ghwjslagfk-684[fgajl]
|
||||||
|
lzfmdshb-eknvdq-rsnqzfd-859[ybjfz]
|
||||||
|
hqtyeqsjylu-uww-tufbeocudj-582[uejqt]
|
||||||
|
qfkkj-nsznzwlep-dstaatyr-223[aknst]
|
||||||
|
ubhatstkwhnl-xzz-kxvxbobgz-267[umogq]
|
||||||
|
xekdwvwnzkqo-oywrajcan-dqjp-ykjpwejiajp-238[mtbvo]
|
||||||
|
cebwrpgvyr-sybjre-qrfvta-195[rbevy]
|
||||||
|
hjgbwuladw-usfvq-esfsywewfl-710[mpiho]
|
||||||
|
lujbbrornm-kjbtnc-fxatbqxy-823[ywamx]
|
||||||
|
ugjjgkanw-uzgugdslw-hmjuzskafy-476[stfoh]
|
||||||
|
fmsledevhsyw-fewoix-pefsvexsvc-724[scznt]
|
||||||
|
zlkprjbo-doxab-bdd-obzbfsfkd-419[bdofk]
|
||||||
|
vcibutulxiom-wuhxs-nluchcha-864[uchil]
|
||||||
|
yhkpvhjapcl-ihzrla-dvyrzovw-305[qyhmr]
|
||||||
|
hmsdqmzshnmzk-qzlozfhmf-qzaahs-zmzkxrhr-287[zhmqs]
|
||||||
|
gzefmnxq-dmnnuf-etubbuzs-482[nubef]
|
||||||
|
ejpanjwpekjwh-ywjzu-ykwpejc-nayaerejc-550[jewap]
|
||||||
|
cxy-bnlanc-npp-mnyuxhvnwc-433[nvmyt]
|
||||||
|
jfifqxov-doxab-gbiivybxk-obzbfsfkd-601[epyzn]
|
||||||
|
pkl-oaynap-xqjju-wjwhuoeo-680[joapu]
|
||||||
|
jef-iushuj-hqtyeqsjylu-rqiauj-bewyijysi-842[hyzgu]
|
||||||
|
dfcxsqhwzs-tzcksf-aobousasbh-896[wkqxh]
|
||||||
|
lahxpnwrl-ljwmh-bjunb-693[jtoyp]
|
||||||
|
rnqnyfwd-lwfij-gfxpjy-wjhjnansl-931[jnfwl]
|
||||||
|
buzahisl-jvyyvzpcl-jhukf-jvhapun-klwhyatlua-617[ahluj]
|
||||||
|
jchipqat-eaphixr-vgphh-bpgztixcv-271[hpiac]
|
||||||
|
zlkprjbo-doxab-avb-absbilmjbkq-107[wbymr]
|
||||||
|
eqpuwogt-itcfg-dcumgv-fgxgnqrogpv-362[gcfop]
|
||||||
|
rdadguja-qjccn-gtrtxkxcv-791[cadgj]
|
||||||
|
etaqigpke-oknkvcta-itcfg-hnqygt-hkpcpekpi-674[mcoya]
|
||||||
|
gspsvjyp-hci-wxsveki-386[myuqs]
|
||||||
|
jef-iushuj-vbemuh-mehaixef-920[ehufi]
|
||||||
|
encuukhkgf-fag-tgceswkukvkqp-752[kguce]
|
||||||
|
npmhcargjc-njyqrga-epyqq-kypicrgle-444[cgpqr]
|
||||||
|
xtwtelcj-rclop-mldvpe-dpcgtnpd-379[pcdlt]
|
||||||
|
nchhg-kpwkwtibm-mvoqvmmzqvo-252[mvhko]
|
||||||
|
uqtqbizg-ozilm-jiasmb-uizsmbqvo-122[ktxvs]
|
||||||
|
nwlddtqtpo-mldvpe-fdpc-epdetyr-509[dpetl]
|
||||||
|
wfintfhynaj-idj-qfgtwfytwd-229[efudw]
|
||||||
|
yhwooebeaz-nwilwcejc-ydkykhwpa-owhao-160[skuyi]
|
||||||
52
2016/d04/ex2/ex2.py
Executable file
52
2016/d04/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Room(NamedTuple):
|
||||||
|
name: str
|
||||||
|
sector_id: int
|
||||||
|
checksum: str
|
||||||
|
|
||||||
|
def is_real(self) -> bool:
|
||||||
|
letters = collections.Counter(self.name.replace("-", ""))
|
||||||
|
checksum = sorted(letters.most_common(), key=lambda t: (-t[1], t[0]))[:5]
|
||||||
|
return "".join(c for c, _ in checksum) == self.checksum
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Room":
|
||||||
|
input, checksum = map(lambda s: s.removesuffix("]"), input.split("["))
|
||||||
|
*name, sector_id = input.split("-")
|
||||||
|
return cls("-".join(name), int(sector_id), checksum)
|
||||||
|
|
||||||
|
def decrypt(self) -> str:
|
||||||
|
def rotate(c: str) -> str:
|
||||||
|
rotated = ord(c) - ord("a") + self.sector_id
|
||||||
|
return chr(ord("a") + rotated % 26)
|
||||||
|
|
||||||
|
return "".join(rotate(c) if c != "-" else " " for c in self.name)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Room]:
|
||||||
|
return [Room.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
rooms = parse(input)
|
||||||
|
for room in rooms:
|
||||||
|
if not room.is_real():
|
||||||
|
continue
|
||||||
|
if room.decrypt() != "northpole object storage":
|
||||||
|
continue
|
||||||
|
return room.sector_id
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
991
2016/d04/ex2/input
Normal file
991
2016/d04/ex2/input
Normal file
|
|
@ -0,0 +1,991 @@
|
||||||
|
aczupnetwp-dnlgpyrpc-sfye-dstaatyr-561[patyc]
|
||||||
|
jsehsyafy-vqw-ljsafafy-866[nymla]
|
||||||
|
tyepcyletzylw-ncjzrpytn-prr-opawzjxpye-743[cnrdl]
|
||||||
|
foadouwbu-qvcqczohs-obozmgwg-662[lamjh]
|
||||||
|
ckgvutofkj-pkrrehkgt-zkinturume-436[krtue]
|
||||||
|
pelbtravp-pnaql-ernpdhvfvgvba-481[szram]
|
||||||
|
yflexwxoalrp-ciltbo-tlohpelm-887[bmwep]
|
||||||
|
ipvohghykvbz-ihzrla-jbzavtly-zlycpjl-253[lzhvy]
|
||||||
|
cybyjqho-whqtu-rqiauj-fkhsxqiydw-322[syzwi]
|
||||||
|
tipfxvezt-sleep-tljkfdvi-jvimztv-425[tveif]
|
||||||
|
ktiaaqnqml-xtiabqk-oziaa-xczkpiaqvo-616[aiqko]
|
||||||
|
ckgvutofkj-xghhoz-gtgreyoy-306[nyhpz]
|
||||||
|
molgbzqfib-zovldbkfz-zxkav-lmboxqflkp-341[xlomg]
|
||||||
|
ikhcxvmbex-vtgwr-vhtmbgz-mxvaghehzr-111[hvgmx]
|
||||||
|
dpssptjwf-fhh-tfswjdft-805[fstdh]
|
||||||
|
oaddaeuhq-otaoaxmfq-qzsuzqqduzs-534[qadou]
|
||||||
|
dzczkrip-xiruv-sleep-drerxvdvek-685[erdvi]
|
||||||
|
jvsvymbs-yhiipa-vwlyhapvuz-149[zfyqn]
|
||||||
|
nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-853[sjnfy]
|
||||||
|
mbiyqoxsm-lsyrkjkbnyec-nio-wkbuodsxq-614[bkosy]
|
||||||
|
jchipqat-uadltg-hidgpvt-375[kcnop]
|
||||||
|
jqwpihizlwca-lgm-nqvivkqvo-980[ldeay]
|
||||||
|
xfbqpojafe-dipdpmbuf-tfswjdft-493[fdpbj]
|
||||||
|
kwvacumz-ozilm-kpwkwtibm-lmxtwgumvb-798[mwkbi]
|
||||||
|
eqttqukxg-ejqeqncvg-ocpcigogpv-648[sdtzl]
|
||||||
|
dsxxw-bwc-bcnjmwkclr-678[cwbxd]
|
||||||
|
jvuzbtly-nyhkl-ibuuf-thuhnltlua-175[ulhtb]
|
||||||
|
rdadguja-uadltg-bpgztixcv-401[adgtu]
|
||||||
|
atyzghrk-kmm-ktmotkkxotm-930[xzfpe]
|
||||||
|
uwtojhynqj-ojqqdgjfs-xjwanhjx-151[waqmk]
|
||||||
|
hwdtljsnh-uqfxynh-lwfxx-rfsfljrjsy-567[fhjls]
|
||||||
|
xst-wigvix-gspsvjyp-gerhc-erepcwmw-724[uplfw]
|
||||||
|
kzgwomvqk-jcvvg-zmamizkp-122[kmvzg]
|
||||||
|
sbejpbdujwf-dboez-dpbujoh-dvtupnfs-tfswjdf-623[uxrpz]
|
||||||
|
bxaxipgn-vgpst-rwdrdapit-prfjxhxixdc-609[xpdir]
|
||||||
|
avw-zljyla-zjhclunly-obua-ayhpupun-981[aluyh]
|
||||||
|
nuatmlmdpage-qss-fdmuzuzs-404[btopv]
|
||||||
|
oaddaeuhq-otaoaxmfq-dqoquhuzs-716[aoqdu]
|
||||||
|
myvybpev-cmkfoxqob-rexd-bomosfsxq-432[khwfc]
|
||||||
|
oxaflxzqfsb-zelzlixqb-jxohbqfkd-471[hxkwc]
|
||||||
|
fnjyxwrinm-snuuhknjw-anbnjalq-875[ztvnr]
|
||||||
|
qfmcusbwq-pibbm-fsqswjwbu-922[bqswf]
|
||||||
|
wihmogyl-aluxy-jfumncw-alumm-nluchcha-916[lmuac]
|
||||||
|
oxaflxzqfsb-avb-bkdfkbbofkd-757[trzjy]
|
||||||
|
ksodcbwnsr-qzoggwtwsr-gqojsbusf-vibh-fsgsofqv-818[gsdca]
|
||||||
|
rzvkjiduzy-xcjxjgvoz-gvwjmvojmt-161[zufvq]
|
||||||
|
nwlddtqtpo-mldvpe-dezclrp-639[zlnki]
|
||||||
|
vkppo-rqiauj-huqsgkyiyjyed-530[yijkp]
|
||||||
|
dfcxsqhwzs-qobrm-qcohwbu-fsoqeiwgwhwcb-688[wqbch]
|
||||||
|
vxupkizork-xghhoz-aykx-zkyzotm-462[kzoxh]
|
||||||
|
zotts-jfumncw-alumm-omyl-nymncha-396[bstha]
|
||||||
|
yaxsnlcrun-npp-cajrwrwp-355[nprac]
|
||||||
|
bkwzkqsxq-pvygob-nozkbdwoxd-822[bkodq]
|
||||||
|
frqvxphu-judgh-fdqgb-frdwlqj-hqjlqhhulqj-595[ezyxq]
|
||||||
|
hqtyeqsjylu-sqdto-sedjqydcudj-764[dqjsy]
|
||||||
|
fab-eqodqf-omzpk-fdmuzuzs-430[yxkbc]
|
||||||
|
gpewwmjmih-glsgspexi-xvemrmrk-204[cynzd]
|
||||||
|
kwtwznct-jcvvg-wxmzibqwva-694[cdaps]
|
||||||
|
guahyncw-wuhxs-zchuhwcha-396[xwnmj]
|
||||||
|
pybgmyargtc-zsllw-dglylagle-912[mcrsp]
|
||||||
|
kyelcrga-zyqicr-jyzmpyrmpw-782[yrcmp]
|
||||||
|
wsvsdkbi-qbkno-zvkcdsm-qbkcc-myxdksxwoxd-432[kdsbc]
|
||||||
|
ltpedcxots-rwdrdapit-advxhixrh-271[drtxa]
|
||||||
|
elrkdcdugrxv-sodvwlf-judvv-vklsslqj-465[vdlsj]
|
||||||
|
htwwtxnaj-hfsid-htfynsl-ywfnsnsl-281[ghfea]
|
||||||
|
nij-mywlyn-xsy-xymcah-682[kiasm]
|
||||||
|
zovldbkfz-yrkkv-abmilvjbkq-939[chetn]
|
||||||
|
esyfwlau-kusnwfywj-zmfl-ghwjslagfk-398[fwlsa]
|
||||||
|
lahxpnwrl-yujbcrl-pajbb-mnyuxhvnwc-147[tzcxk]
|
||||||
|
rwcnawjcrxwju-lqxlxujcn-lxwcjrwvnwc-381[hxsdl]
|
||||||
|
pbybeshy-pynffvsvrq-wryylorna-jbexfubc-143[ybfre]
|
||||||
|
lxaaxbren-kdwwh-bqryyrwp-407[sktqh]
|
||||||
|
pybgmyargtc-zyqicr-rpyglgle-106[vsdft]
|
||||||
|
jfifqxov-doxab-yxphbq-obxznrfpfqflk-939[nyvhm]
|
||||||
|
pualyuhapvuhs-jovjvshal-thuhnltlua-383[lrfob]
|
||||||
|
gvcskirmg-tpewxmg-kveww-pskmwxmgw-438[ujily]
|
||||||
|
lgh-kwujwl-tmffq-esfsywewfl-242[fwles]
|
||||||
|
jyddc-fewoix-hitevxqirx-412[ixdec]
|
||||||
|
uzfqdzmfuazmx-otaoaxmfq-ogefayqd-eqdhuoq-222[lbfru]
|
||||||
|
ryexqpqhteki-sxesebqju-tufbeocudj-348[tjzhb]
|
||||||
|
kfg-jvtivk-sleep-wzeretzex-477[ektvz]
|
||||||
|
kzgwomvqk-jcvvg-bmkpvwtwog-174[vgkwm]
|
||||||
|
odiih-kdwwh-uxprbcrlb-251[bdhir]
|
||||||
|
htqtwkzq-xhfajsljw-mzsy-yjhmstqtld-229[thjqs]
|
||||||
|
qjopwxha-xwogap-owhao-914[astye]
|
||||||
|
wrs-vhfuhw-edvnhw-hqjlqhhulqj-439[vufmz]
|
||||||
|
rdggdhxkt-xcitgcpixdcpa-rpcsn-rdpixcv-stktadebtci-609[cdtip]
|
||||||
|
eqttqukxg-fag-eqpvckpogpv-544[jmtpx]
|
||||||
|
kdijqrbu-sqdto-seqjydw-iuhlysui-946[bioht]
|
||||||
|
fydelmwp-awldetn-rcldd-cplnbftdtetzy-951[kpxim]
|
||||||
|
ubhatstkwhnl-unggr-nlxk-mxlmbgz-761[geyqm]
|
||||||
|
ocipgvke-gii-fgxgnqrogpv-726[giopv]
|
||||||
|
fab-eqodqf-otaoaxmfq-iadwetab-430[azmnb]
|
||||||
|
fab-eqodqf-otaoaxmfq-pqhqxabyqzf-456[qafob]
|
||||||
|
xekdwvwnzkqo-zua-naoawnyd-784[anwdk]
|
||||||
|
sbejpbdujwf-fhh-tbmft-285[mbfsn]
|
||||||
|
hwbba-eqpuwogt-itcfg-rncuvke-itcuu-ugtxkegu-648[ugtce]
|
||||||
|
hqcfqwydw-fbqijys-whqii-cqdqwucudj-452[ztesw]
|
||||||
|
dmpuamofuhq-nmewqf-emxqe-742[meqfu]
|
||||||
|
iqmbazulqp-pkq-iadwetab-976[kcxmz]
|
||||||
|
lahxpnwrl-ljwmh-lxjcrwp-bnaerlnb-927[lnrwa]
|
||||||
|
laffe-lruckx-vaxingyotm-306[aflxc]
|
||||||
|
forwcoqhwjs-qcffcgwjs-tzcksf-rsdzcmasbh-220[csfwh]
|
||||||
|
yflexwxoalrp-gbiivybxk-abpfdk-731[sjtrd]
|
||||||
|
foadouwbu-ibghopzs-pogysh-kcfygvcd-506[ogbcd]
|
||||||
|
rtqlgevkng-hnqygt-ugtxkegu-232[zdgob]
|
||||||
|
yrwxefpi-fyrrc-asvowlst-880[jmzfi]
|
||||||
|
tyepcyletzylw-nlyoj-nzletyr-fdpc-epdetyr-795[jfvnq]
|
||||||
|
rkpqxyib-yxphbq-lmboxqflkp-627[vzmla]
|
||||||
|
xjinphzm-bmvyz-hvbizodx-ytz-gjbdnodxn-967[jmuws]
|
||||||
|
ktfitzbgz-vtgwr-inkvatlbgz-813[tgzbi]
|
||||||
|
hqtyeqsjylu-sbqiiyvyut-fbqijys-whqii-vydqdsydw-634[yqisd]
|
||||||
|
hcd-gsqfsh-dzoghwq-ufogg-qcbhowbasbh-506[hgboq]
|
||||||
|
ryexqpqhteki-uww-qdqboiyi-140[qiewy]
|
||||||
|
bkzrrhehdc-qzaahs-cdoknxldms-625[czsmn]
|
||||||
|
sawlkjevaz-lhwopey-cnwoo-yqopkian-oanreya-966[znhlt]
|
||||||
|
xjgjmapg-hdgdovmt-bmvyz-zbb-yzkgjthzio-577[gzbjm]
|
||||||
|
myxcewob-qbkno-lexxi-wkbuodsxq-250[xboek]
|
||||||
|
nsyjwsfyntsfq-hfsid-htfynsl-wjfhvznxnynts-255[umtns]
|
||||||
|
kpvgtpcvkqpcn-ecpfa-ewuvqogt-ugtxkeg-596[ehsca]
|
||||||
|
vkrhzxgbv-cxeeruxtg-ftgtzxfxgm-579[ymast]
|
||||||
|
pbeebfvir-fpniratre-uhag-genvavat-663[smznt]
|
||||||
|
vehmsegxmzi-glsgspexi-hitpscqirx-802[jszht]
|
||||||
|
tyepcyletzylw-nlyoj-nzletyr-cpdplcns-223[lycen]
|
||||||
|
jxdkbqfz-oxaflxzqfsb-avb-lmboxqflkp-523[mzvny]
|
||||||
|
tcfkqcevkxg-tcddkv-uvqtcig-336[cdsln]
|
||||||
|
ide-htrgti-hrpktcvtg-wjci-ldgzhwde-947[tdghi]
|
||||||
|
ojk-nzxmzo-kgvnodx-bmvnn-ozxcijgjbt-213[nojxz]
|
||||||
|
avw-zljyla-msvdly-yljlpcpun-539[lyajp]
|
||||||
|
rdchjbtg-vgpst-rpcsn-rdpixcv-htgkxrth-661[rtcgh]
|
||||||
|
xlrypetn-dnlgpyrpc-sfye-dezclrp-353[pelry]
|
||||||
|
enqvbnpgvir-enoovg-erfrnepu-455[ftlpj]
|
||||||
|
xjinphzm-bmvyz-xviyt-xjvodib-pnzm-oznodib-291[mlybz]
|
||||||
|
rwcnawjcrxwju-kjbtnc-bqryyrwp-511[tkyns]
|
||||||
|
gokzyxsjon-pvygob-nofovyzwoxd-458[ndtfs]
|
||||||
|
bjfutsneji-hfsid-htfynsl-rfwpjynsl-489[fsjnh]
|
||||||
|
ydjuhdqjyedqb-rqiauj-qdqboiyi-452[qdijy]
|
||||||
|
enzcntvat-rtt-genvavat-351[lznyt]
|
||||||
|
rdadguja-qjccn-advxhixrh-791[yncim]
|
||||||
|
fmsledevhsyw-ikk-irkmriivmrk-646[nlxzm]
|
||||||
|
jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-471[oxpbf]
|
||||||
|
jqwpihizlwca-zijjqb-aitma-408[gzpmw]
|
||||||
|
pyknyegle-afmamjyrc-bcqgel-808[gynip]
|
||||||
|
zbytomdsvo-mkxni-bocokbmr-406[obmkc]
|
||||||
|
wfummczcyx-luvvcn-fuvilunils-526[bavmt]
|
||||||
|
hwdtljsnh-gfxpjy-rfsfljrjsy-541[gpszy]
|
||||||
|
lsyrkjkbnyec-oqq-gybucryz-848[ybckq]
|
||||||
|
oaddaeuhq-vqxxknqmz-xasuefuoe-378[rzmqe]
|
||||||
|
vhglnfxk-zktwx-fbebmtkr-zktwx-wrx-vhgmtbgfxgm-813[xepwt]
|
||||||
|
yrwxefpi-gerhc-hitevxqirx-594[eirxh]
|
||||||
|
mvydjvxodqz-xviyt-xjvodib-rjmfncjk-265[cqirj]
|
||||||
|
kdijqrbu-tou-kiuh-juijydw-140[uijdk]
|
||||||
|
ugjjgkanw-usfvq-vwkayf-970[rntsw]
|
||||||
|
froruixo-fdqgb-ilqdqflqj-569[cylni]
|
||||||
|
gpsxdprixkt-hrpktcvtg-wjci-gtprfjxhxixdc-999[xptcg]
|
||||||
|
kwvacumz-ozilm-akidmvomz-pcvb-nqvivkqvo-460[emnrk]
|
||||||
|
pejji-zvkcdsm-qbkcc-domrxyvyqi-484[cdijk]
|
||||||
|
rdadguja-xcitgcpixdcpa-qphzti-bpgztixcv-791[cipad]
|
||||||
|
rkpqxyib-zxkav-zlxqfkd-qoxfkfkd-965[qiftn]
|
||||||
|
bkzrrhehdc-bnmrtldq-fqzcd-atmmx-qdrdzqbg-937[dqrbm]
|
||||||
|
eqttqukxg-rtqlgevkng-dwppa-fgxgnqrogpv-570[gxetc]
|
||||||
|
zbytomdsvo-mkxni-myxdksxwoxd-510[xdmok]
|
||||||
|
ymszqfuo-rxaiqd-dqmocgueufuaz-274[umtwy]
|
||||||
|
pelbtravp-ovbunmneqbhf-qlr-znantrzrag-663[xlyio]
|
||||||
|
rdadguja-ytaanqtpc-gtprfjxhxixdc-141[krcaf]
|
||||||
|
etaqigpke-hnqygt-eqpvckpogpv-362[pegqk]
|
||||||
|
rtqlgevkng-etaqigpke-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-206[gxszf]
|
||||||
|
fubrjhqlf-fkrfrodwh-sxufkdvlqj-777[pozts]
|
||||||
|
wfintfhynaj-wfggny-xjwanhjx-957[nfjwa]
|
||||||
|
xcitgcpixdcpa-bpvctixr-qphzti-gthtpgrw-479[zjlmc]
|
||||||
|
gntmfefwitzx-hfsid-fsfqdxnx-697[oanif]
|
||||||
|
xgjougizobk-jek-jkvgxzsktz-384[kgjzo]
|
||||||
|
nzydfxpc-rclop-mldvpe-cpdplcns-925[pcdln]
|
||||||
|
ltpedcxots-qphzti-gtrtxkxcv-739[txcpd]
|
||||||
|
gvaaz-fhh-mphjtujdt-233[hajtd]
|
||||||
|
jchipqat-rpcsn-gtprfjxhxixdc-297[cpxhi]
|
||||||
|
gsvvswmzi-gerhc-tyvglewmrk-308[zbdcy]
|
||||||
|
dmybmsuzs-omzpk-oamfuzs-pqhqxabyqzf-508[mzqsa]
|
||||||
|
iruzfrtkzmv-treup-tfrkzex-jkfirxv-295[rfktz]
|
||||||
|
pdjqhwlf-mhoobehdq-vwrudjh-127[hdjoq]
|
||||||
|
rgndvtcxr-hrpktcvtg-wjci-apqdgpidgn-375[jdrhb]
|
||||||
|
sbqiiyvyut-isqludwuh-xkdj-efuhqjyedi-114[qjzpn]
|
||||||
|
lahxpnwrl-npp-nwprwnnarwp-459[ontmq]
|
||||||
|
zntargvp-onfxrg-fnyrf-871[fnrga]
|
||||||
|
molgbzqfib-avb-absbilmjbkq-601[bailm]
|
||||||
|
kpvgtpcvkqpcn-tcddkv-wugt-vguvkpi-492[vkpcg]
|
||||||
|
jfifqxov-doxab-zxkav-zlkqxfkjbkq-341[kxfqa]
|
||||||
|
qfmcusbwq-dzoghwq-ufogg-fsqswjwbu-220[zbjty]
|
||||||
|
xjinphzm-bmvyz-mvwwdo-yzkgjthzio-785[zmhij]
|
||||||
|
ejpanjwpekjwh-ydkykhwpa-owhao-186[hqlfd]
|
||||||
|
nzydfxpc-rclop-prr-cplnbftdtetzy-483[pcrtd]
|
||||||
|
kwtwznct-rmttgjmiv-amzdqkma-590[mtakw]
|
||||||
|
muqfedyput-fbqijys-whqii-iqbui-790[gjxky]
|
||||||
|
egdytrixat-rgndvtcxr-rpcsn-jhtg-ithixcv-115[trcgi]
|
||||||
|
fab-eqodqf-rxaiqd-mzmxkeue-404[eqadf]
|
||||||
|
zotts-xsy-guleyncha-708[ymnbi]
|
||||||
|
mbiyqoxsm-pvygob-gybucryz-536[zbyxv]
|
||||||
|
dmybmsuzs-bxmefuo-sdmee-pqhqxabyqzf-716[mbeqs]
|
||||||
|
qspkfdujmf-ezf-fohjoffsjoh-519[fjohs]
|
||||||
|
nwlddtqtpo-prr-xlcvpetyr-249[owkmz]
|
||||||
|
amlqskcp-epybc-aylbw-amyrgle-bctcjmnkclr-808[clabm]
|
||||||
|
qspkfdujmf-qmbtujd-hsbtt-eftjho-727[tigys]
|
||||||
|
pualyuhapvuhs-thnulapj-msvdly-ylzlhyjo-877[lhuya]
|
||||||
|
diozmivodjivg-zbb-nzmqdxzn-629[zdibm]
|
||||||
|
yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-qerekiqirx-126[erixk]
|
||||||
|
qlm-pbzobq-zxkav-zlxqfkd-zrpqljbo-pbosfzb-575[phqza]
|
||||||
|
irgyyolokj-lruckx-aykx-zkyzotm-904[ubkvy]
|
||||||
|
cebwrpgvyr-pnaql-pbngvat-bcrengvbaf-793[bagnp]
|
||||||
|
wlsiayhcw-wifilzof-wuhxs-mylpcwym-630[wilyc]
|
||||||
|
nglmtuex-ktuubm-nlxk-mxlmbgz-215[egtsz]
|
||||||
|
sbejpbdujwf-dboez-nbobhfnfou-883[jpkmo]
|
||||||
|
qzoggwtwsr-qobrm-gsfjwqsg-480[xkwvm]
|
||||||
|
nwzekwypera-oywrajcan-dqjp-wymqeoepekj-472[zeydw]
|
||||||
|
sawlkjevaz-ywjzu-yqopkian-oanreya-836[ayejk]
|
||||||
|
pybgmyargtc-afmamjyrc-rpyglgle-470[zgmsu]
|
||||||
|
nzwzcqfw-qwzhpc-cplnbftdtetzy-977[zctwf]
|
||||||
|
lhkhszqx-fqzcd-okzrshb-fqzrr-cdudknoldms-651[defrs]
|
||||||
|
ugfkmewj-yjsvw-owshgfarwv-tskcwl-wfyafwwjafy-294[wfajs]
|
||||||
|
gpbepvxcv-gpqqxi-stktadebtci-609[npyad]
|
||||||
|
pxtihgbsxw-vahvhetmx-hixktmbhgl-397[pvcfe]
|
||||||
|
guahyncw-vohhs-fiacmncwm-656[chamn]
|
||||||
|
wfruflnsl-uqfxynh-lwfxx-wjfhvznxnynts-463[fnxlw]
|
||||||
|
lzfmdshb-cxd-dmfhmddqhmf-703[dmfhb]
|
||||||
|
gzefmnxq-eomhqzsqd-tgzf-oazfmuzyqzf-118[zfqme]
|
||||||
|
udskkaxawv-usfvq-ugslafy-hmjuzskafy-658[asufk]
|
||||||
|
ugjjgkanw-vqw-ksdwk-112[kwgja]
|
||||||
|
enqvbnpgvir-cynfgvp-tenff-fuvccvat-975[vfnce]
|
||||||
|
fydelmwp-ojp-nfdezxpc-dpcgtnp-353[gziom]
|
||||||
|
fmsledevhsyw-gpewwmjmih-glsgspexi-tyvglewmrk-178[egmsw]
|
||||||
|
shmml-enoovg-freivprf-585[efmor]
|
||||||
|
bnqqnrhud-atmmx-qdrdzqbg-651[qdbmn]
|
||||||
|
pxtihgbsxw-vahvhetmx-nlxk-mxlmbgz-943[xhmbg]
|
||||||
|
xfbqpojafe-dipdpmbuf-tbmft-441[wuizc]
|
||||||
|
zsxyfgqj-uqfxynh-lwfxx-ijxnls-749[futrq]
|
||||||
|
oaddaeuhq-nmewqf-dqmocgueufuaz-508[mwlcv]
|
||||||
|
buzahisl-zjhclunly-obua-zavyhnl-201[kzylj]
|
||||||
|
yhwooebeaz-iwcjapey-oywrajcan-dqjp-zaoecj-524[aejoc]
|
||||||
|
bwx-amkzmb-qvbmzvibqwvit-lgm-zmikycqaqbqwv-772[dubva]
|
||||||
|
oxmeeuruqp-ngzzk-fqotzaxask-638[zaeko]
|
||||||
|
xfbqpojafe-qmbtujd-hsbtt-efwfmpqnfou-363[fbqte]
|
||||||
|
iehepwnu-cnwza-xqjju-nayaerejc-472[eajnc]
|
||||||
|
ytu-xjhwjy-jll-ijxnls-385[moyjn]
|
||||||
|
nvrgfezqvu-treup-tfrkzex-wzeretzex-997[fpvnt]
|
||||||
|
kwvacumz-ozilm-moo-camz-bmabqvo-434[sanvt]
|
||||||
|
lxaaxbren-ouxfna-bjunb-277[abnxu]
|
||||||
|
gpsxdprixkt-uadltg-tcvxcttgxcv-453[txcgd]
|
||||||
|
owshgfarwv-jsttal-hmjuzskafy-658[asfhj]
|
||||||
|
pbafhzre-tenqr-qlr-ynobengbel-403[ebnrl]
|
||||||
|
yaxsnlcrun-mhn-jlzdrbrcrxw-121[wngsc]
|
||||||
|
bgmxkgtmbhgte-vtgwr-vhtmbgz-tgterlbl-995[gtbme]
|
||||||
|
nvrgfezqvu-avccpsvre-tljkfdvi-jvimztv-269[vcefi]
|
||||||
|
apwmeclga-pyzzgr-dglylagle-158[auvsi]
|
||||||
|
qczcftiz-pogysh-rsgwub-350[kcdvs]
|
||||||
|
qlm-pbzobq-gbiivybxk-abpfdk-211[bikpq]
|
||||||
|
crwwv-rkpqxyib-yrkkv-cfkxkzfkd-419[krcfv]
|
||||||
|
sbnqbhjoh-cbtlfu-tupsbhf-285[bhfst]
|
||||||
|
qlm-pbzobq-avb-bkdfkbbofkd-159[golnc]
|
||||||
|
nchhg-jiasmb-lmaqov-902[dpmcw]
|
||||||
|
tagzsrsjvgmk-jsttal-umklgewj-kwjnauw-944[fsqml]
|
||||||
|
rkpqxyib-yxphbq-jxkxdbjbkq-601[npbtf]
|
||||||
|
ujqgywfau-tmffq-hmjuzskafy-736[zmnlk]
|
||||||
|
ujqgywfau-hdsklau-yjskk-umklgewj-kwjnauw-190[kujwa]
|
||||||
|
uqtqbizg-ozilm-jcvvg-lmxizbumvb-850[mhanw]
|
||||||
|
yhtwhnpun-ihzrla-klclsvwtlua-591[lkqzn]
|
||||||
|
sbqiiyvyut-sqdto-seqjydw-sedjqydcudj-738[warvn]
|
||||||
|
bwx-amkzmb-uqtqbizg-ozilm-moo-kwvbiqvumvb-746[wystg]
|
||||||
|
tipfxvezt-vxx-cfxzjkztj-555[xtzfj]
|
||||||
|
cjpibabsepvt-cvooz-sftfbsdi-571[myqsb]
|
||||||
|
ymszqfuo-fab-eqodqf-pkq-xmnadmfadk-274[tkbds]
|
||||||
|
wlqqp-treup-tfrkzex-jkfirxv-581[refkp]
|
||||||
|
lnkfaypeha-fahhuxawj-wjwhuoeo-550[ahwef]
|
||||||
|
lsyrkjkbnyec-oqq-ckvoc-874[azsyv]
|
||||||
|
gvcskirmg-fewoix-wlmttmrk-360[mgikr]
|
||||||
|
irdgrxzex-tipfxvezt-treup-tfrkzex-cfxzjkztj-607[txzer]
|
||||||
|
avw-zljyla-zjhclunly-obua-yljlpcpun-617[lajuy]
|
||||||
|
nwzekwypera-lhwopey-cnwoo-hkceopeyo-134[zulqp]
|
||||||
|
vkppo-sqdto-seqjydw-jhqydydw-114[dqyjo]
|
||||||
|
zixppfcfba-zxkav-zlkqxfkjbkq-679[txhzn]
|
||||||
|
sbnqbhjoh-dboez-sftfbsdi-623[bsdfh]
|
||||||
|
qjopwxha-bhksan-zalhkuiajp-316[ahjkp]
|
||||||
|
yhtwhnpun-thnulapj-ibuuf-klzpnu-773[unhpl]
|
||||||
|
uwtojhynqj-kqtbjw-wjfhvznxnynts-827[ntyqj]
|
||||||
|
jef-iushuj-rkddo-ijehqwu-504[biekf]
|
||||||
|
gspsvjyp-tpewxmg-kveww-gywxsqiv-wivzmgi-672[sryce]
|
||||||
|
rgllk-eomhqzsqd-tgzf-etubbuzs-118[zbegl]
|
||||||
|
shmml-pubpbyngr-ynobengbel-403[bnegl]
|
||||||
|
gsrwyqiv-kvehi-fewoix-wivzmgiw-256[rimyz]
|
||||||
|
iuxxuyobk-yigbktmkx-natz-xkykgxin-852[kxiyb]
|
||||||
|
excdklvo-oqq-vklybkdybi-744[utifh]
|
||||||
|
ojk-nzxmzo-agjrzm-xpnojhzm-nzmqdxz-915[zmjno]
|
||||||
|
qspkfdujmf-sbccju-eftjho-103[byjhc]
|
||||||
|
fodvvlilhg-mhoobehdq-whfkqrorjb-699[taskb]
|
||||||
|
aflwjfslagfsd-usfvq-ogjckzgh-814[emsnh]
|
||||||
|
sebehvkb-uww-tulubefcudj-712[ubewc]
|
||||||
|
egdytrixat-gpbepvxcv-hrpktcvtg-wjci-hidgpvt-531[vzdcg]
|
||||||
|
nsyjwsfyntsfq-zsxyfgqj-gzssd-wjxjfwhm-749[sgmhv]
|
||||||
|
ktfitzbgz-yehpxk-kxvxbobgz-761[ryzea]
|
||||||
|
tcrjjzwzvu-irsszk-rthlzjzkzfe-503[ocepg]
|
||||||
|
dfcxsqhwzs-pibbm-sbuwbssfwbu-558[tocys]
|
||||||
|
nwzekwypera-bhksan-odellejc-758[eakln]
|
||||||
|
qfmcusbwq-qobrm-qcohwbu-fsoqeiwgwhwcb-402[cpzsy]
|
||||||
|
cvabijtm-zijjqb-uizsmbqvo-434[btzma]
|
||||||
|
irdgrxzex-srjbvk-glityrjzex-867[rxegi]
|
||||||
|
rdadguja-tvv-gtrtxkxcv-609[tvadg]
|
||||||
|
wdjcvuvmyjpn-zbb-mznzvmxc-213[ndmaz]
|
||||||
|
vagreangvbany-sybjre-nanylfvf-507[bryme]
|
||||||
|
vjpwncrl-mhn-bqryyrwp-979[rnpwy]
|
||||||
|
jqwpihizlwca-ntwemz-abwziom-642[iyzsa]
|
||||||
|
jchipqat-rwdrdapit-detgpixdch-921[dipta]
|
||||||
|
vqr-ugetgv-tcddkv-eqpvckpogpv-440[vgpcd]
|
||||||
|
ajyqqgdgcb-aylbw-amyrgle-qyjcq-756[qyagb]
|
||||||
|
fbebmtkr-zktwx-utldxm-nlxk-mxlmbgz-553[onbvf]
|
||||||
|
hwdtljsnh-kqtbjw-ijajqturjsy-827[jthqs]
|
||||||
|
sedikcuh-whqtu-sxesebqju-udwyduuhydw-556[rvudf]
|
||||||
|
ipvohghykvbz-tpspahyf-nyhkl-yhiipa-huhsfzpz-123[hpyiz]
|
||||||
|
fubrjhqlf-mhoobehdq-oderudwrub-153[bdhor]
|
||||||
|
mbggf-zjhclunly-obua-dvyrzovw-695[bglou]
|
||||||
|
houngfgxjuay-igtje-aykx-zkyzotm-176[qcita]
|
||||||
|
lugjuacha-mwupyhayl-bohn-xyjulngyhn-318[gnftc]
|
||||||
|
rdggdhxkt-rpcsn-rdpixcv-itrwcdadvn-505[uancd]
|
||||||
|
yaxsnlcrun-ouxfna-jwjuhbrb-199[xnmwj]
|
||||||
|
yrwxefpi-tpewxmg-kveww-wlmttmrk-334[rfqkl]
|
||||||
|
ktwbhtvmbox-unggr-kxtvjnblbmbhg-215[bgthk]
|
||||||
|
amlqskcp-epybc-bwc-pcyaosgqgrgml-600[cgpab]
|
||||||
|
ujqgywfau-usfvq-ugslafy-jwuwanafy-606[uafwy]
|
||||||
|
nwzekwypera-lhwopey-cnwoo-lqnydwoejc-134[xithv]
|
||||||
|
nwzekwypera-acc-naoawnyd-160[itvch]
|
||||||
|
luxciuwncpy-ohmnuvfy-yaa-wihnuchgyhn-526[hnuyc]
|
||||||
|
ygcrqpkbgf-ejqeqncvg-tgegkxkpi-674[gekqc]
|
||||||
|
mtzslklcozfd-qwzhpc-nfdezxpc-dpcgtnp-223[ucwob]
|
||||||
|
tinnm-tzcksf-zcuwghwqg-948[nmktj]
|
||||||
|
rdchjbtg-vgpst-hrpktcvtg-wjci-itrwcdadvn-453[ngtzh]
|
||||||
|
yrwxefpi-nippcfier-hizipstqirx-932[ipref]
|
||||||
|
cvabijtm-xtiabqk-oziaa-kcabwumz-amzdqkm-590[mpqzo]
|
||||||
|
dpmpsgvm-dipdpmbuf-efqmpznfou-259[pmdfu]
|
||||||
|
ynukcajey-nwxxep-zarahkliajp-238[ytaej]
|
||||||
|
zbytomdsvo-mkxni-mykdsxq-nocsqx-770[mosxd]
|
||||||
|
tagzsrsjvgmk-xdgowj-jwuwanafy-814[efhpk]
|
||||||
|
xqvwdeoh-fdqgb-rshudwlrqv-127[jpkat]
|
||||||
|
kpvgtpcvkqpcn-fag-qrgtcvkqpu-596[pcgkq]
|
||||||
|
zlkprjbo-doxab-gbiivybxk-obpbxoze-393[boxik]
|
||||||
|
zbytomdsvo-mrymyvkdo-domrxyvyqi-744[ymodv]
|
||||||
|
jvuzbtly-nyhkl-qlssfilhu-klwhyatlua-695[lhuya]
|
||||||
|
nzydfxpc-rclop-nsznzwlep-xlylrpxpye-145[plnxy]
|
||||||
|
atyzghrk-xghhoz-rghuxgzuxe-748[ghxzr]
|
||||||
|
vhglnfxk-zktwx-ietlmbv-zktll-ftkdxmbgz-787[wbspa]
|
||||||
|
njmjubsz-hsbef-dipdpmbuf-vtfs-uftujoh-623[fubjs]
|
||||||
|
pyknyegle-aylbw-jmegqrgaq-756[egyal]
|
||||||
|
bgmxkgtmbhgte-lvtoxgzxk-angm-vhgmtbgfxgm-137[gmtxb]
|
||||||
|
ydjuhdqjyedqb-vbemuh-jusxdebewo-946[debju]
|
||||||
|
jxdkbqfz-zxkav-zlxqfkd-mrozexpfkd-263[kxzdf]
|
||||||
|
nbhofujd-dipdpmbuf-pqfsbujpot-597[pbdfu]
|
||||||
|
wrs-vhfuhw-fdqgb-vklsslqj-647[sfhlq]
|
||||||
|
vkrhzxgbv-vtgwr-ehzblmbvl-449[knuzb]
|
||||||
|
gsrwyqiv-kvehi-fyrrc-pefsvexsvc-750[versc]
|
||||||
|
hqcfqwydw-vbemuh-ixyffydw-270[fwydh]
|
||||||
|
vetllbybxw-vkrhzxgbv-lvtoxgzxk-angm-ybgtgvbgz-527[jxrwq]
|
||||||
|
bkzrrhehdc-eknvdq-cdrhfm-365[dhrce]
|
||||||
|
cybyjqho-whqtu-rkddo-qsgkyiyjyed-530[ydqhj]
|
||||||
|
ckgvutofkj-hatte-ynovvotm-332[tovka]
|
||||||
|
sawlkjevaz-zua-iwngapejc-758[jzwql]
|
||||||
|
mvhkvbdib-kgvnodx-bmvnn-gjbdnodxn-551[bmkyo]
|
||||||
|
enzcntvat-fpniratre-uhag-grpuabybtl-689[sqkoh]
|
||||||
|
bqvvu-acc-oanreyao-108[acovb]
|
||||||
|
tyepcyletzylw-nlyoj-nzletyr-nfdezxpc-dpcgtnp-275[yelnp]
|
||||||
|
fbebmtkr-zktwx-lvtoxgzxk-angm-kxlxtkva-839[kxtab]
|
||||||
|
ojk-nzxmzo-wvnfzo-vivgtndn-707[mlndw]
|
||||||
|
tpspahyf-nyhkl-qlssfilhu-klwsvftlua-487[iewds]
|
||||||
|
shoewudys-isqludwuh-xkdj-husuylydw-868[tlyhz]
|
||||||
|
qzoggwtwsr-qobrm-oqeiwgwhwcb-116[wgoqb]
|
||||||
|
zlkprjbo-doxab-yxphbq-pxibp-237[ocanz]
|
||||||
|
iruzfrtkzmv-avccpsvre-vexzevvizex-893[nyktl]
|
||||||
|
hqtyeqsjylu-hqrryj-tulubefcudj-894[ujqye]
|
||||||
|
zlkprjbo-doxab-fkqbokxqflkxi-mixpqfz-doxpp-xznrfpfqflk-523[fxkpo]
|
||||||
|
dpmpsgvm-sbccju-dvtupnfs-tfswjdf-129[neysa]
|
||||||
|
qcbgiasf-ufors-dzoghwq-ufogg-zopcfohcfm-246[yhmkz]
|
||||||
|
esyfwlau-ugjjgkanw-usfvq-kzahhafy-242[wnzhb]
|
||||||
|
mbiyqoxsm-lkcuod-nozkbdwoxd-432[odbkm]
|
||||||
|
usfvq-ugslafy-vwhdgqewfl-632[fglqs]
|
||||||
|
gokzyxsjon-zvkcdsm-qbkcc-oxqsxoobsxq-484[xrkfl]
|
||||||
|
hdgdovmt-bmvyz-wvnfzo-gjbdnodxn-395[bwicg]
|
||||||
|
sehheiylu-fhezusjybu-rkddo-udwyduuhydw-530[udhye]
|
||||||
|
glrcplyrgmlyj-aylbw-amyrgle-nspafyqgle-210[dmuny]
|
||||||
|
aflwjfslagfsd-jsttal-xafsfuafy-138[faslj]
|
||||||
|
yuxufmdk-sdmpq-iqmbazulqp-otaoaxmfq-pqbxakyqzf-586[qamfp]
|
||||||
|
jef-iushuj-sxesebqju-ixyffydw-270[iztnj]
|
||||||
|
zvyvgnel-tenqr-enzcntvat-ohaal-ratvarrevat-793[atven]
|
||||||
|
yuxufmdk-sdmpq-vqxxknqmz-ogefayqd-eqdhuoq-612[qdmux]
|
||||||
|
yhtwhnpun-kfl-ylhjxbpzpapvu-357[phlnu]
|
||||||
|
egdytrixat-qjccn-bpcpvtbtci-557[mtpgc]
|
||||||
|
wsvsdkbi-qbkno-mkxni-mykdsxq-ecob-docdsxq-120[dksbo]
|
||||||
|
xtwtelcj-rclop-ojp-dstaatyr-873[omnal]
|
||||||
|
wifilzof-jfumncw-alumm-xypyfijgyhn-318[evfso]
|
||||||
|
mvydjvxodqz-agjrzm-hvivbzhzio-655[vzdhi]
|
||||||
|
jsehsyafy-usfvq-ugslafy-jwuwanafy-840[afsyu]
|
||||||
|
myxcewob-qbkno-nio-bocokbmr-900[obckm]
|
||||||
|
ipvohghykvbz-wshzapj-nyhzz-vwlyhapvuz-539[hzvpy]
|
||||||
|
tbxmlkfwba-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-185[bkopz]
|
||||||
|
rdadguja-eaphixr-vgphh-itrwcdadvn-869[nfpxs]
|
||||||
|
lugjuacha-jfumncw-alumm-zchuhwcha-734[uachm]
|
||||||
|
jsehsyafy-jsttal-jwsuimakalagf-762[mnvlh]
|
||||||
|
zixppfcfba-yrkkv-absbilmjbkq-393[ihgyz]
|
||||||
|
bxaxipgn-vgpst-rdchjbtg-vgpst-rpcsn-rdpixcv-hpath-817[pgtch]
|
||||||
|
rtqlgevkng-ejqeqncvg-hkpcpekpi-154[xpgty]
|
||||||
|
laffe-hgyqkz-xkikobotm-488[kfoab]
|
||||||
|
jfifqxov-doxab-zxkav-zlxqfkd-qoxfkfkd-419[ubaro]
|
||||||
|
myxcewob-qbkno-cmkfoxqob-rexd-zebmrkcsxq-952[boxce]
|
||||||
|
apuut-wvnfzo-rjmfncjk-447[fjnua]
|
||||||
|
lejkrscv-tfcfiwlc-avccpsvre-fgvirkzfej-113[cfver]
|
||||||
|
nglmtuex-cxeeruxtg-kxvxbobgz-215[xegbt]
|
||||||
|
sgmtkzoi-kmm-xkgiwaoyozout-748[qrkst]
|
||||||
|
amppmqgtc-djmucp-rcaflmjmew-912[bcvna]
|
||||||
|
xst-wigvix-fyrrc-wepiw-438[ygref]
|
||||||
|
dzczkrip-xiruv-jtrmvexvi-ylek-fgvirkzfej-295[irvek]
|
||||||
|
diozmivodjivg-xviyt-xjvodib-zibdizzmdib-265[zmrey]
|
||||||
|
rgndvtcxr-ytaanqtpc-stepgibtci-661[tcagi]
|
||||||
|
xgsvgmotm-hgyqkz-jkyomt-358[ajyhb]
|
||||||
|
zloolpfsb-yxphbq-ixyloxqlov-393[loxbp]
|
||||||
|
zilqwikbqdm-jiasmb-uizsmbqvo-668[ibmqs]
|
||||||
|
rtqlgevkng-rncuvke-itcuu-ucngu-206[ucgne]
|
||||||
|
dmybmsuzs-yuxufmdk-sdmpq-eomhqzsqd-tgzf-iadwetab-482[nkqyl]
|
||||||
|
vetllbybxw-ktuubm-hixktmbhgl-345[ikqop]
|
||||||
|
bwx-amkzmb-jcvvg-ikycqaqbqwv-954[symcn]
|
||||||
|
ubhatstkwhnl-ynssr-lvtoxgzxk-angm-kxlxtkva-163[ktxal]
|
||||||
|
zlilocri-yxphbq-pefmmfkd-471[filmp]
|
||||||
|
yflexwxoalrp-zlkprjbo-doxab-zxkav-zlxqfkd-qoxfkfkd-419[xkflo]
|
||||||
|
oxaflxzqfsb-zelzlixqb-xznrfpfqflk-393[flxzq]
|
||||||
|
ixccb-vfdyhqjhu-kxqw-ghyhorsphqw-101[pzgst]
|
||||||
|
pybgmyargtc-qaytclecp-fslr-sqcp-rcqrgle-860[crglp]
|
||||||
|
zbytomdsvo-mkxni-kmaescsdsyx-562[smdko]
|
||||||
|
hwbba-dwppa-ocpcigogpv-570[pabcg]
|
||||||
|
eza-dpncpe-nlyoj-nzletyr-wlmzclezcj-171[elzcn]
|
||||||
|
tbxmlkfwba-mixpqfz-doxpp-zlkqxfkjbkq-159[kxbfp]
|
||||||
|
vetllbybxw-yehpxk-ehzblmbvl-657[blehv]
|
||||||
|
zuv-ykixkz-jek-lotgtiotm-852[ktioz]
|
||||||
|
fnjyxwrinm-mhn-mnyjacvnwc-277[zgpnw]
|
||||||
|
odiih-ljwmh-lxjcrwp-mnenuxyvnwc-615[nwchi]
|
||||||
|
wfummczcyx-wuhxs-qilembij-838[mciuw]
|
||||||
|
sno-rdbqds-bgnbnkzsd-bnmszhmldms-859[sbdnm]
|
||||||
|
nvrgfezqvu-gcrjkzt-xirjj-ivjvrity-555[ylfxv]
|
||||||
|
encuukhkgf-uecxgpigt-jwpv-ujkrrkpi-622[kugpc]
|
||||||
|
lnkfaypeha-xqjju-qoan-paopejc-446[ajpen]
|
||||||
|
kmjezxodgz-ytz-gvwjmvojmt-109[jmzgo]
|
||||||
|
ygcrqpkbgf-hnqygt-octmgvkpi-128[gckpq]
|
||||||
|
jxdkbqfz-mixpqfz-doxpp-tlohpelm-107[pxdfl]
|
||||||
|
xjgjmapg-xviyt-xjvodib-adivixdib-759[ixdjv]
|
||||||
|
laffe-jek-sgtgmksktz-644[vuenb]
|
||||||
|
pbafhzre-tenqr-enoovg-ratvarrevat-975[ymshj]
|
||||||
|
lqwhuqdwlrqdo-vfdyhqjhu-kxqw-uhvhdufk-959[kzlvy]
|
||||||
|
rflsjynh-jll-zxjw-yjxynsl-697[jlyns]
|
||||||
|
wrs-vhfuhw-sodvwlf-judvv-ghvljq-361[vhwdf]
|
||||||
|
ynssr-unggr-tvjnblbmbhg-163[bgnrs]
|
||||||
|
jyfvnlupj-jvsvymbs-yhiipa-zopwwpun-903[nrdma]
|
||||||
|
kzeed-hfsid-uzwhmfxnsl-515[uoyvx]
|
||||||
|
ide-htrgti-uadltg-gtprfjxhxixdc-375[tdgix]
|
||||||
|
sorozgxe-mxgjk-hatte-vaxingyotm-358[fwxei]
|
||||||
|
ydjuhdqjyedqb-fbqijys-whqii-jusxdebewo-582[nuzsj]
|
||||||
|
yknnkoera-xwogap-paydjkhkcu-498[kanop]
|
||||||
|
nzydfxpc-rclop-upwwjmply-opdtry-691[pycdl]
|
||||||
|
dlhwvupglk-jhukf-jvhapun-zlycpjlz-409[lhjpu]
|
||||||
|
kwvacumz-ozilm-moo-bmkpvwtwog-694[mowkv]
|
||||||
|
kmjezxodgz-wpiit-mzxzdqdib-863[anvbu]
|
||||||
|
xlrypetn-nsznzwlep-xlylrpxpye-587[znfwt]
|
||||||
|
pybgmyargtc-qaytclecp-fslr-umpiqfmn-600[nzvej]
|
||||||
|
etyyx-qzaahs-lzqjdshmf-781[ahqsy]
|
||||||
|
ovbunmneqbhf-wryylorna-znantrzrag-221[pnazx]
|
||||||
|
gzefmnxq-bxmefuo-sdmee-ymzmsqyqzf-352[lgvpu]
|
||||||
|
ixeumktoi-jek-jkbkruvsktz-488[mzeun]
|
||||||
|
dzczkrip-xiruv-avccpsvre-glityrjzex-321[eflmp]
|
||||||
|
wfruflnsl-hfsid-fhvznxnynts-307[fnshl]
|
||||||
|
vkppo-rkddo-iqbui-218[dikop]
|
||||||
|
muqfedyput-zubboruqd-mehaixef-452[inbaj]
|
||||||
|
ftzgxmbv-cxeeruxtg-nlxk-mxlmbgz-683[xgmbe]
|
||||||
|
htsxzrjw-lwfij-uqfxynh-lwfxx-hzxytrjw-xjwanhj-827[xjwhf]
|
||||||
|
qekrixmg-wgezirkiv-lyrx-tyvglewmrk-282[regik]
|
||||||
|
ktiaaqnqml-jiasmb-apqxxqvo-226[asvyf]
|
||||||
|
lejkrscv-irdgrxzex-srjbvk-kvtyefcfxp-165[rekvx]
|
||||||
|
hvbizodx-nxvqzibzm-cpio-hvmfzodib-291[izbov]
|
||||||
|
ltpedcxots-tvv-rjhidbtg-htgkxrt-297[tdghr]
|
||||||
|
dlhwvupglk-mbggf-jovjvshal-zlycpjlz-565[lgjvh]
|
||||||
|
xfbqpojafe-tdbwfohfs-ivou-sfbdrvjtjujpo-779[fjobd]
|
||||||
|
kmjezxodgz-xviyt-gvwjmvojmt-577[flhas]
|
||||||
|
jshzzpmplk-jhukf-jvhapun-vwlyhapvuz-669[hpjuv]
|
||||||
|
tfejldvi-xiruv-gcrjkzt-xirjj-drerxvdvek-295[dpsef]
|
||||||
|
zotts-yaa-lymyulwb-968[skymd]
|
||||||
|
rmn-qcapcr-zyqicr-umpiqfmn-704[cmqri]
|
||||||
|
xfbqpojafe-cbtlfu-qvsdibtjoh-727[bfjoq]
|
||||||
|
ykhknbqh-nwxxep-oanreyao-732[naehk]
|
||||||
|
raphhxuxts-hrpktcvtg-wjci-hidgpvt-921[hmzng]
|
||||||
|
yrwxefpi-qmpmxevc-kvehi-gerhc-gsexmrk-hizipstqirx-932[mdsza]
|
||||||
|
xjgjmapg-xviyt-vivgtndn-603[utnks]
|
||||||
|
cxy-bnlanc-mhn-vjwjpnvnwc-745[mtsvn]
|
||||||
|
ujoon-gpbepvxcv-eaphixr-vgphh-uxcpcrxcv-687[pcvxh]
|
||||||
|
ykjoqian-cnwza-iwcjapey-lhwopey-cnwoo-opknwca-264[owacn]
|
||||||
|
lnkfaypeha-oywrajcan-dqjp-zalwnpiajp-108[apjnl]
|
||||||
|
ktwbhtvmbox-yehpxk-mktbgbgz-293[cndif]
|
||||||
|
hqcfqwydw-cqwdujys-rqiauj-qsgkyiyjyed-738[qydjw]
|
||||||
|
amlqskcp-epybc-zyqicr-kylyeckclr-600[sdrzj]
|
||||||
|
bnmrtldq-fqzcd-rbzudmfdq-gtms-zbpthrhshnm-443[dmbhq]
|
||||||
|
nwlddtqtpo-nlyoj-nzletyr-epnsyzwzrj-379[tyrzv]
|
||||||
|
cvabijtm-kpwkwtibm-lmxtwgumvb-980[mbtwi]
|
||||||
|
amlqskcp-epybc-afmamjyrc-jyzmpyrmpw-574[mpyac]
|
||||||
|
aflwjfslagfsd-vqw-dstgjslgjq-424[sfgjl]
|
||||||
|
willimcpy-zfiqyl-xymcah-110[ilycm]
|
||||||
|
kpvgtpcvkqpcn-lgnnadgcp-ujkrrkpi-128[knmqz]
|
||||||
|
wyvqljapsl-buzahisl-ibuuf-lunpullypun-409[wyhza]
|
||||||
|
amlqskcp-epybc-pyzzgr-pcacgtgle-210[cpgae]
|
||||||
|
xtwtelcj-rclop-mldvpe-dstaatyr-821[nkabu]
|
||||||
|
pdjqhwlf-gbh-sxufkdvlqj-751[cdmbz]
|
||||||
|
wkqxodsm-zvkcdsm-qbkcc-ecob-docdsxq-432[cdkoq]
|
||||||
|
xjmmjndqz-wpiit-gjbdnodxn-811[djnim]
|
||||||
|
zlkprjbo-doxab-zelzlixqb-absbilmjbkq-939[blzai]
|
||||||
|
htqtwkzq-xhfajsljw-mzsy-ywfnsnsl-619[lfsnu]
|
||||||
|
zhdsrqlchg-mhoobehdq-xvhu-whvwlqj-361[hqdlo]
|
||||||
|
tcfkqcevkxg-tcorcikpi-ejqeqncvg-uvqtcig-544[lsyzm]
|
||||||
|
kwtwznct-kivlg-zmamizkp-824[ixjen]
|
||||||
|
bkzrrhehdc-qzaahs-rghoohmf-287[hraoz]
|
||||||
|
lxuxaodu-mhn-cajrwrwp-303[aruwx]
|
||||||
|
tcorcikpi-dcumgv-octmgvkpi-700[vygzd]
|
||||||
|
crwwv-zlkprjbo-doxab-yxphbq-bkdfkbbofkd-809[bkdof]
|
||||||
|
xgvnndadzy-xcjxjgvoz-ncdkkdib-447[dnxcg]
|
||||||
|
elrkdcdugrxv-fkrfrodwh-xvhu-whvwlqj-179[eubfs]
|
||||||
|
odkasqzuo-rxaiqd-eqdhuoqe-430[nlyts]
|
||||||
|
vhglnfxk-zktwx-xzz-xgzbgxxkbgz-917[xzgkb]
|
||||||
|
jyfvnlupj-wyvqljapsl-jovjvshal-zlycpjlz-357[jlvpy]
|
||||||
|
gpbepvxcv-eaphixr-vgphh-gtrtxkxcv-687[pvxgh]
|
||||||
|
jrncbavmrq-zntargvp-qlr-qrirybczrag-741[dnzpg]
|
||||||
|
hqfxxnknji-hfsid-knsfshnsl-307[wtfhe]
|
||||||
|
aietsrmdih-nippcfier-stivexmsrw-750[iersm]
|
||||||
|
glrcplyrgmlyj-pyzzgr-pcqcypaf-912[nkoyv]
|
||||||
|
ugfkmewj-yjsvw-hdsklau-yjskk-sfsdqkak-216[ksjad]
|
||||||
|
mhi-lxvkxm-vtgwr-kxtvjnblbmbhg-917[bmvxg]
|
||||||
|
tipfxvezt-irsszk-kvtyefcfxp-451[fteik]
|
||||||
|
jxdkbqfz-mixpqfz-doxpp-qoxfkfkd-939[fxdkp]
|
||||||
|
dsxxw-pyzzgr-qrmpyec-288[prxyz]
|
||||||
|
ejpanjwpekjwh-fahhuxawj-ajcejaanejc-394[jaehw]
|
||||||
|
pinovwgz-xgvnndadzy-xviyt-vxlpdndodji-109[dnvix]
|
||||||
|
szfyrqriuflj-upv-rercpjzj-243[jprqg]
|
||||||
|
dmbttjgjfe-gmpxfs-efqbsunfou-701[fbegj]
|
||||||
|
sgmtkzoi-inuiurgzk-ykxboiky-436[qlcfs]
|
||||||
|
slqryzjc-djmucp-ylyjwqgq-158[jqycl]
|
||||||
|
aflwjfslagfsd-vqw-hmjuzskafy-398[fasjl]
|
||||||
|
slqryzjc-djmucp-pcacgtgle-886[cgjlp]
|
||||||
|
qjopwxha-ywjzu-ajcejaanejc-420[zoehr]
|
||||||
|
amjmpdsj-njyqrga-epyqq-kylyeckclr-756[yksln]
|
||||||
|
zlkprjbo-doxab-zxkav-zlxqfkd-abpfdk-445[kabdx]
|
||||||
|
lhkhszqx-fqzcd-bgnbnkzsd-nodqzshnmr-989[nzdhq]
|
||||||
|
dlhwvupglk-ibuuf-klwhyatlua-591[dzktb]
|
||||||
|
dpotvnfs-hsbef-cbtlfu-ufdiopmphz-623[homsd]
|
||||||
|
ajvyjprwp-npp-mnbrpw-875[pjnrw]
|
||||||
|
lxwbdvna-pajmn-snuuhknjw-mnyuxhvnwc-251[nuwah]
|
||||||
|
vetllbybxw-lvtoxgzxk-angm-xgzbgxxkbgz-865[mknli]
|
||||||
|
aflwjfslagfsd-jsehsyafy-usfvq-vwkayf-268[fsayj]
|
||||||
|
xjgjmapg-agjrzm-gvwjmvojmt-291[jgmav]
|
||||||
|
plolwdub-judgh-iorzhu-dqdobvlv-465[dloub]
|
||||||
|
htqtwkzq-wfggny-fsfqdxnx-645[wsznf]
|
||||||
|
fkqbokxqflkxi-zxkav-zlxqfkd-jxohbqfkd-341[kxfqb]
|
||||||
|
oxjmxdfkd-avb-tlohpelm-653[dlmox]
|
||||||
|
xtwtelcj-rclop-nsznzwlep-epnsyzwzrj-873[zelnp]
|
||||||
|
rtqlgevkng-gii-ceswkukvkqp-466[kgeiq]
|
||||||
|
molgbzqfib-yrkkv-ixyloxqlov-237[lobik]
|
||||||
|
zbytomdsvo-mrymyvkdo-nocsqx-848[pahef]
|
||||||
|
szfyrqriuflj-treup-tfrkzex-ivtvzmzex-867[xejut]
|
||||||
|
upq-tfdsfu-kfmmzcfbo-mphjtujdt-909[fmtud]
|
||||||
|
ykhknbqh-lhwopey-cnwoo-bejwjyejc-342[hwxgn]
|
||||||
|
qfkkj-nsznzwlep-nzyeltyxpye-327[vkmwy]
|
||||||
|
excdklvo-zvkcdsm-qbkcc-psxkxmsxq-900[cvoiz]
|
||||||
|
dszphfojd-dboez-dpbujoh-xpsltipq-623[zbxem]
|
||||||
|
udpsdjlqj-iorzhu-ghsorbphqw-517[hdjop]
|
||||||
|
xcitgcpixdcpa-ide-htrgti-gpqqxi-gthtpgrw-609[gitpc]
|
||||||
|
cybyjqho-whqtu-uww-tuiywd-348[styfx]
|
||||||
|
yuxufmdk-sdmpq-nmewqf-oazfmuzyqzf-924[hfsly]
|
||||||
|
tfejldvi-xiruv-avccpsvre-crsfirkfip-997[rxygp]
|
||||||
|
wsvsdkbi-qbkno-oqq-wkxkqowoxd-822[koqwb]
|
||||||
|
qcbgiasf-ufors-tzcksf-sbuwbssfwbu-610[ivjsc]
|
||||||
|
vkrhzxgbv-wrx-lmhktzx-839[xhkrv]
|
||||||
|
xmrrq-bwddqtwsf-vwnwdghewfl-242[fpmoq]
|
||||||
|
kmjezxodgz-nxvqzibzm-cpio-gjbdnodxn-577[isocd]
|
||||||
|
iutyaskx-mxgjk-kmm-jkyomt-436[kmjtx]
|
||||||
|
ide-htrgti-snt-rjhidbtg-htgkxrt-531[tghir]
|
||||||
|
vkppo-uww-bqrehqjeho-764[xmntl]
|
||||||
|
bdavqofuxq-pkq-ymzmsqyqzf-196[qfmyz]
|
||||||
|
diozmivodjivg-hvbizodx-zbb-ozxcijgjbt-915[zueag]
|
||||||
|
cybyjqho-whqtu-hqrryj-bqrehqjeho-374[hqjry]
|
||||||
|
vcibutulxiom-vohhs-lywycpcha-630[owyks]
|
||||||
|
chnylhuncihuf-wuhxs-fiacmncwm-786[chnuf]
|
||||||
|
xekdwvwnzkqo-ywjzu-ykwpejc-wymqeoepekj-264[dmbln]
|
||||||
|
etyyx-cxd-vnqjrgno-391[hntfq]
|
||||||
|
pwcvonofrcig-dfcxsqhwzs-qobrm-qighcasf-gsfjwqs-194[scfqg]
|
||||||
|
xgvnndadzy-ezggtwzvi-nojmvbz-837[vnsth]
|
||||||
|
dszphfojd-qmbtujd-hsbtt-usbjojoh-467[rskch]
|
||||||
|
npmhcargjc-aylbw-amyrgle-yaosgqgrgml-886[galmr]
|
||||||
|
qczcftiz-gqojsbusf-vibh-twbobqwbu-350[bnsiu]
|
||||||
|
kwvacumz-ozilm-kzgwomvqk-xtiabqk-oziaa-twoqabqka-980[akoqz]
|
||||||
|
dsxxw-zyqicr-cleglccpgle-418[clegx]
|
||||||
|
jrncbavmrq-cynfgvp-tenff-ynobengbel-611[nbefc]
|
||||||
|
hqtyeqsjylu-fbqijys-whqii-tuiywd-322[mitks]
|
||||||
|
rnqnyfwd-lwfij-wfggny-xmnuunsl-697[tseia]
|
||||||
|
fhezusjybu-rqiauj-udwyduuhydw-868[ngyzs]
|
||||||
|
pkl-oaynap-ywjzu-ykwpejc-opknwca-628[pakwy]
|
||||||
|
nuatmlmdpage-vqxxknqmz-geqd-fqefuzs-508[romxa]
|
||||||
|
awzwhofm-ufors-qobrm-qcohwbu-hsqvbczcum-948[obchm]
|
||||||
|
dfcxsqhwzs-rms-fsgsofqv-766[sfqcd]
|
||||||
|
wlqqp-tyftfcrkv-rercpjzj-711[rcfjp]
|
||||||
|
clotzlnetgp-awldetn-rcldd-nzyeltyxpye-743[letdn]
|
||||||
|
lgh-kwujwl-hdsklau-yjskk-vwhsjlewfl-788[lkwhj]
|
||||||
|
uqtqbizg-ozilm-kivlg-kwibqvo-uizsmbqvo-512[iqbov]
|
||||||
|
vetllbybxw-lvtoxgzxk-angm-kxlxtkva-683[xlktv]
|
||||||
|
qyujihctyx-mwupyhayl-bohn-uwkocmcncih-760[chyui]
|
||||||
|
crwwv-zxkav-obzbfsfkd-237[bfkvw]
|
||||||
|
qczcftiz-pogysh-igsf-hsghwbu-610[tnjwm]
|
||||||
|
udpsdjlqj-gbh-hqjlqhhulqj-725[hjqld]
|
||||||
|
yuxufmdk-sdmpq-nmewqf-emxqe-326[meqdf]
|
||||||
|
molgbzqfib-ciltbo-ildfpqfzp-653[bfilo]
|
||||||
|
uwtojhynqj-gfxpjy-ywfnsnsl-151[jnyfs]
|
||||||
|
qvbmzvibqwvit-jiasmb-camz-bmabqvo-330[bmvai]
|
||||||
|
xmtjbzidx-xviyt-xjvodib-xpnojhzm-nzmqdxz-603[torgb]
|
||||||
|
ykjoqian-cnwza-fahhuxawj-qoan-paopejc-628[ajnoc]
|
||||||
|
gvcskirmg-veffmx-irkmriivmrk-906[imrkv]
|
||||||
|
njmjubsz-hsbef-dboez-dpbujoh-bdrvjtjujpo-649[astyb]
|
||||||
|
ovbunmneqbhf-pnaql-pbngvat-jbexfubc-845[yzqwm]
|
||||||
|
joufsobujpobm-kfmmzcfbo-usbjojoh-571[mkpnw]
|
||||||
|
lzfmdshb-cxd-lzmzfdldms-287[dlmzf]
|
||||||
|
froruixo-mhoobehdq-pdunhwlqj-439[ohdqr]
|
||||||
|
xcitgcpixdcpa-rpcsn-rdpixcv-bpcpvtbtci-193[cpitx]
|
||||||
|
dfcxsqhwzs-ksodcbwnsr-xszzmpsob-rsgwub-168[sbwzc]
|
||||||
|
iuruxlar-lruckx-sgtgmksktz-436[krugl]
|
||||||
|
nbhofujd-dboez-fohjoffsjoh-467[ofhjb]
|
||||||
|
pejji-tovvilokx-nozvyiwoxd-276[bzkve]
|
||||||
|
bxaxipgn-vgpst-rpcsn-rdpixcv-rjhidbtg-htgkxrt-583[upjyv]
|
||||||
|
bkzrrhehdc-bzmcx-bnzshmf-lzqjdshmf-443[hzbmc]
|
||||||
|
dpssptjwf-gmpxfs-mphjtujdt-571[pjstd]
|
||||||
|
pdjqhwlf-sodvwlf-judvv-orjlvwlfv-829[tuszv]
|
||||||
|
mfklstdw-tmffq-wfyafwwjafy-918[wmvan]
|
||||||
|
joufsobujpobm-ezf-gjobodjoh-779[xwadm]
|
||||||
|
hafgnoyr-gbc-frperg-rtt-grpuabybtl-481[jcgnd]
|
||||||
|
joufsobujpobm-fhh-tijqqjoh-233[johbf]
|
||||||
|
zuv-ykixkz-vrgyzoi-mxgyy-yzuxgmk-150[yzgkx]
|
||||||
|
ibghopzs-qvcqczohs-qighcasf-gsfjwqs-948[ubrmn]
|
||||||
|
qfmcusbwq-pwcvonofrcig-foppwh-fsgsofqv-584[focpq]
|
||||||
|
aczupnetwp-awldetn-rcldd-qtylyntyr-119[tdlny]
|
||||||
|
dpssptjwf-ezf-sfdfjwjoh-909[znfwy]
|
||||||
|
qxdwpopgsdjh-ytaanqtpc-pcpanhxh-297[pahcd]
|
||||||
|
ucynmlgxcb-aylbw-rpyglgle-626[lgybc]
|
||||||
|
oqnidbshkd-okzrshb-fqzrr-rdquhbdr-573[rdbhq]
|
||||||
|
frqvxphu-judgh-fdqgb-vhuylfhv-647[hfuvd]
|
||||||
|
vhehkyne-cxeeruxtg-hixktmbhgl-319[ehxgk]
|
||||||
|
gsrwyqiv-kvehi-gerhc-gsexmrk-vigimzmrk-412[girek]
|
||||||
|
ajmrxjlcren-yujbcrl-pajbb-bnaerlnb-719[lvzpq]
|
||||||
|
zixppfcfba-bdd-bkdfkbbofkd-393[hnmcz]
|
||||||
|
aflwjfslagfsd-hdsklau-yjskk-ugflsafewfl-918[flsak]
|
||||||
|
xtwtelcj-rclop-upwwjmply-nzyeltyxpye-847[lpyet]
|
||||||
|
oaddaeuhq-qss-dqmocgueufuaz-924[qzwti]
|
||||||
|
tvsnigxmpi-wgezirkiv-lyrx-hitpscqirx-568[irxgp]
|
||||||
|
ksodcbwnsr-qczcftiz-gqojsbusf-vibh-igsf-hsghwbu-272[sbcfg]
|
||||||
|
sgmtkzoi-jek-gtgreyoy-410[tqkns]
|
||||||
|
rzvkjiduzy-kgvnodx-bmvnn-omvdidib-109[fpsxk]
|
||||||
|
diozmivodjivg-rzvkjiduzy-zbb-adivixdib-447[nayqm]
|
||||||
|
froruixo-vfdyhqjhu-kxqw-rshudwlrqv-517[rhqud]
|
||||||
|
dmpuamofuhq-dmnnuf-ymzmsqyqzf-222[mwnak]
|
||||||
|
mybbycsfo-zvkcdsm-qbkcc-wkbuodsxq-380[bcksd]
|
||||||
|
tcrjjzwzvu-wcfnvi-vexzevvizex-633[vzeci]
|
||||||
|
qzoggwtwsr-gqojsbusf-vibh-hsqvbczcum-870[sbgqc]
|
||||||
|
enzcntvat-cynfgvp-tenff-phfgbzre-freivpr-845[xnfot]
|
||||||
|
gsvvswmzi-gerhc-gsexmrk-stivexmsrw-984[segmr]
|
||||||
|
fhezusjybu-vbemuh-iqbui-244[iektm]
|
||||||
|
oqnidbshkd-idkkxadzm-qdzbpthrhshnm-469[gekyh]
|
||||||
|
pybgmyargtc-cee-nspafyqgle-574[egyac]
|
||||||
|
jyddc-gerhc-gsexmrk-vigimzmrk-672[gmrcd]
|
||||||
|
tipfxvezt-gcrjkzt-xirjj-rercpjzj-399[ldquc]
|
||||||
|
bdavqofuxq-bxmefuo-sdmee-dqeqmdot-768[hwmck]
|
||||||
|
fbebmtkr-zktwx-vtgwr-hixktmbhgl-475[tbkgh]
|
||||||
|
irgyyolokj-igtje-iugzotm-rumoyzoiy-202[mpijw]
|
||||||
|
fbebmtkr-zktwx-xzz-kxlxtkva-865[yicwo]
|
||||||
|
tyepcyletzylw-dnlgpyrpc-sfye-nfdezxpc-dpcgtnp-145[badwi]
|
||||||
|
vrurcjah-pajmn-ljwmh-anbnjalq-849[ajnhl]
|
||||||
|
rtqlgevkng-ecpfa-fgukip-700[gefkp]
|
||||||
|
pdjqhwlf-froruixo-udeelw-wudlqlqj-907[kymab]
|
||||||
|
tinnm-xszzmpsob-qcbhowbasbh-688[nhcdm]
|
||||||
|
nij-mywlyn-wuhxs-lywycpcha-318[ywchl]
|
||||||
|
fnjyxwrinm-ouxfna-ldbcxvna-bnaerln-979[naxbf]
|
||||||
|
ajvyjprwp-bljenwpna-qdwc-anjlzdrbrcrxw-823[jrwan]
|
||||||
|
diozmivodjivg-wpiit-mzxzdqdib-551[kmhon]
|
||||||
|
nij-mywlyn-dyffsvyuh-xyjfisgyhn-656[yfnhi]
|
||||||
|
fhezusjybu-zubboruqd-vydqdsydw-504[dubyq]
|
||||||
|
ubhatstkwhnl-lvtoxgzxk-angm-kxvxbobgz-579[xbgkt]
|
||||||
|
xcitgcpixdcpa-rwdrdapit-htgkxrth-557[zastp]
|
||||||
|
wfintfhynaj-jll-hzxytrjw-xjwanhj-281[jhnwa]
|
||||||
|
irgyyolokj-vrgyzoi-mxgyy-rumoyzoiy-800[sptbo]
|
||||||
|
jvyyvzpcl-yhkpvhjapcl-ibuuf-aljouvsvnf-227[vjlpu]
|
||||||
|
iruzfrtkzmv-treup-kirzezex-841[rzeik]
|
||||||
|
cxy-bnlanc-ljwmh-ujkxajcxah-979[waqkz]
|
||||||
|
qzoggwtwsr-foppwh-difqvogwbu-948[wgofp]
|
||||||
|
qyujihctyx-dyffsvyuh-zchuhwcha-552[hycuf]
|
||||||
|
yknnkoera-lhwopey-cnwoo-pnwejejc-992[enowc]
|
||||||
|
zovldbkfz-zxkav-zlxqfkd-xkxivpfp-289[vtcos]
|
||||||
|
mrxivrexmsrep-glsgspexi-erepcwmw-750[btrnl]
|
||||||
|
udskkaxawv-kusnwfywj-zmfl-dgyaklauk-866[xeozd]
|
||||||
|
esyfwlau-tmffq-vwnwdghewfl-632[czoml]
|
||||||
|
hjgbwuladw-kusnwfywj-zmfl-esfsywewfl-294[xwfie]
|
||||||
|
hwbba-rncuvke-itcuu-ocpcigogpv-232[cubgi]
|
||||||
|
vhkkhlbox-vtgwr-xgzbgxxkbgz-631[typnq]
|
||||||
|
nvrgfezqvu-szfyrqriuflj-vxx-jkfirxv-139[krijl]
|
||||||
|
iuruxlar-zuv-ykixkz-lruckx-xkykgxin-826[kxuir]
|
||||||
|
yhwooebeaz-ywjzu-yqopkian-oanreya-966[ynwkb]
|
||||||
|
iuxxuyobk-pkrrehkgt-xkgiwaoyozout-176[sjwtp]
|
||||||
|
glrcplyrgmlyj-djmucp-qrmpyec-236[clmpr]
|
||||||
|
pejji-tovvilokx-bocokbmr-588[obijk]
|
||||||
|
hplazytkpo-upwwjmply-dpcgtnpd-119[pdltw]
|
||||||
|
nij-mywlyn-xsy-jolwbumcha-136[yjlmn]
|
||||||
|
pynffvsvrq-ohaal-fgbentr-923[fanrv]
|
||||||
|
lgh-kwujwl-kusnwfywj-zmfl-kwjnauwk-736[wkjlu]
|
||||||
|
dszphfojd-sbccju-mbcpsbupsz-727[sbcpd]
|
||||||
|
ixeumktoi-lruckx-zkinturume-800[ktsyl]
|
||||||
|
fmsledevhsyw-tvsnigxmpi-veffmx-viwievgl-412[veifm]
|
||||||
|
mrxivrexmsrep-fyrrc-qevoixmrk-880[wtmdx]
|
||||||
|
qmpmxevc-kvehi-wgezirkiv-lyrx-wlmttmrk-620[zyxjd]
|
||||||
|
zixppfcfba-oxyyfq-qbzeklildv-289[fbilp]
|
||||||
|
nwlddtqtpo-dnlgpyrpc-sfye-wlmzclezcj-431[jefsy]
|
||||||
|
tinnm-foppwh-oqeiwgwhwcb-688[fzyjx]
|
||||||
|
plolwdub-judgh-fdqgb-ghyhorsphqw-413[hystk]
|
||||||
|
bwx-amkzmb-zijjqb-bmkpvwtwog-460[bmwjk]
|
||||||
|
qcbgiasf-ufors-pibbm-ghcfous-896[bfscg]
|
||||||
|
ktwbhtvmbox-vetllbybxw-cxeeruxtg-tgterlbl-215[tmybs]
|
||||||
|
lqwhuqdwlrqdo-mhoobehdq-vwrudjh-387[dhqow]
|
||||||
|
lgh-kwujwl-tskcwl-vwhdgqewfl-684[afnbs]
|
||||||
|
yuxufmdk-sdmpq-rxaiqd-efadmsq-976[mczye]
|
||||||
|
ftzgxmbv-unggr-kxlxtkva-917[ezfmx]
|
||||||
|
rmn-qcapcr-aylbw-amyrgle-ylyjwqgq-158[prcqj]
|
||||||
|
fhezusjybu-rqiauj-husuylydw-582[uyhjs]
|
||||||
|
apuut-xviyt-xjvodib-yzkvmohzio-525[yomvc]
|
||||||
|
mybbycsfo-dyz-combod-zvkcdsm-qbkcc-oxqsxoobsxq-848[obcsd]
|
||||||
|
yhwooebeaz-lhwopey-cnwoo-zalhkuiajp-706[oaehw]
|
||||||
|
bqxnfdmhb-bzmcx-trdq-sdrshmf-469[zdyht]
|
||||||
|
dmpuamofuhq-vqxxknqmz-pqbmdfyqzf-924[qmfdp]
|
||||||
|
kmjezxodgz-ytz-mzvxlpdndodji-889[gefcn]
|
||||||
|
apuut-xviyt-xjvodib-mznzvmxc-369[vximt]
|
||||||
|
fodvvlilhg-surmhfwloh-hjj-hqjlqhhulqj-647[hljqf]
|
||||||
|
tipfxvezt-srjbvk-tljkfdvi-jvimztv-269[vtijf]
|
||||||
|
ikhcxvmbex-xzz-labiibgz-423[qnzsg]
|
||||||
|
qzchnzbshud-azrjds-lzmzfdldms-885[xubgy]
|
||||||
|
eadalsjq-yjsvw-vqw-esjcwlafy-398[ajswe]
|
||||||
|
oxmeeuruqp-bxmefuo-sdmee-etubbuzs-898[stupo]
|
||||||
|
frqvxphu-judgh-xqvwdeoh-fdqgb-frdwlqj-zrunvkrs-257[dqrfh]
|
||||||
|
ltpedcxots-gpbepvxcv-qphzti-igpxcxcv-349[jzdyi]
|
||||||
|
vhkkhlbox-vtgwr-phkdlahi-969[tmszy]
|
||||||
|
cvabijtm-jcvvg-lmdmtwxumvb-226[nvfca]
|
||||||
|
sedikcuh-whqtu-sqdto-qsgkyiyjyed-790[dqsye]
|
||||||
|
gzefmnxq-bdavqofuxq-rxaiqd-ymzmsqyqzf-690[zklij]
|
||||||
|
zntargvp-cynfgvp-tenff-qrcyblzrag-351[sqzyh]
|
||||||
|
xfbqpojafe-dboez-xpsltipq-857[ehgum]
|
||||||
|
uqtqbizg-ozilm-jcvvg-lmaqov-980[xzwsi]
|
||||||
|
xjgjmapg-ezggtwzvi-xpnojhzm-nzmqdxz-161[zgjmx]
|
||||||
|
muqfedyput-vbemuh-fkhsxqiydw-920[udefh]
|
||||||
|
kzeed-gfxpjy-ywfnsnsl-489[xeoyn]
|
||||||
|
pynffvsvrq-onfxrg-ynobengbel-741[nfbeg]
|
||||||
|
froruixo-iorzhu-rshudwlrqv-647[rouhi]
|
||||||
|
amjmpdsj-qaytclecp-fslr-qyjcq-938[cjqal]
|
||||||
|
otzkxtgzoutgr-jek-iayzuskx-ykxboik-826[kotxz]
|
||||||
|
tpspahyf-nyhkl-jhukf-zavyhnl-279[hyafk]
|
||||||
|
pualyuhapvuhs-ihzrla-ylhjxbpzpapvu-929[lbncu]
|
||||||
|
odiih-ajkkrc-mnbrpw-355[ikrab]
|
||||||
|
votubcmf-gmpxfs-bdrvjtjujpo-363[jbfmo]
|
||||||
|
zgmfyxypbmsq-rmn-qcapcr-bwc-pcacgtgle-704[ztspm]
|
||||||
|
uqtqbizg-ozilm-nchhg-jiasmb-ivitgaqa-382[snpaf]
|
||||||
|
willimcpy-jfumncw-alumm-lyuwkocmcncih-734[cmliu]
|
||||||
|
ibghopzs-qvcqczohs-hsqvbczcum-506[chqsz]
|
||||||
|
ugjjgkanw-tmffq-vwkayf-216[lfrby]
|
||||||
|
pynffvsvrq-pnaql-erprvivat-507[vpraf]
|
||||||
|
aczupnetwp-nlyoj-nzletyr-pyrtyppctyr-197[pytnr]
|
||||||
|
vkppo-sqdto-seqjydw-bewyijysi-686[sydei]
|
||||||
|
dpotvnfs-hsbef-ezf-qvsdibtjoh-337[fsbde]
|
||||||
|
wlqqp-avccpsvre-ivtvzmzex-425[vcepq]
|
||||||
|
jfifqxov-doxab-gbiivybxk-jxohbqfkd-549[skgzo]
|
||||||
|
rgndvtcxr-jchipqat-rpcsn-igpxcxcv-713[cprxg]
|
||||||
|
ykhknbqh-xqjju-wymqeoepekj-576[ejkqh]
|
||||||
|
pejji-mrymyvkdo-domrxyvyqi-536[ymdij]
|
||||||
|
wihmogyl-aluxy-xsy-womnigyl-mylpcwy-786[ylmwg]
|
||||||
|
jlidywncfy-zfiqyl-mbcjjcha-162[cjyfi]
|
||||||
|
pynffvsvrq-sybjre-grpuabybtl-455[byavk]
|
||||||
|
uqtqbizg-ozilm-uiovmbqk-akidmvomz-pcvb-bziqvqvo-694[xywnk]
|
||||||
|
lxaaxbren-ouxfna-ydalqjbrwp-225[mibtg]
|
||||||
|
joufsobujpobm-kfmmzcfbo-dvtupnfs-tfswjdf-675[ijokq]
|
||||||
|
crwwv-gbiivybxk-pqloxdb-913[rtmzn]
|
||||||
|
pkl-oaynap-nwxxep-bejwjyejc-576[jfmel]
|
||||||
|
wfummczcyx-gcfcnuls-aluxy-wuhxs-wihnuchgyhn-786[giqsn]
|
||||||
|
htsxzrjw-lwfij-ojqqdgjfs-ijajqturjsy-229[tjxbs]
|
||||||
|
qczcftiz-foppwh-rsgwub-246[exnyt]
|
||||||
|
lnkfaypeha-xwogap-naoawnyd-342[zynls]
|
||||||
|
thnulapj-zjhclunly-obua-thuhnltlua-201[luhan]
|
||||||
|
vkppo-fbqijys-whqii-bqrehqjeho-504[lkosn]
|
||||||
|
eqpuwogt-itcfg-ecpfa-qrgtcvkqpu-622[cgpqt]
|
||||||
|
odkasqzuo-oazegyqd-sdmpq-otaoaxmfq-efadmsq-222[aoqdm]
|
||||||
|
ide-htrgti-bxaxipgn-vgpst-qjccn-pcpanhxh-453[pcghi]
|
||||||
|
luxciuwncpy-jfumncw-alumm-xyjulngyhn-552[unclm]
|
||||||
|
plolwdub-judgh-hjj-zrunvkrs-777[yfulq]
|
||||||
|
pejji-lexxi-oxqsxoobsxq-458[xoeij]
|
||||||
|
uzfqdzmfuazmx-pkq-fdmuzuzs-170[npsqv]
|
||||||
|
bknsykmdsfo-zvkcdsm-qbkcc-cdybkqo-614[fastx]
|
||||||
|
qfkkj-upwwjmply-qtylyntyr-873[yjklp]
|
||||||
|
hqcfqwydw-zubboruqd-ijehqwu-218[djvhz]
|
||||||
|
kmjezxodgz-pinovwgz-zbb-ncdkkdib-473[vimty]
|
||||||
|
bknsykmdsfo-myvybpev-mkxni-mykdsxq-bocokbmr-562[sdwfr]
|
||||||
|
eqttqukxg-gii-hkpcpekpi-960[yljdr]
|
||||||
|
drxevkzt-wcfnvi-cfxzjkztj-607[twoxz]
|
||||||
|
vkppo-rkddo-ijehqwu-504[dkope]
|
||||||
|
rgllk-rxaiqd-dqmocgueufuaz-456[mxkzr]
|
||||||
|
ktiaaqnqml-moo-xczkpiaqvo-122[aoqik]
|
||||||
|
amjmpdsj-njyqrga-epyqq-pcqcypaf-600[pqajy]
|
||||||
|
rwcnawjcrxwju-npp-ujkxajcxah-199[jacwx]
|
||||||
|
fmsledevhsyw-gspsvjyp-gerhc-gsexmrk-ywiv-xiwxmrk-412[segmr]
|
||||||
|
ajmrxjlcren-kdwwh-anbnjalq-745[myzet]
|
||||||
|
aoubshwq-tinnm-suu-fsoqeiwgwhwcb-480[wsubh]
|
||||||
|
rdggdhxkt-rpcsn-hpath-531[tsamh]
|
||||||
|
pbafhzre-tenqr-pnaql-pbngvat-nanylfvf-715[upmid]
|
||||||
|
zbytomdsvo-cmkfoxqob-rexd-gybucryz-562[obycd]
|
||||||
|
bkwzkqsxq-mkxni-ecob-docdsxq-978[ksmtq]
|
||||||
|
oknkvcta-itcfg-ecpfa-ncdqtcvqta-414[lcwjp]
|
||||||
|
fydelmwp-clmmte-cpnptgtyr-405[jlgak]
|
||||||
|
tcorcikpi-ecpfa-gpikpggtkpi-804[picgk]
|
||||||
|
xtwtelcj-rclop-upwwjmply-hzcvdsza-327[clpwj]
|
||||||
|
tcfkqcevkxg-ecpfa-eqcvkpi-ncdqtcvqta-752[cqekt]
|
||||||
|
etaqigpke-tcddkv-uvqtcig-440[tcdeg]
|
||||||
|
raphhxuxts-qxdwpopgsdjh-rpcsn-rdpixcv-sthxvc-843[tvexn]
|
||||||
|
atyzghrk-xghhoz-ktmotkkxotm-748[kthog]
|
||||||
|
fmsledevhsyw-nippcfier-asvowlst-412[zksal]
|
||||||
|
oaxadrgx-eomhqzsqd-tgzf-eqdhuoqe-846[zfylm]
|
||||||
|
qcbgiasf-ufors-dzoghwq-ufogg-qcbhowbasbh-194[bgofh]
|
||||||
|
qvbmzvibqwvit-bwx-amkzmb-jiasmb-xczkpiaqvo-122[bimva]
|
||||||
|
qfkkj-prr-hzcvdsza-639[dqmts]
|
||||||
|
jvyyvzpcl-ibuuf-bzly-alzapun-981[mnakf]
|
||||||
|
dsxxw-cee-pcacgtgle-626[odsgr]
|
||||||
|
buzahisl-zjhclunly-obua-zlycpjlz-617[rsglh]
|
||||||
|
gpewwmjmih-tpewxmg-kveww-jmrergmrk-594[mwegr]
|
||||||
|
aietsrmdih-hci-stivexmsrw-516[hsvof]
|
||||||
|
ujoon-ytaanqtpc-stepgibtci-219[tacin]
|
||||||
|
kpvgtpcvkqpcn-fag-ceswkukvkqp-830[cijob]
|
||||||
|
etaqigpke-uecxgpigt-jwpv-ocpcigogpv-154[gpcei]
|
||||||
|
eqnqthwn-tcddkv-rwtejcukpi-674[tcdek]
|
||||||
|
mhi-lxvkxm-ktuubm-nlxk-mxlmbgz-241[mxklb]
|
||||||
|
avw-zljyla-wshzapj-nyhzz-ylzlhyjo-149[plqkx]
|
||||||
|
xekdwvwnzkqo-nwxxep-odellejc-862[xyzwn]
|
||||||
|
pkl-oaynap-bhksan-qoan-paopejc-498[ojduv]
|
||||||
|
xjinphzm-bmvyz-xjgjmapg-ezggtwzvi-zibdizzmdib-499[zigmb]
|
||||||
|
bdavqofuxq-rxaiqd-bgdotmeuzs-508[clbmv]
|
||||||
|
xzwrmkbqtm-jcvvg-ewzsapwx-902[wmvxz]
|
||||||
|
dmybmsuzs-rxaiqd-xmnadmfadk-846[dmasx]
|
||||||
|
surmhfwloh-exqqb-vwrudjh-127[hqruw]
|
||||||
|
gntmfefwitzx-ojqqdgjfs-xytwflj-827[xgtuv]
|
||||||
|
tbxmlkfwba-zxkav-zlxqfkd-ildfpqfzp-965[jncig]
|
||||||
|
sbnqbhjoh-tdbwfohfs-ivou-qvsdibtjoh-597[rftxz]
|
||||||
|
hqcfqwydw-fbqijys-whqii-iqbui-322[iqwbf]
|
||||||
|
forwcoqhwjs-xszzmpsob-gvwddwbu-324[ftyzu]
|
||||||
|
zlilocri-oxjmxdfkd-ciltbo-pbosfzbp-991[gjars]
|
||||||
|
kwzzwaqdm-rmttgjmiv-uizsmbqvo-434[mziqt]
|
||||||
|
willimcpy-gcfcnuls-aluxy-mwupyhayl-bohn-yhachyylcha-162[kcimx]
|
||||||
|
uqtqbizg-ozilm-kivlg-uizsmbqvo-954[pifvj]
|
||||||
|
ugdgjxmd-tskcwl-wfyafwwjafy-762[wfadg]
|
||||||
|
ajyqqgdgcb-bwc-qyjcq-262[qcbgj]
|
||||||
|
yknnkoera-oywrajcan-dqjp-wjwhuoeo-602[oajnw]
|
||||||
|
bqxnfdmhb-qzaahs-rzkdr-963[abdhq]
|
||||||
|
dwbcjkun-mhn-jwjuhbrb-693[niusd]
|
||||||
|
wlqqp-wcfnvi-crsfirkfip-373[nrtqs]
|
||||||
|
guahyncw-wbiwifuny-xymcah-240[wyach]
|
||||||
|
qfkkj-prr-opgpwzaxpye-613[pkrae]
|
||||||
|
cqwdujys-tou-tufbeocudj-322[ucdjo]
|
||||||
|
wfruflnsl-wfggny-ijuqtdrjsy-931[wjznm]
|
||||||
|
bnqqnrhud-okzrshb-fqzrr-cdrhfm-105[rhqbd]
|
||||||
|
yhtwhnpun-tpspahyf-nyhkl-jovjvshal-zlycpjlz-487[hlpyj]
|
||||||
|
iutyaskx-mxgjk-hatte-lotgtiotm-176[shzku]
|
||||||
|
gntmfefwitzx-kqtbjw-xfqjx-645[nmfsa]
|
||||||
|
jvsvymbs-jhukf-jbzavtly-zlycpjl-695[frnkz]
|
||||||
|
dlhwvupglk-zjhclunly-obua-jvuahputlua-825[ulahj]
|
||||||
|
wyvqljapsl-jhukf-jvhapun-ylzlhyjo-487[jlhya]
|
||||||
|
ghkmaihex-hucxvm-lmhktzx-267[hmxka]
|
||||||
|
irgyyolokj-vrgyzoi-mxgyy-xkikobotm-670[ryfvl]
|
||||||
|
kwzzwaqdm-zijjqb-amzdqkma-564[qzdtv]
|
||||||
|
rflsjynh-idj-xytwflj-541[jflyd]
|
||||||
|
emixwvqhml-ntwemz-zmkmqdqvo-200[zmbdq]
|
||||||
|
kzgwomvqk-rmttgjmiv-abwziom-330[mtnsk]
|
||||||
|
xjgjmapg-wpiit-vivgtndn-499[weiza]
|
||||||
|
cebwrpgvyr-pnaql-grpuabybtl-117[xqmjc]
|
||||||
|
egdytrixat-uadltg-uxcpcrxcv-297[ctxad]
|
||||||
|
gvaaz-ezf-tfswjdft-623[fatzd]
|
||||||
|
excdklvo-mkxni-mykdsxq-mecdywob-cobfsmo-692[mocdk]
|
||||||
|
ovbunmneqbhf-pnaql-bcrengvbaf-351[mtgcw]
|
||||||
|
nwlddtqtpo-clmmte-nzyeltyxpye-509[ydnsh]
|
||||||
|
froruixo-udeelw-vwrudjh-309[sxgvu]
|
||||||
|
hqcfqwydw-sxesebqju-cqhaujydw-660[fghtp]
|
||||||
|
bpvctixr-rwdrdapit-ldgzhwde-895[sfioq]
|
||||||
|
ajmrxjlcren-yaxsnlcrun-bljenwpna-qdwc-fxatbqxy-797[fnjis]
|
||||||
|
lugjuacha-zfiqyl-uhufsmcm-370[uacfh]
|
||||||
|
houngfgxjuay-pkrrehkgt-iayzuskx-ykxboik-852[kguxy]
|
||||||
|
gcfcnuls-aluxy-luxciuwncpy-jfumncw-alumm-uhufsmcm-214[zftvs]
|
||||||
|
oxmeeuruqp-otaoaxmfq-emxqe-794[drzyv]
|
||||||
|
nvrgfezqvu-upv-tfekrzedvek-867[evfkr]
|
||||||
|
uwtojhynqj-xhfajsljw-mzsy-zxjw-yjxynsl-801[jyswx]
|
||||||
|
zixppfcfba-yxphbq-jxohbqfkd-887[zgoyn]
|
||||||
|
qczcftiz-qvcqczohs-aobousasbh-402[coqsz]
|
||||||
|
lejkrscv-upv-tfekrzedvek-919[ekvrc]
|
||||||
|
chnylhuncihuf-zfiqyl-zchuhwcha-604[magtu]
|
||||||
|
vetllbybxw-lvtoxgzxk-angm-ybgtgvbgz-605[gbltv]
|
||||||
|
dmpuamofuhq-omzpk-qzsuzqqduzs-820[quzmd]
|
||||||
|
rdggdhxkt-gpqqxi-rdcipxcbtci-219[yrlha]
|
||||||
|
tfejldvi-xiruv-wcfnvi-jvimztvj-243[fqclr]
|
||||||
|
foadouwbu-dzoghwq-ufogg-gvwddwbu-324[dgouw]
|
||||||
|
tbxmlkfwba-pzxsbkdbo-erkq-bkdfkbbofkd-913[hgans]
|
||||||
|
gpbepvxcv-rpcsn-itrwcdadvn-453[sbuap]
|
||||||
|
szfyrqriuflj-srjbvk-ivrthlzjzkzfe-633[sqwil]
|
||||||
|
jqwpihizlwca-jiasmb-ivitgaqa-122[amzud]
|
||||||
|
bqvvu-ywjzu-qoan-paopejc-264[ajopq]
|
||||||
|
mvydjvxodqz-wpiit-gvwjmvojmt-525[oabkn]
|
||||||
|
ktiaaqnqml-moo-zmikycqaqbqwv-252[qamik]
|
||||||
|
dpmpsgvm-cbtlfu-sfdfjwjoh-909[pntzm]
|
||||||
|
nzcczdtgp-nsznzwlep-qtylyntyr-171[nztyc]
|
||||||
|
htqtwkzq-idj-rfwpjynsl-723[ndmel]
|
||||||
|
gzefmnxq-nmewqf-eqdhuoqe-300[eqfmn]
|
||||||
|
qzlozfhmf-cxd-lzqjdshmf-469[fzdhl]
|
||||||
|
pinovwgz-mvydjvxodqz-xviyt-xjvodib-yzndbi-447[pztyh]
|
||||||
|
gspsvjyp-gerhc-gsexmrk-vieguymwmxmsr-256[gmser]
|
||||||
|
ygcrqpkbgf-tcfkqcevkxg-hnqygt-vtckpkpi-102[puovq]
|
||||||
|
jsehsyafy-tmffq-vwhdgqewfl-112[rnach]
|
||||||
|
qmpmxevc-kvehi-hci-eguymwmxmsr-204[mechi]
|
||||||
|
tcfkqcevkxg-tcorcikpi-gii-gpikpggtkpi-544[wytzs]
|
||||||
|
pbafhzre-tenqr-enzcntvat-onfxrg-ratvarrevat-845[raten]
|
||||||
|
shoewudys-rqiauj-bqrehqjeho-270[ehqjo]
|
||||||
|
xjinphzm-bmvyz-ojk-nzxmzo-ezggtwzvi-zibdizzmdib-577[zimbd]
|
||||||
|
rkpqxyib-bdd-pbosfzbp-939[bpdfi]
|
||||||
|
vcibutulxiom-vumeyn-omyl-nymncha-786[ziwys]
|
||||||
|
nvrgfezqvu-upv-ivrthlzjzkzfe-321[vzefr]
|
||||||
|
krxqjijamxdb-yujbcrl-pajbb-dbna-cnbcrwp-303[bjacr]
|
||||||
|
zixppfcfba-mixpqfz-doxpp-qbzeklildv-653[zdxgu]
|
||||||
|
lsyrkjkbnyec-mkxni-gybucryz-640[ykbcn]
|
||||||
|
qspkfdujmf-kfmmzcfbo-dpoubjonfou-155[fomub]
|
||||||
|
sno-rdbqds-rbzudmfdq-gtms-cdozqsldms-755[yaubo]
|
||||||
|
houngfgxjuay-vrgyzoi-mxgyy-ygrky-462[ygoru]
|
||||||
|
gcfcnuls-aluxy-wifilzof-yaa-omyl-nymncha-266[alycf]
|
||||||
|
hwdtljsnh-gzssd-xfqjx-463[fajso]
|
||||||
|
htwwtxnaj-idj-hzxytrjw-xjwanhj-281[hzrnq]
|
||||||
|
sorozgxe-mxgjk-lruckx-xkgiwaoyozout-176[oxgkr]
|
||||||
|
ynssr-vtgwr-vhtmbgz-ftgtzxfxgm-475[gtfmr]
|
||||||
|
rtqlgevkng-lgnnadgcp-yqtmujqr-648[nelzc]
|
||||||
|
kwtwznct-rmttgjmiv-camz-bmabqvo-460[nmbls]
|
||||||
|
surmhfwloh-fdqgb-wudlqlqj-959[lqdfh]
|
||||||
|
iutyaskx-mxgjk-hgyqkz-rumoyzoiy-644[ykgim]
|
||||||
|
jqwpihizlwca-kivlg-kwibqvo-wxmzibqwva-434[iwqva]
|
||||||
|
amppmqgtc-djmucp-asqrmkcp-qcptgac-496[cpmaq]
|
||||||
|
apuut-xjmmjndqz-wpiit-vivgtndn-187[intdj]
|
||||||
|
ftzgxmbv-vtgwr-wxlbzg-267[gbtvw]
|
||||||
|
eza-dpncpe-mldvpe-wlmzclezcj-171[eclpz]
|
||||||
|
rnqnyfwd-lwfij-wfggny-ijuqtdrjsy-827[fjnwy]
|
||||||
|
aflwjfslagfsd-xdgowj-ghwjslagfk-684[fgajl]
|
||||||
|
lzfmdshb-eknvdq-rsnqzfd-859[ybjfz]
|
||||||
|
hqtyeqsjylu-uww-tufbeocudj-582[uejqt]
|
||||||
|
qfkkj-nsznzwlep-dstaatyr-223[aknst]
|
||||||
|
ubhatstkwhnl-xzz-kxvxbobgz-267[umogq]
|
||||||
|
xekdwvwnzkqo-oywrajcan-dqjp-ykjpwejiajp-238[mtbvo]
|
||||||
|
cebwrpgvyr-sybjre-qrfvta-195[rbevy]
|
||||||
|
hjgbwuladw-usfvq-esfsywewfl-710[mpiho]
|
||||||
|
lujbbrornm-kjbtnc-fxatbqxy-823[ywamx]
|
||||||
|
ugjjgkanw-uzgugdslw-hmjuzskafy-476[stfoh]
|
||||||
|
fmsledevhsyw-fewoix-pefsvexsvc-724[scznt]
|
||||||
|
zlkprjbo-doxab-bdd-obzbfsfkd-419[bdofk]
|
||||||
|
vcibutulxiom-wuhxs-nluchcha-864[uchil]
|
||||||
|
yhkpvhjapcl-ihzrla-dvyrzovw-305[qyhmr]
|
||||||
|
hmsdqmzshnmzk-qzlozfhmf-qzaahs-zmzkxrhr-287[zhmqs]
|
||||||
|
gzefmnxq-dmnnuf-etubbuzs-482[nubef]
|
||||||
|
ejpanjwpekjwh-ywjzu-ykwpejc-nayaerejc-550[jewap]
|
||||||
|
cxy-bnlanc-npp-mnyuxhvnwc-433[nvmyt]
|
||||||
|
jfifqxov-doxab-gbiivybxk-obzbfsfkd-601[epyzn]
|
||||||
|
pkl-oaynap-xqjju-wjwhuoeo-680[joapu]
|
||||||
|
jef-iushuj-hqtyeqsjylu-rqiauj-bewyijysi-842[hyzgu]
|
||||||
|
dfcxsqhwzs-tzcksf-aobousasbh-896[wkqxh]
|
||||||
|
lahxpnwrl-ljwmh-bjunb-693[jtoyp]
|
||||||
|
rnqnyfwd-lwfij-gfxpjy-wjhjnansl-931[jnfwl]
|
||||||
|
buzahisl-jvyyvzpcl-jhukf-jvhapun-klwhyatlua-617[ahluj]
|
||||||
|
jchipqat-eaphixr-vgphh-bpgztixcv-271[hpiac]
|
||||||
|
zlkprjbo-doxab-avb-absbilmjbkq-107[wbymr]
|
||||||
|
eqpuwogt-itcfg-dcumgv-fgxgnqrogpv-362[gcfop]
|
||||||
|
rdadguja-qjccn-gtrtxkxcv-791[cadgj]
|
||||||
|
etaqigpke-oknkvcta-itcfg-hnqygt-hkpcpekpi-674[mcoya]
|
||||||
|
gspsvjyp-hci-wxsveki-386[myuqs]
|
||||||
|
jef-iushuj-vbemuh-mehaixef-920[ehufi]
|
||||||
|
encuukhkgf-fag-tgceswkukvkqp-752[kguce]
|
||||||
|
npmhcargjc-njyqrga-epyqq-kypicrgle-444[cgpqr]
|
||||||
|
xtwtelcj-rclop-mldvpe-dpcgtnpd-379[pcdlt]
|
||||||
|
nchhg-kpwkwtibm-mvoqvmmzqvo-252[mvhko]
|
||||||
|
uqtqbizg-ozilm-jiasmb-uizsmbqvo-122[ktxvs]
|
||||||
|
nwlddtqtpo-mldvpe-fdpc-epdetyr-509[dpetl]
|
||||||
|
wfintfhynaj-idj-qfgtwfytwd-229[efudw]
|
||||||
|
yhwooebeaz-nwilwcejc-ydkykhwpa-owhao-160[skuyi]
|
||||||
29
2016/d05/ex1/ex1.py
Executable file
29
2016/d05/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import hashlib
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def crack_password(door_id: str) -> str:
|
||||||
|
password: list[str] = []
|
||||||
|
for i in itertools.count():
|
||||||
|
hash = hashlib.md5((door_id + str(i)).encode()).hexdigest()
|
||||||
|
if not hash.startswith("00000"):
|
||||||
|
continue
|
||||||
|
password.append(hash[5])
|
||||||
|
if len(password) == 8:
|
||||||
|
break
|
||||||
|
return "".join(password)
|
||||||
|
|
||||||
|
return crack_password(input.strip())
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d05/ex1/input
Normal file
1
2016/d05/ex1/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
wtnhxymk
|
||||||
34
2016/d05/ex2/ex2.py
Executable file
34
2016/d05/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import hashlib
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def crack_password(door_id: str) -> str:
|
||||||
|
password = ["_"] * 8
|
||||||
|
for i in itertools.count():
|
||||||
|
hash = hashlib.md5((door_id + str(i)).encode()).hexdigest()
|
||||||
|
if not hash.startswith("00000"):
|
||||||
|
continue
|
||||||
|
pos = hash[5]
|
||||||
|
if pos not in ("0", "1", "2", "3", "4", "5", "6", "7"):
|
||||||
|
continue
|
||||||
|
if password[int(pos)] != "_":
|
||||||
|
continue
|
||||||
|
password[int(pos)] = hash[6]
|
||||||
|
if all(c != "_" for c in password):
|
||||||
|
break
|
||||||
|
return "".join(password)
|
||||||
|
|
||||||
|
return crack_password(input.strip())
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d05/ex2/input
Normal file
1
2016/d05/ex2/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
wtnhxymk
|
||||||
24
2016/d06/ex1/ex1.py
Executable file
24
2016/d06/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def error_correct(messages: list[str]) -> str:
|
||||||
|
res: list[str] = []
|
||||||
|
for i in range(len(messages[0])):
|
||||||
|
res.append(collections.Counter(l[i] for l in messages).most_common()[0][0])
|
||||||
|
return "".join(res)
|
||||||
|
|
||||||
|
messages = input.splitlines()
|
||||||
|
return error_correct(messages)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
572
2016/d06/ex1/input
Normal file
572
2016/d06/ex1/input
Normal file
|
|
@ -0,0 +1,572 @@
|
||||||
|
cqvkxhip
|
||||||
|
tgswqbjh
|
||||||
|
ymbqjoau
|
||||||
|
yakqfnvb
|
||||||
|
klwpoxak
|
||||||
|
ebftersc
|
||||||
|
muhqajoy
|
||||||
|
sttjluap
|
||||||
|
nbfrccxf
|
||||||
|
pjtxsrdt
|
||||||
|
pcehiulx
|
||||||
|
imtchqqu
|
||||||
|
shtdcptu
|
||||||
|
gziwdtvt
|
||||||
|
gkisoote
|
||||||
|
dmodaoyb
|
||||||
|
mqykfphl
|
||||||
|
rchfhsxr
|
||||||
|
expmfmmi
|
||||||
|
eyyjzupd
|
||||||
|
ysoqeeib
|
||||||
|
phedgslu
|
||||||
|
xmwituwf
|
||||||
|
cibvkswh
|
||||||
|
dusqdmkm
|
||||||
|
oajlhpcj
|
||||||
|
nqbvrtsv
|
||||||
|
eytohbvb
|
||||||
|
byjvrycg
|
||||||
|
oorhjlll
|
||||||
|
bflfjdaz
|
||||||
|
wtydcsem
|
||||||
|
xinelpsx
|
||||||
|
bkrenkkc
|
||||||
|
kuhljsqo
|
||||||
|
fhkrtpkg
|
||||||
|
qkiohori
|
||||||
|
rzebhkwv
|
||||||
|
prpldmyf
|
||||||
|
dstdrxbo
|
||||||
|
jgtenhmc
|
||||||
|
vpibddhk
|
||||||
|
nkytfkno
|
||||||
|
hldsxaoq
|
||||||
|
qgwusrkd
|
||||||
|
xlsuudux
|
||||||
|
buxfxaiy
|
||||||
|
uljrvuen
|
||||||
|
awoyppai
|
||||||
|
igplagub
|
||||||
|
kqfiefgc
|
||||||
|
cqjukquf
|
||||||
|
djxuuizu
|
||||||
|
zvuetjli
|
||||||
|
uwcrclvy
|
||||||
|
gtdlktiv
|
||||||
|
cvwbsaxj
|
||||||
|
zpwzzepj
|
||||||
|
vmdmkgqz
|
||||||
|
qfsxdnrf
|
||||||
|
mhqtikwv
|
||||||
|
fduxoluy
|
||||||
|
emhhanfc
|
||||||
|
zglqrchc
|
||||||
|
jvvjspsu
|
||||||
|
rndsqnky
|
||||||
|
itzjeqfr
|
||||||
|
lnpslqsj
|
||||||
|
yxohoogq
|
||||||
|
oqmmzizo
|
||||||
|
ginjbszz
|
||||||
|
qhdnjnxs
|
||||||
|
mjtbhrzl
|
||||||
|
zorxielb
|
||||||
|
xflyknux
|
||||||
|
xrssqfpx
|
||||||
|
tcvrpzxn
|
||||||
|
sgnholch
|
||||||
|
nlpbrofn
|
||||||
|
qclukwkr
|
||||||
|
foylzchc
|
||||||
|
hieqxicp
|
||||||
|
nqvwnhpt
|
||||||
|
ssubumix
|
||||||
|
vtbpattp
|
||||||
|
ncgmzjmv
|
||||||
|
wtzedksg
|
||||||
|
mvlatfbj
|
||||||
|
ithfpwgr
|
||||||
|
dmqvfilt
|
||||||
|
lbnovpit
|
||||||
|
hqfzxflr
|
||||||
|
pgeeancn
|
||||||
|
rpdiwwle
|
||||||
|
ehkipwnx
|
||||||
|
pncgkqey
|
||||||
|
chzakbif
|
||||||
|
doooixwk
|
||||||
|
xztjzzrs
|
||||||
|
vhyqtnja
|
||||||
|
cbzmragf
|
||||||
|
rxqhsehw
|
||||||
|
rxzuqnoy
|
||||||
|
kvldlabx
|
||||||
|
crsslumd
|
||||||
|
cbxmypaq
|
||||||
|
qzevgrco
|
||||||
|
teiavilb
|
||||||
|
yjuhsfkj
|
||||||
|
asutrkwn
|
||||||
|
csgkdxtw
|
||||||
|
fbdppqjn
|
||||||
|
ivaewkpq
|
||||||
|
iznlnknb
|
||||||
|
btxpvjxk
|
||||||
|
rrpatocg
|
||||||
|
yxgkxenm
|
||||||
|
yrszvqpo
|
||||||
|
olhjkcac
|
||||||
|
dmaxpvog
|
||||||
|
wzicsunc
|
||||||
|
eoaozekn
|
||||||
|
oqbcrcje
|
||||||
|
jjpcwqae
|
||||||
|
zlyibfto
|
||||||
|
nkkarjbd
|
||||||
|
rrsrbrlr
|
||||||
|
gllxvuve
|
||||||
|
pkanrgds
|
||||||
|
bylfpxdm
|
||||||
|
tzkvedot
|
||||||
|
eidxawif
|
||||||
|
nwvcofjz
|
||||||
|
xkfverdu
|
||||||
|
wgncgvvy
|
||||||
|
epwrztow
|
||||||
|
mybcqyza
|
||||||
|
arxfmrfd
|
||||||
|
utcbwrta
|
||||||
|
iwdfihgp
|
||||||
|
tkskahas
|
||||||
|
vvkmupxb
|
||||||
|
ffetjcgu
|
||||||
|
nmaoaihp
|
||||||
|
wilheaug
|
||||||
|
pmshnqgg
|
||||||
|
pzbjnbtw
|
||||||
|
zlxbrzhz
|
||||||
|
xwikirug
|
||||||
|
rprmighu
|
||||||
|
xaaaioxr
|
||||||
|
mqxpjfgw
|
||||||
|
ejhezvgh
|
||||||
|
brjmtonm
|
||||||
|
wskkweze
|
||||||
|
kkaxuuib
|
||||||
|
mdrbckzy
|
||||||
|
idpwlzfg
|
||||||
|
fqfdktuq
|
||||||
|
jnurlaba
|
||||||
|
bbgftoqt
|
||||||
|
sgiuadsr
|
||||||
|
pwzcfnir
|
||||||
|
mytlszbv
|
||||||
|
uxcwljqs
|
||||||
|
lyrangoq
|
||||||
|
lnmbpgej
|
||||||
|
qjjugsps
|
||||||
|
kptbbita
|
||||||
|
sppvfzzw
|
||||||
|
ghkleimh
|
||||||
|
aupnupvy
|
||||||
|
tzxtqzev
|
||||||
|
dbcyghnu
|
||||||
|
qaygxqjo
|
||||||
|
vgscfmwb
|
||||||
|
raoylhwp
|
||||||
|
gewyhjjh
|
||||||
|
bsozmyma
|
||||||
|
skpkdxcx
|
||||||
|
qcngjsxk
|
||||||
|
xlznquqa
|
||||||
|
tztogrtf
|
||||||
|
bvnovdaf
|
||||||
|
crlrvjsq
|
||||||
|
afbpxgwl
|
||||||
|
gwbeomez
|
||||||
|
aezkolyv
|
||||||
|
cooulafb
|
||||||
|
dnrsyvda
|
||||||
|
ljudufiz
|
||||||
|
ctwxlryc
|
||||||
|
djmebdhh
|
||||||
|
ktoaoxmd
|
||||||
|
afqaqbbj
|
||||||
|
mobvjjyk
|
||||||
|
yplopnti
|
||||||
|
kwkqjzol
|
||||||
|
fcvncctm
|
||||||
|
pkbzlejz
|
||||||
|
axxxbdqj
|
||||||
|
gnjurhkl
|
||||||
|
qakjwsvw
|
||||||
|
vkoagapm
|
||||||
|
tpeyuvqi
|
||||||
|
omejmbtw
|
||||||
|
yhitogvj
|
||||||
|
ybpwtcvb
|
||||||
|
xtnuyfyh
|
||||||
|
isvpwgza
|
||||||
|
ozdntafh
|
||||||
|
hysgmgvh
|
||||||
|
zbgkvytj
|
||||||
|
fntphlnd
|
||||||
|
xjyujmbw
|
||||||
|
uvnhgphl
|
||||||
|
decpnkwq
|
||||||
|
kmkepzcp
|
||||||
|
lwegdttv
|
||||||
|
epkpsehc
|
||||||
|
uouovxth
|
||||||
|
agvppzan
|
||||||
|
zxllwuvw
|
||||||
|
ektemcjl
|
||||||
|
zegwoyif
|
||||||
|
hqhrdyzq
|
||||||
|
qiyxumhk
|
||||||
|
trbebaka
|
||||||
|
etjxsihf
|
||||||
|
yxjgfvnf
|
||||||
|
joywcwmz
|
||||||
|
teeqmoik
|
||||||
|
qjknvrmq
|
||||||
|
avpxxuni
|
||||||
|
naemzbma
|
||||||
|
jpbxexkk
|
||||||
|
ifevcqzn
|
||||||
|
tcnibepd
|
||||||
|
yzppffml
|
||||||
|
xhqgnbqc
|
||||||
|
lvvopbzw
|
||||||
|
pnzmeuon
|
||||||
|
ovzzvvsh
|
||||||
|
mcqmuqjp
|
||||||
|
oadvyhfk
|
||||||
|
tkgnxpyy
|
||||||
|
mvbisygc
|
||||||
|
occsftic
|
||||||
|
fawfwbvy
|
||||||
|
hqmqpuam
|
||||||
|
ptjxkjtk
|
||||||
|
hzxuosye
|
||||||
|
zingpdhg
|
||||||
|
jiombirp
|
||||||
|
vjtvrses
|
||||||
|
fdlzglxq
|
||||||
|
ggooqynz
|
||||||
|
fmwotljx
|
||||||
|
mnzzmfro
|
||||||
|
vtvjvcqu
|
||||||
|
kmpiufet
|
||||||
|
hwsvlelq
|
||||||
|
wdenjddo
|
||||||
|
gfqtffby
|
||||||
|
cxneiwee
|
||||||
|
wtribxye
|
||||||
|
gvuszzzu
|
||||||
|
pugjyrqp
|
||||||
|
yewglqml
|
||||||
|
beqgcrqn
|
||||||
|
azmucset
|
||||||
|
kicbbxtu
|
||||||
|
bmihylgt
|
||||||
|
edjrinqf
|
||||||
|
vvdretyn
|
||||||
|
zkakzfkp
|
||||||
|
qbraqzwo
|
||||||
|
ujpgjzdc
|
||||||
|
hdobaxgr
|
||||||
|
atghhhaw
|
||||||
|
ouucgcws
|
||||||
|
iodycvik
|
||||||
|
ljjdonpe
|
||||||
|
nnekdlaz
|
||||||
|
lbrzjrkn
|
||||||
|
jjwewnji
|
||||||
|
tfdkekdf
|
||||||
|
eidbjaiz
|
||||||
|
hssryuot
|
||||||
|
oajvmyuj
|
||||||
|
fziqlofo
|
||||||
|
uisyryfh
|
||||||
|
ssucyqxa
|
||||||
|
wyvmbyuq
|
||||||
|
fomhuool
|
||||||
|
scyogldx
|
||||||
|
uznjymzz
|
||||||
|
tnmfndhu
|
||||||
|
wmaiqhjd
|
||||||
|
jrtvsvys
|
||||||
|
zpgdzcdw
|
||||||
|
rpzjgslv
|
||||||
|
uulfdwba
|
||||||
|
gfctmdso
|
||||||
|
jcqqmnxe
|
||||||
|
hbzxgupz
|
||||||
|
zbhofhjo
|
||||||
|
szmkzygs
|
||||||
|
ydsnzkwe
|
||||||
|
djbctccs
|
||||||
|
utqjhlzr
|
||||||
|
dslwhsra
|
||||||
|
ujxkxald
|
||||||
|
panonqfl
|
||||||
|
brhfqycu
|
||||||
|
adewetuw
|
||||||
|
rzsxqpyd
|
||||||
|
ypfaxikk
|
||||||
|
vgoncwxp
|
||||||
|
kqcrmyil
|
||||||
|
vwsswwlt
|
||||||
|
bjxktjpi
|
||||||
|
lyzyaehh
|
||||||
|
noccjwkt
|
||||||
|
volhauxw
|
||||||
|
zeeaczxk
|
||||||
|
cgiyzqtg
|
||||||
|
wrflucju
|
||||||
|
mupwfuwq
|
||||||
|
tlgvwoqm
|
||||||
|
laybkcqh
|
||||||
|
mawgcbyq
|
||||||
|
ofuaudem
|
||||||
|
gtkhbeuu
|
||||||
|
svrzwaxw
|
||||||
|
ohqiojux
|
||||||
|
mnmttbve
|
||||||
|
jlluhifp
|
||||||
|
zuhdfnaq
|
||||||
|
hsedbspi
|
||||||
|
rkqoshpx
|
||||||
|
qzvdlvuc
|
||||||
|
rwbglsly
|
||||||
|
djpwgibn
|
||||||
|
edzgvmws
|
||||||
|
teacriww
|
||||||
|
gcvzijna
|
||||||
|
llokdnqu
|
||||||
|
dkywadmh
|
||||||
|
madxishe
|
||||||
|
feharxjj
|
||||||
|
sqzpbcgu
|
||||||
|
ohmflgzd
|
||||||
|
qrrsyggg
|
||||||
|
sxxrafvs
|
||||||
|
xnaterpk
|
||||||
|
tdiytzmh
|
||||||
|
wecsvxnm
|
||||||
|
uiksxtzm
|
||||||
|
ypqpajdd
|
||||||
|
fyaoughg
|
||||||
|
epvdtbni
|
||||||
|
pyynubyw
|
||||||
|
dpjdgbaf
|
||||||
|
vlomtyym
|
||||||
|
zpitxkwr
|
||||||
|
tzclhsoz
|
||||||
|
wduicuqg
|
||||||
|
sltpfxwo
|
||||||
|
iyrmivtk
|
||||||
|
hdmfndbx
|
||||||
|
znqwrzrs
|
||||||
|
fxktgznx
|
||||||
|
indnyerl
|
||||||
|
airalvum
|
||||||
|
jfsfyysy
|
||||||
|
svztyezl
|
||||||
|
qsjpktkb
|
||||||
|
xfujksji
|
||||||
|
jkymepzm
|
||||||
|
lrtlztdg
|
||||||
|
nluspned
|
||||||
|
huwocmgk
|
||||||
|
nygyugbk
|
||||||
|
ryzsjezz
|
||||||
|
uxwwczou
|
||||||
|
awrcdzad
|
||||||
|
tobynxxz
|
||||||
|
swicrqsv
|
||||||
|
jqywnfns
|
||||||
|
kdzvcwmh
|
||||||
|
gogmydcr
|
||||||
|
dkcuvthh
|
||||||
|
hkmraojf
|
||||||
|
kcgbpskp
|
||||||
|
qgknjgtt
|
||||||
|
oywbqczg
|
||||||
|
oiqpwmcv
|
||||||
|
fxjrhvce
|
||||||
|
laaizayr
|
||||||
|
xfcldeuu
|
||||||
|
govaqtom
|
||||||
|
dbcymhvq
|
||||||
|
yjzeuyxc
|
||||||
|
sejtfvqn
|
||||||
|
pbvavgov
|
||||||
|
tpitipok
|
||||||
|
lnfxhraz
|
||||||
|
whbqsgli
|
||||||
|
beuhoifp
|
||||||
|
pojyvmuz
|
||||||
|
yynnekkn
|
||||||
|
nxggwods
|
||||||
|
nkhpvkct
|
||||||
|
rcxwiluq
|
||||||
|
gnhsygno
|
||||||
|
nwwgewiu
|
||||||
|
kcbqnvcb
|
||||||
|
jiisqtqt
|
||||||
|
dochmmei
|
||||||
|
cwmwfrwl
|
||||||
|
hcautqpg
|
||||||
|
oihxktet
|
||||||
|
yrcekmmv
|
||||||
|
lxoyyqxp
|
||||||
|
vlbvilra
|
||||||
|
uqnsdjdf
|
||||||
|
jadyopgr
|
||||||
|
iwunbaps
|
||||||
|
wrplbwpj
|
||||||
|
shfuglla
|
||||||
|
knhgmlsg
|
||||||
|
riknnrmg
|
||||||
|
hoxzmvsr
|
||||||
|
qvqdqxrv
|
||||||
|
lyyvpffj
|
||||||
|
ghhflirv
|
||||||
|
khmzdart
|
||||||
|
qixervoz
|
||||||
|
fdgemrrn
|
||||||
|
uvnbxxpz
|
||||||
|
lqvanhjt
|
||||||
|
umorijwr
|
||||||
|
sgogttye
|
||||||
|
jlfgdzoc
|
||||||
|
barxtobf
|
||||||
|
czrzjduo
|
||||||
|
vlgkvnek
|
||||||
|
prknsjfr
|
||||||
|
uleiwboe
|
||||||
|
mxaswrft
|
||||||
|
ihqcepmh
|
||||||
|
awfqxael
|
||||||
|
hqvzrkbw
|
||||||
|
zwvciodj
|
||||||
|
czyrbdhq
|
||||||
|
ixhfswys
|
||||||
|
ndauoxcn
|
||||||
|
lhhwxiry
|
||||||
|
adpagord
|
||||||
|
suuxfdnq
|
||||||
|
nynlzhfj
|
||||||
|
ffmwgpyj
|
||||||
|
idbgnwev
|
||||||
|
wuculiup
|
||||||
|
cymyvkgm
|
||||||
|
fifqbhvs
|
||||||
|
ijxfzmrq
|
||||||
|
hugjbhin
|
||||||
|
aeffbcfp
|
||||||
|
ywxtejmz
|
||||||
|
qpprytsg
|
||||||
|
kcmlmbeo
|
||||||
|
ruomfeex
|
||||||
|
vvtpcfnk
|
||||||
|
zcihodib
|
||||||
|
nnfoffoi
|
||||||
|
rmldwivo
|
||||||
|
ejrzqyln
|
||||||
|
ifnjdpab
|
||||||
|
abiidqmo
|
||||||
|
aglmsjkr
|
||||||
|
xwqghpda
|
||||||
|
gufhhjer
|
||||||
|
ubjzhfgj
|
||||||
|
glhagkrm
|
||||||
|
wiwhahqd
|
||||||
|
lbyhcebg
|
||||||
|
ahhhxupc
|
||||||
|
dulzuzyi
|
||||||
|
xxdqhiod
|
||||||
|
ydkrksxo
|
||||||
|
pgdazjfi
|
||||||
|
ebrjoyrr
|
||||||
|
maejpwkm
|
||||||
|
xekimgsi
|
||||||
|
jvntcosc
|
||||||
|
wrfiyvmb
|
||||||
|
hfgzughl
|
||||||
|
wgbwylwl
|
||||||
|
tpjgkkye
|
||||||
|
wsspddss
|
||||||
|
ctoyeuvv
|
||||||
|
skjcqabz
|
||||||
|
wfutxuew
|
||||||
|
oqymawht
|
||||||
|
xeqmpvcm
|
||||||
|
hrmflsjx
|
||||||
|
rstnycbh
|
||||||
|
aavqqxcc
|
||||||
|
ouawtykt
|
||||||
|
kmxcjxxe
|
||||||
|
heudiqlo
|
||||||
|
srmiwwrw
|
||||||
|
ufavnfdy
|
||||||
|
xfokmkax
|
||||||
|
vnzztetb
|
||||||
|
goevrbmb
|
||||||
|
wfkthpfj
|
||||||
|
ddesetaa
|
||||||
|
vygkqvdn
|
||||||
|
qsyemmqr
|
||||||
|
iqlyiqtx
|
||||||
|
esvuchui
|
||||||
|
pfslklic
|
||||||
|
genqjcpi
|
||||||
|
bumqsxkx
|
||||||
|
msvbjoip
|
||||||
|
lghjsxdw
|
||||||
|
elukpmbf
|
||||||
|
qmipavgm
|
||||||
|
iafoaecd
|
||||||
|
usidajnf
|
||||||
|
vxsymknf
|
||||||
|
oyfjsysv
|
||||||
|
mpwtxlvv
|
||||||
|
kogsobli
|
||||||
|
jmgwktdj
|
||||||
|
rgztrmby
|
||||||
|
dnrcfisj
|
||||||
|
ottnehjl
|
||||||
|
zsqbinds
|
||||||
|
zmufvgrd
|
||||||
|
fcalplxx
|
||||||
|
jcwqwnvm
|
||||||
|
myjowlcd
|
||||||
|
nodixwaa
|
||||||
|
phfnpbve
|
||||||
|
kexcgape
|
||||||
|
ldmlswbk
|
||||||
|
naxeikbg
|
||||||
|
cgmlnbsb
|
||||||
|
vuwbdcnb
|
||||||
|
bwxbhmgy
|
||||||
|
ziadnccv
|
||||||
|
bacypeeq
|
||||||
|
tbluknup
|
||||||
|
btanytry
|
||||||
|
bqddnwwl
|
||||||
|
urieqmyv
|
||||||
|
csrdslqa
|
||||||
|
fsfiyiai
|
||||||
|
ceasodly
|
||||||
|
jetpbhos
|
||||||
|
xcqzgosd
|
||||||
|
ydqiuyzh
|
||||||
|
vxpzumjp
|
||||||
|
ruwlxvle
|
||||||
|
exrrmafx
|
||||||
|
kbfikzdl
|
||||||
|
bhvvzgfn
|
||||||
|
ivckwbga
|
||||||
24
2016/d06/ex2/ex2.py
Executable file
24
2016/d06/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def error_correct(messages: list[str]) -> str:
|
||||||
|
res: list[str] = []
|
||||||
|
for i in range(len(messages[0])):
|
||||||
|
res.append(collections.Counter(l[i] for l in messages).most_common()[-1][0])
|
||||||
|
return "".join(res)
|
||||||
|
|
||||||
|
messages = input.splitlines()
|
||||||
|
return error_correct(messages)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
572
2016/d06/ex2/input
Normal file
572
2016/d06/ex2/input
Normal file
|
|
@ -0,0 +1,572 @@
|
||||||
|
cqvkxhip
|
||||||
|
tgswqbjh
|
||||||
|
ymbqjoau
|
||||||
|
yakqfnvb
|
||||||
|
klwpoxak
|
||||||
|
ebftersc
|
||||||
|
muhqajoy
|
||||||
|
sttjluap
|
||||||
|
nbfrccxf
|
||||||
|
pjtxsrdt
|
||||||
|
pcehiulx
|
||||||
|
imtchqqu
|
||||||
|
shtdcptu
|
||||||
|
gziwdtvt
|
||||||
|
gkisoote
|
||||||
|
dmodaoyb
|
||||||
|
mqykfphl
|
||||||
|
rchfhsxr
|
||||||
|
expmfmmi
|
||||||
|
eyyjzupd
|
||||||
|
ysoqeeib
|
||||||
|
phedgslu
|
||||||
|
xmwituwf
|
||||||
|
cibvkswh
|
||||||
|
dusqdmkm
|
||||||
|
oajlhpcj
|
||||||
|
nqbvrtsv
|
||||||
|
eytohbvb
|
||||||
|
byjvrycg
|
||||||
|
oorhjlll
|
||||||
|
bflfjdaz
|
||||||
|
wtydcsem
|
||||||
|
xinelpsx
|
||||||
|
bkrenkkc
|
||||||
|
kuhljsqo
|
||||||
|
fhkrtpkg
|
||||||
|
qkiohori
|
||||||
|
rzebhkwv
|
||||||
|
prpldmyf
|
||||||
|
dstdrxbo
|
||||||
|
jgtenhmc
|
||||||
|
vpibddhk
|
||||||
|
nkytfkno
|
||||||
|
hldsxaoq
|
||||||
|
qgwusrkd
|
||||||
|
xlsuudux
|
||||||
|
buxfxaiy
|
||||||
|
uljrvuen
|
||||||
|
awoyppai
|
||||||
|
igplagub
|
||||||
|
kqfiefgc
|
||||||
|
cqjukquf
|
||||||
|
djxuuizu
|
||||||
|
zvuetjli
|
||||||
|
uwcrclvy
|
||||||
|
gtdlktiv
|
||||||
|
cvwbsaxj
|
||||||
|
zpwzzepj
|
||||||
|
vmdmkgqz
|
||||||
|
qfsxdnrf
|
||||||
|
mhqtikwv
|
||||||
|
fduxoluy
|
||||||
|
emhhanfc
|
||||||
|
zglqrchc
|
||||||
|
jvvjspsu
|
||||||
|
rndsqnky
|
||||||
|
itzjeqfr
|
||||||
|
lnpslqsj
|
||||||
|
yxohoogq
|
||||||
|
oqmmzizo
|
||||||
|
ginjbszz
|
||||||
|
qhdnjnxs
|
||||||
|
mjtbhrzl
|
||||||
|
zorxielb
|
||||||
|
xflyknux
|
||||||
|
xrssqfpx
|
||||||
|
tcvrpzxn
|
||||||
|
sgnholch
|
||||||
|
nlpbrofn
|
||||||
|
qclukwkr
|
||||||
|
foylzchc
|
||||||
|
hieqxicp
|
||||||
|
nqvwnhpt
|
||||||
|
ssubumix
|
||||||
|
vtbpattp
|
||||||
|
ncgmzjmv
|
||||||
|
wtzedksg
|
||||||
|
mvlatfbj
|
||||||
|
ithfpwgr
|
||||||
|
dmqvfilt
|
||||||
|
lbnovpit
|
||||||
|
hqfzxflr
|
||||||
|
pgeeancn
|
||||||
|
rpdiwwle
|
||||||
|
ehkipwnx
|
||||||
|
pncgkqey
|
||||||
|
chzakbif
|
||||||
|
doooixwk
|
||||||
|
xztjzzrs
|
||||||
|
vhyqtnja
|
||||||
|
cbzmragf
|
||||||
|
rxqhsehw
|
||||||
|
rxzuqnoy
|
||||||
|
kvldlabx
|
||||||
|
crsslumd
|
||||||
|
cbxmypaq
|
||||||
|
qzevgrco
|
||||||
|
teiavilb
|
||||||
|
yjuhsfkj
|
||||||
|
asutrkwn
|
||||||
|
csgkdxtw
|
||||||
|
fbdppqjn
|
||||||
|
ivaewkpq
|
||||||
|
iznlnknb
|
||||||
|
btxpvjxk
|
||||||
|
rrpatocg
|
||||||
|
yxgkxenm
|
||||||
|
yrszvqpo
|
||||||
|
olhjkcac
|
||||||
|
dmaxpvog
|
||||||
|
wzicsunc
|
||||||
|
eoaozekn
|
||||||
|
oqbcrcje
|
||||||
|
jjpcwqae
|
||||||
|
zlyibfto
|
||||||
|
nkkarjbd
|
||||||
|
rrsrbrlr
|
||||||
|
gllxvuve
|
||||||
|
pkanrgds
|
||||||
|
bylfpxdm
|
||||||
|
tzkvedot
|
||||||
|
eidxawif
|
||||||
|
nwvcofjz
|
||||||
|
xkfverdu
|
||||||
|
wgncgvvy
|
||||||
|
epwrztow
|
||||||
|
mybcqyza
|
||||||
|
arxfmrfd
|
||||||
|
utcbwrta
|
||||||
|
iwdfihgp
|
||||||
|
tkskahas
|
||||||
|
vvkmupxb
|
||||||
|
ffetjcgu
|
||||||
|
nmaoaihp
|
||||||
|
wilheaug
|
||||||
|
pmshnqgg
|
||||||
|
pzbjnbtw
|
||||||
|
zlxbrzhz
|
||||||
|
xwikirug
|
||||||
|
rprmighu
|
||||||
|
xaaaioxr
|
||||||
|
mqxpjfgw
|
||||||
|
ejhezvgh
|
||||||
|
brjmtonm
|
||||||
|
wskkweze
|
||||||
|
kkaxuuib
|
||||||
|
mdrbckzy
|
||||||
|
idpwlzfg
|
||||||
|
fqfdktuq
|
||||||
|
jnurlaba
|
||||||
|
bbgftoqt
|
||||||
|
sgiuadsr
|
||||||
|
pwzcfnir
|
||||||
|
mytlszbv
|
||||||
|
uxcwljqs
|
||||||
|
lyrangoq
|
||||||
|
lnmbpgej
|
||||||
|
qjjugsps
|
||||||
|
kptbbita
|
||||||
|
sppvfzzw
|
||||||
|
ghkleimh
|
||||||
|
aupnupvy
|
||||||
|
tzxtqzev
|
||||||
|
dbcyghnu
|
||||||
|
qaygxqjo
|
||||||
|
vgscfmwb
|
||||||
|
raoylhwp
|
||||||
|
gewyhjjh
|
||||||
|
bsozmyma
|
||||||
|
skpkdxcx
|
||||||
|
qcngjsxk
|
||||||
|
xlznquqa
|
||||||
|
tztogrtf
|
||||||
|
bvnovdaf
|
||||||
|
crlrvjsq
|
||||||
|
afbpxgwl
|
||||||
|
gwbeomez
|
||||||
|
aezkolyv
|
||||||
|
cooulafb
|
||||||
|
dnrsyvda
|
||||||
|
ljudufiz
|
||||||
|
ctwxlryc
|
||||||
|
djmebdhh
|
||||||
|
ktoaoxmd
|
||||||
|
afqaqbbj
|
||||||
|
mobvjjyk
|
||||||
|
yplopnti
|
||||||
|
kwkqjzol
|
||||||
|
fcvncctm
|
||||||
|
pkbzlejz
|
||||||
|
axxxbdqj
|
||||||
|
gnjurhkl
|
||||||
|
qakjwsvw
|
||||||
|
vkoagapm
|
||||||
|
tpeyuvqi
|
||||||
|
omejmbtw
|
||||||
|
yhitogvj
|
||||||
|
ybpwtcvb
|
||||||
|
xtnuyfyh
|
||||||
|
isvpwgza
|
||||||
|
ozdntafh
|
||||||
|
hysgmgvh
|
||||||
|
zbgkvytj
|
||||||
|
fntphlnd
|
||||||
|
xjyujmbw
|
||||||
|
uvnhgphl
|
||||||
|
decpnkwq
|
||||||
|
kmkepzcp
|
||||||
|
lwegdttv
|
||||||
|
epkpsehc
|
||||||
|
uouovxth
|
||||||
|
agvppzan
|
||||||
|
zxllwuvw
|
||||||
|
ektemcjl
|
||||||
|
zegwoyif
|
||||||
|
hqhrdyzq
|
||||||
|
qiyxumhk
|
||||||
|
trbebaka
|
||||||
|
etjxsihf
|
||||||
|
yxjgfvnf
|
||||||
|
joywcwmz
|
||||||
|
teeqmoik
|
||||||
|
qjknvrmq
|
||||||
|
avpxxuni
|
||||||
|
naemzbma
|
||||||
|
jpbxexkk
|
||||||
|
ifevcqzn
|
||||||
|
tcnibepd
|
||||||
|
yzppffml
|
||||||
|
xhqgnbqc
|
||||||
|
lvvopbzw
|
||||||
|
pnzmeuon
|
||||||
|
ovzzvvsh
|
||||||
|
mcqmuqjp
|
||||||
|
oadvyhfk
|
||||||
|
tkgnxpyy
|
||||||
|
mvbisygc
|
||||||
|
occsftic
|
||||||
|
fawfwbvy
|
||||||
|
hqmqpuam
|
||||||
|
ptjxkjtk
|
||||||
|
hzxuosye
|
||||||
|
zingpdhg
|
||||||
|
jiombirp
|
||||||
|
vjtvrses
|
||||||
|
fdlzglxq
|
||||||
|
ggooqynz
|
||||||
|
fmwotljx
|
||||||
|
mnzzmfro
|
||||||
|
vtvjvcqu
|
||||||
|
kmpiufet
|
||||||
|
hwsvlelq
|
||||||
|
wdenjddo
|
||||||
|
gfqtffby
|
||||||
|
cxneiwee
|
||||||
|
wtribxye
|
||||||
|
gvuszzzu
|
||||||
|
pugjyrqp
|
||||||
|
yewglqml
|
||||||
|
beqgcrqn
|
||||||
|
azmucset
|
||||||
|
kicbbxtu
|
||||||
|
bmihylgt
|
||||||
|
edjrinqf
|
||||||
|
vvdretyn
|
||||||
|
zkakzfkp
|
||||||
|
qbraqzwo
|
||||||
|
ujpgjzdc
|
||||||
|
hdobaxgr
|
||||||
|
atghhhaw
|
||||||
|
ouucgcws
|
||||||
|
iodycvik
|
||||||
|
ljjdonpe
|
||||||
|
nnekdlaz
|
||||||
|
lbrzjrkn
|
||||||
|
jjwewnji
|
||||||
|
tfdkekdf
|
||||||
|
eidbjaiz
|
||||||
|
hssryuot
|
||||||
|
oajvmyuj
|
||||||
|
fziqlofo
|
||||||
|
uisyryfh
|
||||||
|
ssucyqxa
|
||||||
|
wyvmbyuq
|
||||||
|
fomhuool
|
||||||
|
scyogldx
|
||||||
|
uznjymzz
|
||||||
|
tnmfndhu
|
||||||
|
wmaiqhjd
|
||||||
|
jrtvsvys
|
||||||
|
zpgdzcdw
|
||||||
|
rpzjgslv
|
||||||
|
uulfdwba
|
||||||
|
gfctmdso
|
||||||
|
jcqqmnxe
|
||||||
|
hbzxgupz
|
||||||
|
zbhofhjo
|
||||||
|
szmkzygs
|
||||||
|
ydsnzkwe
|
||||||
|
djbctccs
|
||||||
|
utqjhlzr
|
||||||
|
dslwhsra
|
||||||
|
ujxkxald
|
||||||
|
panonqfl
|
||||||
|
brhfqycu
|
||||||
|
adewetuw
|
||||||
|
rzsxqpyd
|
||||||
|
ypfaxikk
|
||||||
|
vgoncwxp
|
||||||
|
kqcrmyil
|
||||||
|
vwsswwlt
|
||||||
|
bjxktjpi
|
||||||
|
lyzyaehh
|
||||||
|
noccjwkt
|
||||||
|
volhauxw
|
||||||
|
zeeaczxk
|
||||||
|
cgiyzqtg
|
||||||
|
wrflucju
|
||||||
|
mupwfuwq
|
||||||
|
tlgvwoqm
|
||||||
|
laybkcqh
|
||||||
|
mawgcbyq
|
||||||
|
ofuaudem
|
||||||
|
gtkhbeuu
|
||||||
|
svrzwaxw
|
||||||
|
ohqiojux
|
||||||
|
mnmttbve
|
||||||
|
jlluhifp
|
||||||
|
zuhdfnaq
|
||||||
|
hsedbspi
|
||||||
|
rkqoshpx
|
||||||
|
qzvdlvuc
|
||||||
|
rwbglsly
|
||||||
|
djpwgibn
|
||||||
|
edzgvmws
|
||||||
|
teacriww
|
||||||
|
gcvzijna
|
||||||
|
llokdnqu
|
||||||
|
dkywadmh
|
||||||
|
madxishe
|
||||||
|
feharxjj
|
||||||
|
sqzpbcgu
|
||||||
|
ohmflgzd
|
||||||
|
qrrsyggg
|
||||||
|
sxxrafvs
|
||||||
|
xnaterpk
|
||||||
|
tdiytzmh
|
||||||
|
wecsvxnm
|
||||||
|
uiksxtzm
|
||||||
|
ypqpajdd
|
||||||
|
fyaoughg
|
||||||
|
epvdtbni
|
||||||
|
pyynubyw
|
||||||
|
dpjdgbaf
|
||||||
|
vlomtyym
|
||||||
|
zpitxkwr
|
||||||
|
tzclhsoz
|
||||||
|
wduicuqg
|
||||||
|
sltpfxwo
|
||||||
|
iyrmivtk
|
||||||
|
hdmfndbx
|
||||||
|
znqwrzrs
|
||||||
|
fxktgznx
|
||||||
|
indnyerl
|
||||||
|
airalvum
|
||||||
|
jfsfyysy
|
||||||
|
svztyezl
|
||||||
|
qsjpktkb
|
||||||
|
xfujksji
|
||||||
|
jkymepzm
|
||||||
|
lrtlztdg
|
||||||
|
nluspned
|
||||||
|
huwocmgk
|
||||||
|
nygyugbk
|
||||||
|
ryzsjezz
|
||||||
|
uxwwczou
|
||||||
|
awrcdzad
|
||||||
|
tobynxxz
|
||||||
|
swicrqsv
|
||||||
|
jqywnfns
|
||||||
|
kdzvcwmh
|
||||||
|
gogmydcr
|
||||||
|
dkcuvthh
|
||||||
|
hkmraojf
|
||||||
|
kcgbpskp
|
||||||
|
qgknjgtt
|
||||||
|
oywbqczg
|
||||||
|
oiqpwmcv
|
||||||
|
fxjrhvce
|
||||||
|
laaizayr
|
||||||
|
xfcldeuu
|
||||||
|
govaqtom
|
||||||
|
dbcymhvq
|
||||||
|
yjzeuyxc
|
||||||
|
sejtfvqn
|
||||||
|
pbvavgov
|
||||||
|
tpitipok
|
||||||
|
lnfxhraz
|
||||||
|
whbqsgli
|
||||||
|
beuhoifp
|
||||||
|
pojyvmuz
|
||||||
|
yynnekkn
|
||||||
|
nxggwods
|
||||||
|
nkhpvkct
|
||||||
|
rcxwiluq
|
||||||
|
gnhsygno
|
||||||
|
nwwgewiu
|
||||||
|
kcbqnvcb
|
||||||
|
jiisqtqt
|
||||||
|
dochmmei
|
||||||
|
cwmwfrwl
|
||||||
|
hcautqpg
|
||||||
|
oihxktet
|
||||||
|
yrcekmmv
|
||||||
|
lxoyyqxp
|
||||||
|
vlbvilra
|
||||||
|
uqnsdjdf
|
||||||
|
jadyopgr
|
||||||
|
iwunbaps
|
||||||
|
wrplbwpj
|
||||||
|
shfuglla
|
||||||
|
knhgmlsg
|
||||||
|
riknnrmg
|
||||||
|
hoxzmvsr
|
||||||
|
qvqdqxrv
|
||||||
|
lyyvpffj
|
||||||
|
ghhflirv
|
||||||
|
khmzdart
|
||||||
|
qixervoz
|
||||||
|
fdgemrrn
|
||||||
|
uvnbxxpz
|
||||||
|
lqvanhjt
|
||||||
|
umorijwr
|
||||||
|
sgogttye
|
||||||
|
jlfgdzoc
|
||||||
|
barxtobf
|
||||||
|
czrzjduo
|
||||||
|
vlgkvnek
|
||||||
|
prknsjfr
|
||||||
|
uleiwboe
|
||||||
|
mxaswrft
|
||||||
|
ihqcepmh
|
||||||
|
awfqxael
|
||||||
|
hqvzrkbw
|
||||||
|
zwvciodj
|
||||||
|
czyrbdhq
|
||||||
|
ixhfswys
|
||||||
|
ndauoxcn
|
||||||
|
lhhwxiry
|
||||||
|
adpagord
|
||||||
|
suuxfdnq
|
||||||
|
nynlzhfj
|
||||||
|
ffmwgpyj
|
||||||
|
idbgnwev
|
||||||
|
wuculiup
|
||||||
|
cymyvkgm
|
||||||
|
fifqbhvs
|
||||||
|
ijxfzmrq
|
||||||
|
hugjbhin
|
||||||
|
aeffbcfp
|
||||||
|
ywxtejmz
|
||||||
|
qpprytsg
|
||||||
|
kcmlmbeo
|
||||||
|
ruomfeex
|
||||||
|
vvtpcfnk
|
||||||
|
zcihodib
|
||||||
|
nnfoffoi
|
||||||
|
rmldwivo
|
||||||
|
ejrzqyln
|
||||||
|
ifnjdpab
|
||||||
|
abiidqmo
|
||||||
|
aglmsjkr
|
||||||
|
xwqghpda
|
||||||
|
gufhhjer
|
||||||
|
ubjzhfgj
|
||||||
|
glhagkrm
|
||||||
|
wiwhahqd
|
||||||
|
lbyhcebg
|
||||||
|
ahhhxupc
|
||||||
|
dulzuzyi
|
||||||
|
xxdqhiod
|
||||||
|
ydkrksxo
|
||||||
|
pgdazjfi
|
||||||
|
ebrjoyrr
|
||||||
|
maejpwkm
|
||||||
|
xekimgsi
|
||||||
|
jvntcosc
|
||||||
|
wrfiyvmb
|
||||||
|
hfgzughl
|
||||||
|
wgbwylwl
|
||||||
|
tpjgkkye
|
||||||
|
wsspddss
|
||||||
|
ctoyeuvv
|
||||||
|
skjcqabz
|
||||||
|
wfutxuew
|
||||||
|
oqymawht
|
||||||
|
xeqmpvcm
|
||||||
|
hrmflsjx
|
||||||
|
rstnycbh
|
||||||
|
aavqqxcc
|
||||||
|
ouawtykt
|
||||||
|
kmxcjxxe
|
||||||
|
heudiqlo
|
||||||
|
srmiwwrw
|
||||||
|
ufavnfdy
|
||||||
|
xfokmkax
|
||||||
|
vnzztetb
|
||||||
|
goevrbmb
|
||||||
|
wfkthpfj
|
||||||
|
ddesetaa
|
||||||
|
vygkqvdn
|
||||||
|
qsyemmqr
|
||||||
|
iqlyiqtx
|
||||||
|
esvuchui
|
||||||
|
pfslklic
|
||||||
|
genqjcpi
|
||||||
|
bumqsxkx
|
||||||
|
msvbjoip
|
||||||
|
lghjsxdw
|
||||||
|
elukpmbf
|
||||||
|
qmipavgm
|
||||||
|
iafoaecd
|
||||||
|
usidajnf
|
||||||
|
vxsymknf
|
||||||
|
oyfjsysv
|
||||||
|
mpwtxlvv
|
||||||
|
kogsobli
|
||||||
|
jmgwktdj
|
||||||
|
rgztrmby
|
||||||
|
dnrcfisj
|
||||||
|
ottnehjl
|
||||||
|
zsqbinds
|
||||||
|
zmufvgrd
|
||||||
|
fcalplxx
|
||||||
|
jcwqwnvm
|
||||||
|
myjowlcd
|
||||||
|
nodixwaa
|
||||||
|
phfnpbve
|
||||||
|
kexcgape
|
||||||
|
ldmlswbk
|
||||||
|
naxeikbg
|
||||||
|
cgmlnbsb
|
||||||
|
vuwbdcnb
|
||||||
|
bwxbhmgy
|
||||||
|
ziadnccv
|
||||||
|
bacypeeq
|
||||||
|
tbluknup
|
||||||
|
btanytry
|
||||||
|
bqddnwwl
|
||||||
|
urieqmyv
|
||||||
|
csrdslqa
|
||||||
|
fsfiyiai
|
||||||
|
ceasodly
|
||||||
|
jetpbhos
|
||||||
|
xcqzgosd
|
||||||
|
ydqiuyzh
|
||||||
|
vxpzumjp
|
||||||
|
ruwlxvle
|
||||||
|
exrrmafx
|
||||||
|
kbfikzdl
|
||||||
|
bhvvzgfn
|
||||||
|
ivckwbga
|
||||||
47
2016/d07/ex1/ex1.py
Executable file
47
2016/d07/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,47 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def has_abba(input: str) -> bool:
|
||||||
|
for i in range(4, len(input) + 1):
|
||||||
|
a, b, c, d = (input[i - j] for j in range(4, 0, -1))
|
||||||
|
if a == b:
|
||||||
|
continue
|
||||||
|
if a != d:
|
||||||
|
continue
|
||||||
|
if b != c:
|
||||||
|
continue
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def supports_tls(address: str) -> bool:
|
||||||
|
abba_found = False
|
||||||
|
is_hypernet = False
|
||||||
|
i = 0
|
||||||
|
while i < len(address):
|
||||||
|
if is_hypernet:
|
||||||
|
j = address.find("]", i)
|
||||||
|
else:
|
||||||
|
j = address.find("[", i)
|
||||||
|
if j == -1:
|
||||||
|
j = len(address)
|
||||||
|
if has_abba(address[i:j]):
|
||||||
|
if is_hypernet:
|
||||||
|
return False
|
||||||
|
abba_found = True
|
||||||
|
i = j
|
||||||
|
is_hypernet = not is_hypernet
|
||||||
|
return abba_found
|
||||||
|
|
||||||
|
return sum(map(supports_tls, input.splitlines()))
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
2000
2016/d07/ex1/input
Normal file
2000
2016/d07/ex1/input
Normal file
File diff suppressed because it is too large
Load diff
52
2016/d07/ex2/ex2.py
Executable file
52
2016/d07/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
from collections.abc import Iterator
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def iter_aba(input: str) -> Iterator[tuple[str, str]]:
|
||||||
|
for i in range(3, len(input) + 1):
|
||||||
|
a, b, c = (input[i - j] for j in range(3, 0, -1))
|
||||||
|
if a == b:
|
||||||
|
continue
|
||||||
|
if a != c:
|
||||||
|
continue
|
||||||
|
yield a, b
|
||||||
|
|
||||||
|
def split_address(address) -> tuple[list[str], list[str]]:
|
||||||
|
nets: tuple[list[str], list[str]] = [], []
|
||||||
|
i = 0
|
||||||
|
is_hypernet = False
|
||||||
|
while i < len(address):
|
||||||
|
if is_hypernet:
|
||||||
|
j = address.find("]", i)
|
||||||
|
else:
|
||||||
|
j = address.find("[", i)
|
||||||
|
if j == -1:
|
||||||
|
j = len(address)
|
||||||
|
nets[is_hypernet].append(address[i:j])
|
||||||
|
i = j
|
||||||
|
is_hypernet = not is_hypernet
|
||||||
|
return nets
|
||||||
|
|
||||||
|
def supports_ssl(address: str) -> bool:
|
||||||
|
supernets, hypernets = split_address(address)
|
||||||
|
aba_candidates = itertools.chain.from_iterable(map(iter_aba, supernets))
|
||||||
|
for a, b in aba_candidates:
|
||||||
|
bab = b + a + b
|
||||||
|
if any(bab in net for net in hypernets):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
return sum(map(supports_ssl, input.splitlines()))
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
2000
2016/d07/ex2/input
Normal file
2000
2016/d07/ex2/input
Normal file
File diff suppressed because it is too large
Load diff
62
2016/d08/ex1/ex1.py
Executable file
62
2016/d08/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
RECT = "rect"
|
||||||
|
ROTATE_ROW = "row"
|
||||||
|
ROTATE_COLUMN = "column"
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_line(input: str) -> tuple[Op, int, int]:
|
||||||
|
split_input = input.split()
|
||||||
|
if split_input[0] == "rect":
|
||||||
|
x, y = split_input[1].split("x")
|
||||||
|
return Op.RECT, int(x), int(y)
|
||||||
|
op = Op(split_input[1])
|
||||||
|
line_col, _, shift = split_input[-3:]
|
||||||
|
return op, int(line_col[2:]), int(shift)
|
||||||
|
|
||||||
|
def parse(input: str) -> list[tuple[Op, int, int]]:
|
||||||
|
return [parse_line(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def display_message(instructions: list[tuple[Op, int, int]]) -> set[Point]:
|
||||||
|
MAX_X, MAX_Y = 50, 6
|
||||||
|
screen: set[Point] = set()
|
||||||
|
for op, a, b in instructions:
|
||||||
|
match op:
|
||||||
|
case Op.RECT:
|
||||||
|
for x, y in itertools.product(range(a), range(b)):
|
||||||
|
screen.add(Point(x, y))
|
||||||
|
case Op.ROTATE_ROW:
|
||||||
|
pixels = {p for p in screen if p.y == a}
|
||||||
|
screen -= pixels
|
||||||
|
screen.update(Point((x + b) % MAX_X, y) for x, y in pixels)
|
||||||
|
case Op.ROTATE_COLUMN:
|
||||||
|
pixels = {p for p in screen if p.x == a}
|
||||||
|
screen -= pixels
|
||||||
|
screen.update(Point(x, (y + b) % MAX_Y) for x, y in pixels)
|
||||||
|
return screen
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
pixels = display_message(instructions)
|
||||||
|
return len(pixels)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
193
2016/d08/ex1/input
Normal file
193
2016/d08/ex1/input
Normal file
|
|
@ -0,0 +1,193 @@
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 2x1
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 2x1
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 2x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=0 by 10
|
||||||
|
rotate column x=5 by 2
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 9x1
|
||||||
|
rotate row y=2 by 5
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=2 by 5
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate column x=40 by 1
|
||||||
|
rotate column x=27 by 1
|
||||||
|
rotate column x=22 by 1
|
||||||
|
rotate column x=17 by 1
|
||||||
|
rotate column x=12 by 1
|
||||||
|
rotate column x=7 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate row y=2 by 5
|
||||||
|
rotate row y=1 by 3
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x3
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=1 by 7
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rotate column x=3 by 2
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=2 by 5
|
||||||
|
rotate row y=1 by 3
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 1x3
|
||||||
|
rotate column x=45 by 1
|
||||||
|
rotate row y=2 by 7
|
||||||
|
rotate row y=1 by 10
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 2
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=2 by 13
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=3 by 10
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=3 by 8
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=3 by 17
|
||||||
|
rotate row y=2 by 20
|
||||||
|
rotate row y=0 by 15
|
||||||
|
rotate column x=13 by 1
|
||||||
|
rotate column x=12 by 3
|
||||||
|
rotate column x=10 by 1
|
||||||
|
rotate column x=8 by 1
|
||||||
|
rotate column x=7 by 2
|
||||||
|
rotate column x=6 by 1
|
||||||
|
rotate column x=5 by 1
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 2
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 14x1
|
||||||
|
rotate row y=1 by 47
|
||||||
|
rotate column x=9 by 1
|
||||||
|
rotate column x=4 by 1
|
||||||
|
rotate row y=3 by 3
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=1 by 8
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=2 by 2
|
||||||
|
rotate column x=0 by 2
|
||||||
|
rect 3x2
|
||||||
|
rotate row y=3 by 12
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=0 by 10
|
||||||
|
rotate column x=8 by 1
|
||||||
|
rotate column x=7 by 3
|
||||||
|
rotate column x=5 by 1
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=1 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 9x1
|
||||||
|
rotate row y=0 by 20
|
||||||
|
rotate column x=46 by 1
|
||||||
|
rotate row y=4 by 17
|
||||||
|
rotate row y=3 by 10
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=1 by 5
|
||||||
|
rotate column x=8 by 1
|
||||||
|
rotate column x=7 by 1
|
||||||
|
rotate column x=6 by 1
|
||||||
|
rotate column x=5 by 1
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 2
|
||||||
|
rotate column x=1 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 9x1
|
||||||
|
rotate column x=32 by 4
|
||||||
|
rotate row y=4 by 33
|
||||||
|
rotate row y=3 by 5
|
||||||
|
rotate row y=2 by 15
|
||||||
|
rotate row y=0 by 15
|
||||||
|
rotate column x=13 by 1
|
||||||
|
rotate column x=12 by 3
|
||||||
|
rotate column x=10 by 1
|
||||||
|
rotate column x=8 by 1
|
||||||
|
rotate column x=7 by 2
|
||||||
|
rotate column x=6 by 1
|
||||||
|
rotate column x=5 by 1
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=1 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 14x1
|
||||||
|
rotate column x=39 by 3
|
||||||
|
rotate column x=35 by 4
|
||||||
|
rotate column x=20 by 4
|
||||||
|
rotate column x=19 by 3
|
||||||
|
rotate column x=10 by 4
|
||||||
|
rotate column x=9 by 3
|
||||||
|
rotate column x=8 by 3
|
||||||
|
rotate column x=5 by 4
|
||||||
|
rotate column x=4 by 3
|
||||||
|
rotate row y=5 by 5
|
||||||
|
rotate row y=4 by 5
|
||||||
|
rotate row y=3 by 33
|
||||||
|
rotate row y=1 by 30
|
||||||
|
rotate column x=48 by 1
|
||||||
|
rotate column x=47 by 5
|
||||||
|
rotate column x=46 by 5
|
||||||
|
rotate column x=45 by 1
|
||||||
|
rotate column x=43 by 1
|
||||||
|
rotate column x=38 by 3
|
||||||
|
rotate column x=37 by 3
|
||||||
|
rotate column x=36 by 5
|
||||||
|
rotate column x=35 by 1
|
||||||
|
rotate column x=33 by 1
|
||||||
|
rotate column x=32 by 5
|
||||||
|
rotate column x=31 by 5
|
||||||
|
rotate column x=30 by 1
|
||||||
|
rotate column x=23 by 4
|
||||||
|
rotate column x=22 by 3
|
||||||
|
rotate column x=21 by 3
|
||||||
|
rotate column x=20 by 1
|
||||||
|
rotate column x=12 by 2
|
||||||
|
rotate column x=11 by 2
|
||||||
|
rotate column x=3 by 5
|
||||||
|
rotate column x=2 by 5
|
||||||
|
rotate column x=1 by 3
|
||||||
|
rotate column x=0 by 4
|
||||||
70
2016/d08/ex2/ex2.py
Executable file
70
2016/d08/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
RECT = "rect"
|
||||||
|
ROTATE_ROW = "row"
|
||||||
|
ROTATE_COLUMN = "column"
|
||||||
|
|
||||||
|
|
||||||
|
MAX_X, MAX_Y = 50, 6
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def parse_line(input: str) -> tuple[Op, int, int]:
|
||||||
|
split_input = input.split()
|
||||||
|
if split_input[0] == "rect":
|
||||||
|
x, y = split_input[1].split("x")
|
||||||
|
return Op.RECT, int(x), int(y)
|
||||||
|
op = Op(split_input[1])
|
||||||
|
line_col, _, shift = split_input[-3:]
|
||||||
|
return op, int(line_col[2:]), int(shift)
|
||||||
|
|
||||||
|
def parse(input: str) -> list[tuple[Op, int, int]]:
|
||||||
|
return [parse_line(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def display_message(instructions: list[tuple[Op, int, int]]) -> set[Point]:
|
||||||
|
screen: set[Point] = set()
|
||||||
|
for op, a, b in instructions:
|
||||||
|
match op:
|
||||||
|
case Op.RECT:
|
||||||
|
for x, y in itertools.product(range(a), range(b)):
|
||||||
|
screen.add(Point(x, y))
|
||||||
|
case Op.ROTATE_ROW:
|
||||||
|
pixels = {p for p in screen if p.y == a}
|
||||||
|
screen -= pixels
|
||||||
|
screen.update(Point((x + b) % MAX_X, y) for x, y in pixels)
|
||||||
|
case Op.ROTATE_COLUMN:
|
||||||
|
pixels = {p for p in screen if p.x == a}
|
||||||
|
screen -= pixels
|
||||||
|
screen.update(Point(x, (y + b) % MAX_Y) for x, y in pixels)
|
||||||
|
return screen
|
||||||
|
|
||||||
|
def display(pixels: set[Point]) -> str:
|
||||||
|
return "\n".join(
|
||||||
|
"".join("#" if Point(x, y) in pixels else " " for x in range(MAX_X))
|
||||||
|
for y in range(MAX_Y)
|
||||||
|
)
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
pixels = display_message(instructions)
|
||||||
|
return display(pixels)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
193
2016/d08/ex2/input
Normal file
193
2016/d08/ex2/input
Normal file
|
|
@ -0,0 +1,193 @@
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 2x1
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 2x1
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rect 1x1
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 2x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=0 by 10
|
||||||
|
rotate column x=5 by 2
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 9x1
|
||||||
|
rotate row y=2 by 5
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=2 by 5
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate column x=40 by 1
|
||||||
|
rotate column x=27 by 1
|
||||||
|
rotate column x=22 by 1
|
||||||
|
rotate column x=17 by 1
|
||||||
|
rotate column x=12 by 1
|
||||||
|
rotate column x=7 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate row y=2 by 5
|
||||||
|
rotate row y=1 by 3
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rect 1x3
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=1 by 7
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rotate column x=3 by 2
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=2 by 5
|
||||||
|
rotate row y=1 by 3
|
||||||
|
rotate row y=0 by 3
|
||||||
|
rect 1x3
|
||||||
|
rotate column x=45 by 1
|
||||||
|
rotate row y=2 by 7
|
||||||
|
rotate row y=1 by 10
|
||||||
|
rotate row y=0 by 2
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 2
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=2 by 13
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=3 by 10
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=3 by 8
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 4x1
|
||||||
|
rotate row y=3 by 17
|
||||||
|
rotate row y=2 by 20
|
||||||
|
rotate row y=0 by 15
|
||||||
|
rotate column x=13 by 1
|
||||||
|
rotate column x=12 by 3
|
||||||
|
rotate column x=10 by 1
|
||||||
|
rotate column x=8 by 1
|
||||||
|
rotate column x=7 by 2
|
||||||
|
rotate column x=6 by 1
|
||||||
|
rotate column x=5 by 1
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 2
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 14x1
|
||||||
|
rotate row y=1 by 47
|
||||||
|
rotate column x=9 by 1
|
||||||
|
rotate column x=4 by 1
|
||||||
|
rotate row y=3 by 3
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=1 by 8
|
||||||
|
rotate row y=0 by 5
|
||||||
|
rotate column x=2 by 2
|
||||||
|
rotate column x=0 by 2
|
||||||
|
rect 3x2
|
||||||
|
rotate row y=3 by 12
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=0 by 10
|
||||||
|
rotate column x=8 by 1
|
||||||
|
rotate column x=7 by 3
|
||||||
|
rotate column x=5 by 1
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=1 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 9x1
|
||||||
|
rotate row y=0 by 20
|
||||||
|
rotate column x=46 by 1
|
||||||
|
rotate row y=4 by 17
|
||||||
|
rotate row y=3 by 10
|
||||||
|
rotate row y=2 by 10
|
||||||
|
rotate row y=1 by 5
|
||||||
|
rotate column x=8 by 1
|
||||||
|
rotate column x=7 by 1
|
||||||
|
rotate column x=6 by 1
|
||||||
|
rotate column x=5 by 1
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 2
|
||||||
|
rotate column x=1 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 9x1
|
||||||
|
rotate column x=32 by 4
|
||||||
|
rotate row y=4 by 33
|
||||||
|
rotate row y=3 by 5
|
||||||
|
rotate row y=2 by 15
|
||||||
|
rotate row y=0 by 15
|
||||||
|
rotate column x=13 by 1
|
||||||
|
rotate column x=12 by 3
|
||||||
|
rotate column x=10 by 1
|
||||||
|
rotate column x=8 by 1
|
||||||
|
rotate column x=7 by 2
|
||||||
|
rotate column x=6 by 1
|
||||||
|
rotate column x=5 by 1
|
||||||
|
rotate column x=3 by 1
|
||||||
|
rotate column x=2 by 1
|
||||||
|
rotate column x=1 by 1
|
||||||
|
rotate column x=0 by 1
|
||||||
|
rect 14x1
|
||||||
|
rotate column x=39 by 3
|
||||||
|
rotate column x=35 by 4
|
||||||
|
rotate column x=20 by 4
|
||||||
|
rotate column x=19 by 3
|
||||||
|
rotate column x=10 by 4
|
||||||
|
rotate column x=9 by 3
|
||||||
|
rotate column x=8 by 3
|
||||||
|
rotate column x=5 by 4
|
||||||
|
rotate column x=4 by 3
|
||||||
|
rotate row y=5 by 5
|
||||||
|
rotate row y=4 by 5
|
||||||
|
rotate row y=3 by 33
|
||||||
|
rotate row y=1 by 30
|
||||||
|
rotate column x=48 by 1
|
||||||
|
rotate column x=47 by 5
|
||||||
|
rotate column x=46 by 5
|
||||||
|
rotate column x=45 by 1
|
||||||
|
rotate column x=43 by 1
|
||||||
|
rotate column x=38 by 3
|
||||||
|
rotate column x=37 by 3
|
||||||
|
rotate column x=36 by 5
|
||||||
|
rotate column x=35 by 1
|
||||||
|
rotate column x=33 by 1
|
||||||
|
rotate column x=32 by 5
|
||||||
|
rotate column x=31 by 5
|
||||||
|
rotate column x=30 by 1
|
||||||
|
rotate column x=23 by 4
|
||||||
|
rotate column x=22 by 3
|
||||||
|
rotate column x=21 by 3
|
||||||
|
rotate column x=20 by 1
|
||||||
|
rotate column x=12 by 2
|
||||||
|
rotate column x=11 by 2
|
||||||
|
rotate column x=3 by 5
|
||||||
|
rotate column x=2 by 5
|
||||||
|
rotate column x=1 by 3
|
||||||
|
rotate column x=0 by 4
|
||||||
40
2016/d09/ex1/ex1.py
Executable file
40
2016/d09/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,40 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from collections.abc import Iterator
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def decompress(input: str) -> str:
|
||||||
|
def helper() -> Iterator[str]:
|
||||||
|
i = 0
|
||||||
|
is_marker = False
|
||||||
|
while i < len(input):
|
||||||
|
if is_marker:
|
||||||
|
j = input.find(")", i)
|
||||||
|
else:
|
||||||
|
j = input.find("(", i)
|
||||||
|
if j == -1:
|
||||||
|
j = len(input)
|
||||||
|
if is_marker:
|
||||||
|
length, repeat = map(int, input[i + 1 : j].split("x"))
|
||||||
|
yield input[j + 1 : j + length + 1] * repeat
|
||||||
|
i = j + length + 1
|
||||||
|
else:
|
||||||
|
yield input[i:j]
|
||||||
|
i = j
|
||||||
|
is_marker = not is_marker
|
||||||
|
|
||||||
|
return "".join(helper())
|
||||||
|
|
||||||
|
decompressed = decompress(input.strip())
|
||||||
|
return sum(not c.isspace() for c in decompressed)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d09/ex1/input
Normal file
1
2016/d09/ex1/input
Normal file
File diff suppressed because one or more lines are too long
39
2016/d09/ex2/ex2.py
Executable file
39
2016/d09/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,39 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from collections.abc import Iterator
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def decompress(input: str) -> int:
|
||||||
|
def helper() -> Iterator[int]:
|
||||||
|
i = 0
|
||||||
|
is_marker = False
|
||||||
|
while i < len(input):
|
||||||
|
if is_marker:
|
||||||
|
j = input.find(")", i)
|
||||||
|
else:
|
||||||
|
j = input.find("(", i)
|
||||||
|
if j == -1:
|
||||||
|
j = len(input)
|
||||||
|
if is_marker:
|
||||||
|
length, repeat = map(int, input[i + 1 : j].split("x"))
|
||||||
|
yield decompress(input[j + 1 : j + length + 1]) * repeat
|
||||||
|
i = j + length + 1
|
||||||
|
else:
|
||||||
|
yield j - i
|
||||||
|
i = j
|
||||||
|
is_marker = not is_marker
|
||||||
|
|
||||||
|
return sum(helper())
|
||||||
|
|
||||||
|
return decompress(input.strip())
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d09/ex2/input
Normal file
1
2016/d09/ex2/input
Normal file
File diff suppressed because one or more lines are too long
110
2016/d10/ex1/ex1.py
Executable file
110
2016/d10/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,110 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import dataclasses
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Input:
|
||||||
|
n: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Bot:
|
||||||
|
n: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Output:
|
||||||
|
n: int
|
||||||
|
|
||||||
|
|
||||||
|
# Each node points to its children, to each of whom it outputs a chip
|
||||||
|
GraphKey = Input | Bot
|
||||||
|
GraphVal = Bot | Output
|
||||||
|
# By convention, a bot should list its outputs in [`low`, `high`] order
|
||||||
|
Graph = dict[GraphKey, list[GraphVal]]
|
||||||
|
# Reverse the graph representation for an easier topo_sort (only of the keys)
|
||||||
|
ReverseGraph = dict[GraphKey, set[GraphKey]]
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_line(input: str) -> tuple[GraphKey, list[GraphVal]]:
|
||||||
|
split_input = input.split()
|
||||||
|
if split_input[0] == "bot":
|
||||||
|
low_n = int(split_input[6])
|
||||||
|
low_type: type[GraphVal] = Bot if split_input[5] == "bot" else Output
|
||||||
|
high_n = int(split_input[11])
|
||||||
|
high_type: type[GraphVal] = Bot if split_input[10] == "bot" else Output
|
||||||
|
return Bot(int(split_input[1])), [low_type(low_n), high_type(high_n)]
|
||||||
|
return Input(int(split_input[1])), [Bot(int(split_input[-1]))]
|
||||||
|
|
||||||
|
def parse(input: str) -> Graph:
|
||||||
|
return {key: val for key, val in map(parse_line, input.splitlines())}
|
||||||
|
|
||||||
|
def run(graph: Graph) -> int:
|
||||||
|
def reverse_graph(graph: Graph) -> ReverseGraph:
|
||||||
|
res: ReverseGraph = {n: set() for n in graph}
|
||||||
|
for node, children in graph.items():
|
||||||
|
for child in children:
|
||||||
|
# We don't care about `Output`s here
|
||||||
|
if isinstance(child, Output):
|
||||||
|
continue
|
||||||
|
res[child].add(node)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def topo_sort(graph: ReverseGraph) -> list[GraphKey]:
|
||||||
|
res: list[GraphKey] = []
|
||||||
|
|
||||||
|
queue = {n for n, deps in graph.items() if not deps}
|
||||||
|
assert all(isinstance(n, Input) for n in queue) # Sanity check
|
||||||
|
seen: set[GraphKey] = set()
|
||||||
|
|
||||||
|
while queue:
|
||||||
|
node = queue.pop()
|
||||||
|
|
||||||
|
res.append(node)
|
||||||
|
seen.add(node)
|
||||||
|
# Iterate over all nodes as we don't have information on children
|
||||||
|
for child, deps in graph.items():
|
||||||
|
if child in seen:
|
||||||
|
continue
|
||||||
|
if deps - seen:
|
||||||
|
continue
|
||||||
|
queue.add(child)
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
reversed_graph = reverse_graph(graph)
|
||||||
|
assert len(reversed_graph) == len(graph) # Sanity check
|
||||||
|
run_order = topo_sort(reversed_graph)
|
||||||
|
assert len(run_order) == len(graph) # Sanity check
|
||||||
|
CHIPS_OF_INTEREST = {17, 61}
|
||||||
|
bots_bins: dict[GraphVal, list[int]] = collections.defaultdict(list)
|
||||||
|
for node in run_order:
|
||||||
|
match node:
|
||||||
|
case Input(n):
|
||||||
|
assert len(graph[node]) == 1 # Sanity check
|
||||||
|
bots_bins[graph[node][0]].append(n)
|
||||||
|
case Bot(n):
|
||||||
|
assert len(graph[node]) == 2 # Sanity check
|
||||||
|
assert len(bots_bins[node]) == 2 # Sanity check
|
||||||
|
# Have we found the bot we were looking for?
|
||||||
|
if set(bots_bins[node]) == CHIPS_OF_INTEREST:
|
||||||
|
return n
|
||||||
|
for out, val in zip(graph[node], sorted(bots_bins[node])):
|
||||||
|
bots_bins[out].append(val)
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
graph = parse(input)
|
||||||
|
return run(graph)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
231
2016/d10/ex1/input
Normal file
231
2016/d10/ex1/input
Normal file
|
|
@ -0,0 +1,231 @@
|
||||||
|
bot 59 gives low to bot 176 and high to bot 120
|
||||||
|
bot 92 gives low to bot 42 and high to bot 187
|
||||||
|
value 31 goes to bot 114
|
||||||
|
bot 182 gives low to bot 49 and high to bot 176
|
||||||
|
bot 17 gives low to bot 181 and high to bot 162
|
||||||
|
bot 36 gives low to bot 118 and high to bot 121
|
||||||
|
bot 118 gives low to bot 164 and high to bot 55
|
||||||
|
bot 172 gives low to bot 79 and high to bot 123
|
||||||
|
bot 51 gives low to bot 60 and high to bot 31
|
||||||
|
bot 48 gives low to bot 107 and high to bot 58
|
||||||
|
bot 142 gives low to output 6 and high to bot 35
|
||||||
|
bot 133 gives low to output 4 and high to bot 47
|
||||||
|
bot 134 gives low to bot 122 and high to bot 66
|
||||||
|
bot 106 gives low to bot 155 and high to bot 99
|
||||||
|
bot 77 gives low to bot 93 and high to bot 84
|
||||||
|
bot 9 gives low to bot 173 and high to bot 197
|
||||||
|
bot 64 gives low to bot 123 and high to bot 48
|
||||||
|
bot 177 gives low to bot 21 and high to bot 132
|
||||||
|
bot 94 gives low to bot 6 and high to bot 25
|
||||||
|
bot 126 gives low to bot 193 and high to bot 56
|
||||||
|
bot 74 gives low to bot 187 and high to bot 125
|
||||||
|
bot 80 gives low to bot 41 and high to bot 191
|
||||||
|
bot 62 gives low to bot 157 and high to bot 138
|
||||||
|
bot 66 gives low to bot 1 and high to bot 209
|
||||||
|
bot 90 gives low to bot 104 and high to bot 34
|
||||||
|
bot 68 gives low to bot 23 and high to bot 87
|
||||||
|
bot 121 gives low to bot 55 and high to bot 126
|
||||||
|
bot 122 gives low to bot 137 and high to bot 1
|
||||||
|
bot 209 gives low to bot 168 and high to bot 26
|
||||||
|
bot 141 gives low to bot 170 and high to bot 6
|
||||||
|
bot 149 gives low to bot 62 and high to bot 13
|
||||||
|
bot 120 gives low to bot 179 and high to bot 71
|
||||||
|
bot 160 gives low to bot 194 and high to bot 151
|
||||||
|
bot 86 gives low to bot 96 and high to bot 106
|
||||||
|
value 13 goes to bot 9
|
||||||
|
bot 180 gives low to bot 189 and high to bot 27
|
||||||
|
value 67 goes to bot 88
|
||||||
|
bot 169 gives low to bot 99 and high to bot 159
|
||||||
|
bot 56 gives low to bot 98 and high to bot 147
|
||||||
|
bot 197 gives low to bot 174 and high to bot 81
|
||||||
|
bot 57 gives low to bot 113 and high to bot 179
|
||||||
|
bot 39 gives low to bot 115 and high to bot 3
|
||||||
|
bot 79 gives low to bot 22 and high to bot 40
|
||||||
|
bot 161 gives low to output 14 and high to bot 185
|
||||||
|
bot 21 gives low to bot 114 and high to bot 119
|
||||||
|
bot 136 gives low to bot 28 and high to bot 158
|
||||||
|
bot 105 gives low to bot 89 and high to bot 19
|
||||||
|
bot 168 gives low to bot 126 and high to bot 26
|
||||||
|
bot 193 gives low to bot 64 and high to bot 98
|
||||||
|
bot 186 gives low to bot 86 and high to bot 178
|
||||||
|
value 11 goes to bot 165
|
||||||
|
bot 33 gives low to bot 116 and high to bot 150
|
||||||
|
bot 32 gives low to bot 154 and high to bot 206
|
||||||
|
bot 166 gives low to bot 33 and high to bot 139
|
||||||
|
value 7 goes to bot 63
|
||||||
|
bot 203 gives low to bot 172 and high to bot 64
|
||||||
|
bot 200 gives low to bot 94 and high to bot 25
|
||||||
|
value 43 goes to bot 76
|
||||||
|
bot 145 gives low to bot 103 and high to bot 128
|
||||||
|
bot 119 gives low to bot 186 and high to bot 97
|
||||||
|
bot 12 gives low to bot 31 and high to bot 4
|
||||||
|
bot 23 gives low to bot 198 and high to bot 171
|
||||||
|
bot 34 gives low to bot 10 and high to bot 20
|
||||||
|
bot 198 gives low to bot 43 and high to bot 17
|
||||||
|
bot 50 gives low to output 1 and high to bot 127
|
||||||
|
bot 155 gives low to bot 191 and high to bot 32
|
||||||
|
bot 206 gives low to bot 12 and high to bot 43
|
||||||
|
bot 96 gives low to bot 80 and high to bot 155
|
||||||
|
bot 93 gives low to bot 44 and high to bot 70
|
||||||
|
bot 24 gives low to bot 85 and high to bot 83
|
||||||
|
bot 30 gives low to bot 159 and high to bot 68
|
||||||
|
bot 55 gives low to bot 203 and high to bot 193
|
||||||
|
bot 199 gives low to bot 68 and high to bot 135
|
||||||
|
bot 170 gives low to bot 97 and high to bot 5
|
||||||
|
bot 65 gives low to bot 152 and high to bot 194
|
||||||
|
bot 43 gives low to bot 4 and high to bot 181
|
||||||
|
bot 113 gives low to output 9 and high to bot 161
|
||||||
|
bot 81 gives low to bot 141 and high to bot 94
|
||||||
|
value 29 goes to bot 7
|
||||||
|
bot 46 gives low to bot 175 and high to bot 195
|
||||||
|
value 47 goes to bot 21
|
||||||
|
value 23 goes to bot 42
|
||||||
|
bot 13 gives low to bot 138 and high to bot 61
|
||||||
|
bot 135 gives low to bot 87 and high to bot 111
|
||||||
|
bot 194 gives low to bot 190 and high to bot 82
|
||||||
|
value 73 goes to bot 109
|
||||||
|
bot 154 gives low to bot 51 and high to bot 12
|
||||||
|
bot 1 gives low to bot 18 and high to bot 209
|
||||||
|
bot 98 gives low to bot 48 and high to bot 45
|
||||||
|
bot 147 gives low to bot 45 and high to bot 95
|
||||||
|
bot 47 gives low to output 19 and high to bot 152
|
||||||
|
bot 26 gives low to bot 56 and high to bot 147
|
||||||
|
bot 179 gives low to bot 161 and high to bot 71
|
||||||
|
bot 148 gives low to bot 204 and high to bot 137
|
||||||
|
bot 5 gives low to bot 67 and high to bot 85
|
||||||
|
bot 174 gives low to bot 132 and high to bot 141
|
||||||
|
bot 8 gives low to bot 13 and high to bot 75
|
||||||
|
bot 82 gives low to bot 146 and high to bot 22
|
||||||
|
bot 123 gives low to bot 40 and high to bot 107
|
||||||
|
bot 99 gives low to bot 32 and high to bot 201
|
||||||
|
bot 41 gives low to bot 196 and high to bot 192
|
||||||
|
bot 139 gives low to bot 150 and high to bot 153
|
||||||
|
bot 11 gives low to output 16 and high to bot 113
|
||||||
|
bot 72 gives low to bot 65 and high to bot 160
|
||||||
|
bot 195 gives low to bot 133 and high to bot 183
|
||||||
|
bot 54 gives low to output 12 and high to output 10
|
||||||
|
bot 158 gives low to bot 102 and high to bot 110
|
||||||
|
bot 112 gives low to bot 19 and high to bot 118
|
||||||
|
bot 31 gives low to bot 208 and high to bot 143
|
||||||
|
bot 167 gives low to bot 7 and high to bot 96
|
||||||
|
bot 63 gives low to bot 92 and high to bot 74
|
||||||
|
bot 116 gives low to bot 20 and high to bot 131
|
||||||
|
bot 184 gives low to bot 39 and high to bot 3
|
||||||
|
bot 162 gives low to bot 205 and high to bot 39
|
||||||
|
bot 108 gives low to output 11 and high to bot 175
|
||||||
|
value 53 goes to bot 207
|
||||||
|
bot 111 gives low to bot 202 and high to bot 184
|
||||||
|
bot 25 gives low to bot 24 and high to bot 83
|
||||||
|
value 71 goes to bot 77
|
||||||
|
bot 69 gives low to bot 142 and high to bot 0
|
||||||
|
bot 146 gives low to output 13 and high to bot 53
|
||||||
|
bot 7 gives low to bot 76 and high to bot 80
|
||||||
|
bot 131 gives low to bot 73 and high to bot 204
|
||||||
|
bot 102 gives low to bot 195 and high to bot 117
|
||||||
|
bot 76 gives low to bot 165 and high to bot 41
|
||||||
|
bot 153 gives low to bot 148 and high to bot 122
|
||||||
|
bot 208 gives low to bot 90 and high to bot 163
|
||||||
|
bot 70 gives low to bot 144 and high to bot 78
|
||||||
|
bot 125 gives low to bot 8 and high to bot 156
|
||||||
|
bot 83 gives low to bot 199 and high to bot 135
|
||||||
|
bot 75 gives low to bot 61 and high to bot 104
|
||||||
|
bot 67 gives low to bot 169 and high to bot 30
|
||||||
|
bot 14 gives low to bot 81 and high to bot 200
|
||||||
|
bot 159 gives low to bot 201 and high to bot 23
|
||||||
|
value 3 goes to bot 93
|
||||||
|
bot 110 gives low to bot 117 and high to bot 89
|
||||||
|
bot 128 gives low to bot 129 and high to bot 182
|
||||||
|
bot 87 gives low to bot 171 and high to bot 111
|
||||||
|
bot 45 gives low to bot 58 and high to bot 95
|
||||||
|
bot 4 gives low to bot 143 and high to bot 166
|
||||||
|
bot 60 gives low to bot 156 and high to bot 208
|
||||||
|
bot 27 gives low to bot 108 and high to bot 46
|
||||||
|
bot 42 gives low to bot 207 and high to bot 149
|
||||||
|
bot 117 gives low to bot 183 and high to bot 72
|
||||||
|
bot 115 gives low to bot 153 and high to bot 134
|
||||||
|
bot 140 gives low to bot 125 and high to bot 60
|
||||||
|
bot 173 gives low to bot 177 and high to bot 174
|
||||||
|
bot 138 gives low to bot 180 and high to bot 52
|
||||||
|
bot 100 gives low to bot 38 and high to bot 59
|
||||||
|
value 41 goes to bot 173
|
||||||
|
value 59 goes to bot 177
|
||||||
|
bot 165 gives low to bot 63 and high to bot 196
|
||||||
|
bot 84 gives low to bot 70 and high to bot 78
|
||||||
|
bot 2 gives low to bot 160 and high to bot 91
|
||||||
|
value 61 goes to bot 29
|
||||||
|
bot 114 gives low to bot 109 and high to bot 186
|
||||||
|
bot 205 gives low to bot 139 and high to bot 115
|
||||||
|
bot 175 gives low to output 17 and high to bot 133
|
||||||
|
bot 176 gives low to bot 57 and high to bot 120
|
||||||
|
bot 107 gives low to bot 124 and high to bot 15
|
||||||
|
bot 52 gives low to bot 27 and high to bot 28
|
||||||
|
bot 103 gives low to bot 50 and high to bot 129
|
||||||
|
bot 150 gives low to bot 131 and high to bot 148
|
||||||
|
bot 16 gives low to output 20 and high to bot 189
|
||||||
|
bot 190 gives low to output 18 and high to bot 146
|
||||||
|
bot 157 gives low to bot 16 and high to bot 180
|
||||||
|
bot 10 gives low to bot 158 and high to bot 130
|
||||||
|
bot 202 gives low to bot 162 and high to bot 184
|
||||||
|
bot 88 gives low to bot 77 and high to bot 84
|
||||||
|
bot 188 gives low to bot 128 and high to bot 38
|
||||||
|
bot 58 gives low to bot 15 and high to bot 101
|
||||||
|
bot 171 gives low to bot 17 and high to bot 202
|
||||||
|
bot 97 gives low to bot 178 and high to bot 67
|
||||||
|
bot 163 gives low to bot 34 and high to bot 116
|
||||||
|
bot 124 gives low to bot 0 and high to bot 145
|
||||||
|
bot 71 gives low to bot 185 and high to bot 54
|
||||||
|
bot 78 gives low to bot 14 and high to bot 200
|
||||||
|
bot 101 gives low to bot 188 and high to bot 100
|
||||||
|
bot 189 gives low to output 7 and high to bot 108
|
||||||
|
bot 95 gives low to bot 101 and high to bot 100
|
||||||
|
bot 0 gives low to bot 35 and high to bot 103
|
||||||
|
bot 207 gives low to bot 37 and high to bot 62
|
||||||
|
bot 49 gives low to bot 11 and high to bot 57
|
||||||
|
bot 85 gives low to bot 30 and high to bot 199
|
||||||
|
bot 89 gives low to bot 72 and high to bot 2
|
||||||
|
bot 3 gives low to bot 134 and high to bot 66
|
||||||
|
bot 181 gives low to bot 166 and high to bot 205
|
||||||
|
bot 91 gives low to bot 151 and high to bot 172
|
||||||
|
value 17 goes to bot 167
|
||||||
|
bot 20 gives low to bot 130 and high to bot 73
|
||||||
|
bot 196 gives low to bot 74 and high to bot 140
|
||||||
|
bot 18 gives low to bot 121 and high to bot 168
|
||||||
|
bot 185 gives low to output 15 and high to bot 54
|
||||||
|
bot 178 gives low to bot 106 and high to bot 169
|
||||||
|
bot 129 gives low to bot 127 and high to bot 49
|
||||||
|
bot 19 gives low to bot 2 and high to bot 164
|
||||||
|
bot 15 gives low to bot 145 and high to bot 188
|
||||||
|
bot 144 gives low to bot 197 and high to bot 14
|
||||||
|
bot 201 gives low to bot 206 and high to bot 198
|
||||||
|
bot 164 gives low to bot 91 and high to bot 203
|
||||||
|
bot 73 gives low to bot 105 and high to bot 112
|
||||||
|
bot 191 gives low to bot 192 and high to bot 154
|
||||||
|
bot 109 gives low to bot 167 and high to bot 86
|
||||||
|
bot 151 gives low to bot 82 and high to bot 79
|
||||||
|
bot 53 gives low to output 2 and high to bot 142
|
||||||
|
bot 37 gives low to bot 29 and high to bot 157
|
||||||
|
value 2 goes to bot 44
|
||||||
|
bot 204 gives low to bot 112 and high to bot 36
|
||||||
|
bot 40 gives low to bot 69 and high to bot 124
|
||||||
|
bot 22 gives low to bot 53 and high to bot 69
|
||||||
|
bot 104 gives low to bot 136 and high to bot 10
|
||||||
|
value 19 goes to bot 88
|
||||||
|
bot 127 gives low to output 5 and high to bot 11
|
||||||
|
bot 183 gives low to bot 47 and high to bot 65
|
||||||
|
bot 192 gives low to bot 140 and high to bot 51
|
||||||
|
bot 38 gives low to bot 182 and high to bot 59
|
||||||
|
bot 61 gives low to bot 52 and high to bot 136
|
||||||
|
bot 156 gives low to bot 75 and high to bot 90
|
||||||
|
value 37 goes to bot 37
|
||||||
|
bot 28 gives low to bot 46 and high to bot 102
|
||||||
|
bot 187 gives low to bot 149 and high to bot 8
|
||||||
|
bot 132 gives low to bot 119 and high to bot 170
|
||||||
|
bot 44 gives low to bot 9 and high to bot 144
|
||||||
|
bot 29 gives low to output 0 and high to bot 16
|
||||||
|
bot 6 gives low to bot 5 and high to bot 24
|
||||||
|
bot 137 gives low to bot 36 and high to bot 18
|
||||||
|
bot 130 gives low to bot 110 and high to bot 105
|
||||||
|
value 5 goes to bot 92
|
||||||
|
bot 35 gives low to output 3 and high to bot 50
|
||||||
|
bot 152 gives low to output 8 and high to bot 190
|
||||||
|
bot 143 gives low to bot 163 and high to bot 33
|
||||||
114
2016/d10/ex2/ex2.py
Executable file
114
2016/d10/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,114 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import dataclasses
|
||||||
|
import functools
|
||||||
|
import itertools
|
||||||
|
import operator
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Input:
|
||||||
|
n: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Bot:
|
||||||
|
n: int
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Output:
|
||||||
|
n: int
|
||||||
|
|
||||||
|
|
||||||
|
# Each node points to its children, to each of whom it outputs a chip
|
||||||
|
GraphKey = Input | Bot
|
||||||
|
GraphVal = Bot | Output
|
||||||
|
# By convention, a bot should list its outputs in [`low`, `high`] order
|
||||||
|
Graph = dict[GraphKey, list[GraphVal]]
|
||||||
|
# Reverse the graph representation for an easier topo_sort (only of the keys)
|
||||||
|
ReverseGraph = dict[GraphKey, set[GraphKey]]
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_line(input: str) -> tuple[GraphKey, list[GraphVal]]:
|
||||||
|
split_input = input.split()
|
||||||
|
if split_input[0] == "bot":
|
||||||
|
low_n = int(split_input[6])
|
||||||
|
low_type: type[GraphVal] = Bot if split_input[5] == "bot" else Output
|
||||||
|
high_n = int(split_input[11])
|
||||||
|
high_type: type[GraphVal] = Bot if split_input[10] == "bot" else Output
|
||||||
|
return Bot(int(split_input[1])), [low_type(low_n), high_type(high_n)]
|
||||||
|
return Input(int(split_input[1])), [Bot(int(split_input[-1]))]
|
||||||
|
|
||||||
|
def parse(input: str) -> Graph:
|
||||||
|
return {key: val for key, val in map(parse_line, input.splitlines())}
|
||||||
|
|
||||||
|
def run(graph: Graph) -> dict[GraphVal, list[int]]:
|
||||||
|
def reverse_graph(graph: Graph) -> ReverseGraph:
|
||||||
|
res: ReverseGraph = {n: set() for n in graph}
|
||||||
|
for node, children in graph.items():
|
||||||
|
for child in children:
|
||||||
|
# We don't care about `Output`s here
|
||||||
|
if isinstance(child, Output):
|
||||||
|
continue
|
||||||
|
res[child].add(node)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def topo_sort(graph: ReverseGraph) -> list[GraphKey]:
|
||||||
|
res: list[GraphKey] = []
|
||||||
|
|
||||||
|
queue = {n for n, deps in graph.items() if not deps}
|
||||||
|
assert all(isinstance(n, Input) for n in queue) # Sanity check
|
||||||
|
seen: set[GraphKey] = set()
|
||||||
|
|
||||||
|
while queue:
|
||||||
|
node = queue.pop()
|
||||||
|
|
||||||
|
res.append(node)
|
||||||
|
seen.add(node)
|
||||||
|
# Iterate over all nodes as we don't have information on children
|
||||||
|
for child, deps in graph.items():
|
||||||
|
if child in seen:
|
||||||
|
continue
|
||||||
|
if deps - seen:
|
||||||
|
continue
|
||||||
|
queue.add(child)
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
reversed_graph = reverse_graph(graph)
|
||||||
|
assert len(reversed_graph) == len(graph) # Sanity check
|
||||||
|
run_order = topo_sort(reversed_graph)
|
||||||
|
assert len(run_order) == len(graph) # Sanity check
|
||||||
|
bots_bins: dict[GraphVal, list[int]] = collections.defaultdict(list)
|
||||||
|
for node in run_order:
|
||||||
|
match node:
|
||||||
|
case Input(n):
|
||||||
|
assert len(graph[node]) == 1 # Sanity check
|
||||||
|
bots_bins[graph[node][0]].append(n)
|
||||||
|
case Bot(n):
|
||||||
|
assert len(graph[node]) == 2 # Sanity check
|
||||||
|
assert len(bots_bins[node]) == 2 # Sanity check
|
||||||
|
# Have we found the bot we were looking for?
|
||||||
|
for out, val in zip(graph[node], sorted(bots_bins[node])):
|
||||||
|
bots_bins[out].append(val)
|
||||||
|
return bots_bins
|
||||||
|
|
||||||
|
graph = parse(input)
|
||||||
|
outputs = run(graph)
|
||||||
|
return functools.reduce(
|
||||||
|
operator.mul,
|
||||||
|
itertools.chain.from_iterable(outputs[Output(i)] for i in range(3)),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
231
2016/d10/ex2/input
Normal file
231
2016/d10/ex2/input
Normal file
|
|
@ -0,0 +1,231 @@
|
||||||
|
bot 59 gives low to bot 176 and high to bot 120
|
||||||
|
bot 92 gives low to bot 42 and high to bot 187
|
||||||
|
value 31 goes to bot 114
|
||||||
|
bot 182 gives low to bot 49 and high to bot 176
|
||||||
|
bot 17 gives low to bot 181 and high to bot 162
|
||||||
|
bot 36 gives low to bot 118 and high to bot 121
|
||||||
|
bot 118 gives low to bot 164 and high to bot 55
|
||||||
|
bot 172 gives low to bot 79 and high to bot 123
|
||||||
|
bot 51 gives low to bot 60 and high to bot 31
|
||||||
|
bot 48 gives low to bot 107 and high to bot 58
|
||||||
|
bot 142 gives low to output 6 and high to bot 35
|
||||||
|
bot 133 gives low to output 4 and high to bot 47
|
||||||
|
bot 134 gives low to bot 122 and high to bot 66
|
||||||
|
bot 106 gives low to bot 155 and high to bot 99
|
||||||
|
bot 77 gives low to bot 93 and high to bot 84
|
||||||
|
bot 9 gives low to bot 173 and high to bot 197
|
||||||
|
bot 64 gives low to bot 123 and high to bot 48
|
||||||
|
bot 177 gives low to bot 21 and high to bot 132
|
||||||
|
bot 94 gives low to bot 6 and high to bot 25
|
||||||
|
bot 126 gives low to bot 193 and high to bot 56
|
||||||
|
bot 74 gives low to bot 187 and high to bot 125
|
||||||
|
bot 80 gives low to bot 41 and high to bot 191
|
||||||
|
bot 62 gives low to bot 157 and high to bot 138
|
||||||
|
bot 66 gives low to bot 1 and high to bot 209
|
||||||
|
bot 90 gives low to bot 104 and high to bot 34
|
||||||
|
bot 68 gives low to bot 23 and high to bot 87
|
||||||
|
bot 121 gives low to bot 55 and high to bot 126
|
||||||
|
bot 122 gives low to bot 137 and high to bot 1
|
||||||
|
bot 209 gives low to bot 168 and high to bot 26
|
||||||
|
bot 141 gives low to bot 170 and high to bot 6
|
||||||
|
bot 149 gives low to bot 62 and high to bot 13
|
||||||
|
bot 120 gives low to bot 179 and high to bot 71
|
||||||
|
bot 160 gives low to bot 194 and high to bot 151
|
||||||
|
bot 86 gives low to bot 96 and high to bot 106
|
||||||
|
value 13 goes to bot 9
|
||||||
|
bot 180 gives low to bot 189 and high to bot 27
|
||||||
|
value 67 goes to bot 88
|
||||||
|
bot 169 gives low to bot 99 and high to bot 159
|
||||||
|
bot 56 gives low to bot 98 and high to bot 147
|
||||||
|
bot 197 gives low to bot 174 and high to bot 81
|
||||||
|
bot 57 gives low to bot 113 and high to bot 179
|
||||||
|
bot 39 gives low to bot 115 and high to bot 3
|
||||||
|
bot 79 gives low to bot 22 and high to bot 40
|
||||||
|
bot 161 gives low to output 14 and high to bot 185
|
||||||
|
bot 21 gives low to bot 114 and high to bot 119
|
||||||
|
bot 136 gives low to bot 28 and high to bot 158
|
||||||
|
bot 105 gives low to bot 89 and high to bot 19
|
||||||
|
bot 168 gives low to bot 126 and high to bot 26
|
||||||
|
bot 193 gives low to bot 64 and high to bot 98
|
||||||
|
bot 186 gives low to bot 86 and high to bot 178
|
||||||
|
value 11 goes to bot 165
|
||||||
|
bot 33 gives low to bot 116 and high to bot 150
|
||||||
|
bot 32 gives low to bot 154 and high to bot 206
|
||||||
|
bot 166 gives low to bot 33 and high to bot 139
|
||||||
|
value 7 goes to bot 63
|
||||||
|
bot 203 gives low to bot 172 and high to bot 64
|
||||||
|
bot 200 gives low to bot 94 and high to bot 25
|
||||||
|
value 43 goes to bot 76
|
||||||
|
bot 145 gives low to bot 103 and high to bot 128
|
||||||
|
bot 119 gives low to bot 186 and high to bot 97
|
||||||
|
bot 12 gives low to bot 31 and high to bot 4
|
||||||
|
bot 23 gives low to bot 198 and high to bot 171
|
||||||
|
bot 34 gives low to bot 10 and high to bot 20
|
||||||
|
bot 198 gives low to bot 43 and high to bot 17
|
||||||
|
bot 50 gives low to output 1 and high to bot 127
|
||||||
|
bot 155 gives low to bot 191 and high to bot 32
|
||||||
|
bot 206 gives low to bot 12 and high to bot 43
|
||||||
|
bot 96 gives low to bot 80 and high to bot 155
|
||||||
|
bot 93 gives low to bot 44 and high to bot 70
|
||||||
|
bot 24 gives low to bot 85 and high to bot 83
|
||||||
|
bot 30 gives low to bot 159 and high to bot 68
|
||||||
|
bot 55 gives low to bot 203 and high to bot 193
|
||||||
|
bot 199 gives low to bot 68 and high to bot 135
|
||||||
|
bot 170 gives low to bot 97 and high to bot 5
|
||||||
|
bot 65 gives low to bot 152 and high to bot 194
|
||||||
|
bot 43 gives low to bot 4 and high to bot 181
|
||||||
|
bot 113 gives low to output 9 and high to bot 161
|
||||||
|
bot 81 gives low to bot 141 and high to bot 94
|
||||||
|
value 29 goes to bot 7
|
||||||
|
bot 46 gives low to bot 175 and high to bot 195
|
||||||
|
value 47 goes to bot 21
|
||||||
|
value 23 goes to bot 42
|
||||||
|
bot 13 gives low to bot 138 and high to bot 61
|
||||||
|
bot 135 gives low to bot 87 and high to bot 111
|
||||||
|
bot 194 gives low to bot 190 and high to bot 82
|
||||||
|
value 73 goes to bot 109
|
||||||
|
bot 154 gives low to bot 51 and high to bot 12
|
||||||
|
bot 1 gives low to bot 18 and high to bot 209
|
||||||
|
bot 98 gives low to bot 48 and high to bot 45
|
||||||
|
bot 147 gives low to bot 45 and high to bot 95
|
||||||
|
bot 47 gives low to output 19 and high to bot 152
|
||||||
|
bot 26 gives low to bot 56 and high to bot 147
|
||||||
|
bot 179 gives low to bot 161 and high to bot 71
|
||||||
|
bot 148 gives low to bot 204 and high to bot 137
|
||||||
|
bot 5 gives low to bot 67 and high to bot 85
|
||||||
|
bot 174 gives low to bot 132 and high to bot 141
|
||||||
|
bot 8 gives low to bot 13 and high to bot 75
|
||||||
|
bot 82 gives low to bot 146 and high to bot 22
|
||||||
|
bot 123 gives low to bot 40 and high to bot 107
|
||||||
|
bot 99 gives low to bot 32 and high to bot 201
|
||||||
|
bot 41 gives low to bot 196 and high to bot 192
|
||||||
|
bot 139 gives low to bot 150 and high to bot 153
|
||||||
|
bot 11 gives low to output 16 and high to bot 113
|
||||||
|
bot 72 gives low to bot 65 and high to bot 160
|
||||||
|
bot 195 gives low to bot 133 and high to bot 183
|
||||||
|
bot 54 gives low to output 12 and high to output 10
|
||||||
|
bot 158 gives low to bot 102 and high to bot 110
|
||||||
|
bot 112 gives low to bot 19 and high to bot 118
|
||||||
|
bot 31 gives low to bot 208 and high to bot 143
|
||||||
|
bot 167 gives low to bot 7 and high to bot 96
|
||||||
|
bot 63 gives low to bot 92 and high to bot 74
|
||||||
|
bot 116 gives low to bot 20 and high to bot 131
|
||||||
|
bot 184 gives low to bot 39 and high to bot 3
|
||||||
|
bot 162 gives low to bot 205 and high to bot 39
|
||||||
|
bot 108 gives low to output 11 and high to bot 175
|
||||||
|
value 53 goes to bot 207
|
||||||
|
bot 111 gives low to bot 202 and high to bot 184
|
||||||
|
bot 25 gives low to bot 24 and high to bot 83
|
||||||
|
value 71 goes to bot 77
|
||||||
|
bot 69 gives low to bot 142 and high to bot 0
|
||||||
|
bot 146 gives low to output 13 and high to bot 53
|
||||||
|
bot 7 gives low to bot 76 and high to bot 80
|
||||||
|
bot 131 gives low to bot 73 and high to bot 204
|
||||||
|
bot 102 gives low to bot 195 and high to bot 117
|
||||||
|
bot 76 gives low to bot 165 and high to bot 41
|
||||||
|
bot 153 gives low to bot 148 and high to bot 122
|
||||||
|
bot 208 gives low to bot 90 and high to bot 163
|
||||||
|
bot 70 gives low to bot 144 and high to bot 78
|
||||||
|
bot 125 gives low to bot 8 and high to bot 156
|
||||||
|
bot 83 gives low to bot 199 and high to bot 135
|
||||||
|
bot 75 gives low to bot 61 and high to bot 104
|
||||||
|
bot 67 gives low to bot 169 and high to bot 30
|
||||||
|
bot 14 gives low to bot 81 and high to bot 200
|
||||||
|
bot 159 gives low to bot 201 and high to bot 23
|
||||||
|
value 3 goes to bot 93
|
||||||
|
bot 110 gives low to bot 117 and high to bot 89
|
||||||
|
bot 128 gives low to bot 129 and high to bot 182
|
||||||
|
bot 87 gives low to bot 171 and high to bot 111
|
||||||
|
bot 45 gives low to bot 58 and high to bot 95
|
||||||
|
bot 4 gives low to bot 143 and high to bot 166
|
||||||
|
bot 60 gives low to bot 156 and high to bot 208
|
||||||
|
bot 27 gives low to bot 108 and high to bot 46
|
||||||
|
bot 42 gives low to bot 207 and high to bot 149
|
||||||
|
bot 117 gives low to bot 183 and high to bot 72
|
||||||
|
bot 115 gives low to bot 153 and high to bot 134
|
||||||
|
bot 140 gives low to bot 125 and high to bot 60
|
||||||
|
bot 173 gives low to bot 177 and high to bot 174
|
||||||
|
bot 138 gives low to bot 180 and high to bot 52
|
||||||
|
bot 100 gives low to bot 38 and high to bot 59
|
||||||
|
value 41 goes to bot 173
|
||||||
|
value 59 goes to bot 177
|
||||||
|
bot 165 gives low to bot 63 and high to bot 196
|
||||||
|
bot 84 gives low to bot 70 and high to bot 78
|
||||||
|
bot 2 gives low to bot 160 and high to bot 91
|
||||||
|
value 61 goes to bot 29
|
||||||
|
bot 114 gives low to bot 109 and high to bot 186
|
||||||
|
bot 205 gives low to bot 139 and high to bot 115
|
||||||
|
bot 175 gives low to output 17 and high to bot 133
|
||||||
|
bot 176 gives low to bot 57 and high to bot 120
|
||||||
|
bot 107 gives low to bot 124 and high to bot 15
|
||||||
|
bot 52 gives low to bot 27 and high to bot 28
|
||||||
|
bot 103 gives low to bot 50 and high to bot 129
|
||||||
|
bot 150 gives low to bot 131 and high to bot 148
|
||||||
|
bot 16 gives low to output 20 and high to bot 189
|
||||||
|
bot 190 gives low to output 18 and high to bot 146
|
||||||
|
bot 157 gives low to bot 16 and high to bot 180
|
||||||
|
bot 10 gives low to bot 158 and high to bot 130
|
||||||
|
bot 202 gives low to bot 162 and high to bot 184
|
||||||
|
bot 88 gives low to bot 77 and high to bot 84
|
||||||
|
bot 188 gives low to bot 128 and high to bot 38
|
||||||
|
bot 58 gives low to bot 15 and high to bot 101
|
||||||
|
bot 171 gives low to bot 17 and high to bot 202
|
||||||
|
bot 97 gives low to bot 178 and high to bot 67
|
||||||
|
bot 163 gives low to bot 34 and high to bot 116
|
||||||
|
bot 124 gives low to bot 0 and high to bot 145
|
||||||
|
bot 71 gives low to bot 185 and high to bot 54
|
||||||
|
bot 78 gives low to bot 14 and high to bot 200
|
||||||
|
bot 101 gives low to bot 188 and high to bot 100
|
||||||
|
bot 189 gives low to output 7 and high to bot 108
|
||||||
|
bot 95 gives low to bot 101 and high to bot 100
|
||||||
|
bot 0 gives low to bot 35 and high to bot 103
|
||||||
|
bot 207 gives low to bot 37 and high to bot 62
|
||||||
|
bot 49 gives low to bot 11 and high to bot 57
|
||||||
|
bot 85 gives low to bot 30 and high to bot 199
|
||||||
|
bot 89 gives low to bot 72 and high to bot 2
|
||||||
|
bot 3 gives low to bot 134 and high to bot 66
|
||||||
|
bot 181 gives low to bot 166 and high to bot 205
|
||||||
|
bot 91 gives low to bot 151 and high to bot 172
|
||||||
|
value 17 goes to bot 167
|
||||||
|
bot 20 gives low to bot 130 and high to bot 73
|
||||||
|
bot 196 gives low to bot 74 and high to bot 140
|
||||||
|
bot 18 gives low to bot 121 and high to bot 168
|
||||||
|
bot 185 gives low to output 15 and high to bot 54
|
||||||
|
bot 178 gives low to bot 106 and high to bot 169
|
||||||
|
bot 129 gives low to bot 127 and high to bot 49
|
||||||
|
bot 19 gives low to bot 2 and high to bot 164
|
||||||
|
bot 15 gives low to bot 145 and high to bot 188
|
||||||
|
bot 144 gives low to bot 197 and high to bot 14
|
||||||
|
bot 201 gives low to bot 206 and high to bot 198
|
||||||
|
bot 164 gives low to bot 91 and high to bot 203
|
||||||
|
bot 73 gives low to bot 105 and high to bot 112
|
||||||
|
bot 191 gives low to bot 192 and high to bot 154
|
||||||
|
bot 109 gives low to bot 167 and high to bot 86
|
||||||
|
bot 151 gives low to bot 82 and high to bot 79
|
||||||
|
bot 53 gives low to output 2 and high to bot 142
|
||||||
|
bot 37 gives low to bot 29 and high to bot 157
|
||||||
|
value 2 goes to bot 44
|
||||||
|
bot 204 gives low to bot 112 and high to bot 36
|
||||||
|
bot 40 gives low to bot 69 and high to bot 124
|
||||||
|
bot 22 gives low to bot 53 and high to bot 69
|
||||||
|
bot 104 gives low to bot 136 and high to bot 10
|
||||||
|
value 19 goes to bot 88
|
||||||
|
bot 127 gives low to output 5 and high to bot 11
|
||||||
|
bot 183 gives low to bot 47 and high to bot 65
|
||||||
|
bot 192 gives low to bot 140 and high to bot 51
|
||||||
|
bot 38 gives low to bot 182 and high to bot 59
|
||||||
|
bot 61 gives low to bot 52 and high to bot 136
|
||||||
|
bot 156 gives low to bot 75 and high to bot 90
|
||||||
|
value 37 goes to bot 37
|
||||||
|
bot 28 gives low to bot 46 and high to bot 102
|
||||||
|
bot 187 gives low to bot 149 and high to bot 8
|
||||||
|
bot 132 gives low to bot 119 and high to bot 170
|
||||||
|
bot 44 gives low to bot 9 and high to bot 144
|
||||||
|
bot 29 gives low to output 0 and high to bot 16
|
||||||
|
bot 6 gives low to bot 5 and high to bot 24
|
||||||
|
bot 137 gives low to bot 36 and high to bot 18
|
||||||
|
bot 130 gives low to bot 110 and high to bot 105
|
||||||
|
value 5 goes to bot 92
|
||||||
|
bot 35 gives low to output 3 and high to bot 50
|
||||||
|
bot 152 gives low to output 8 and high to bot 190
|
||||||
|
bot 143 gives low to bot 163 and high to bot 33
|
||||||
194
2016/d11/ex1/ex1.py
Executable file
194
2016/d11/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,194 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import dataclasses
|
||||||
|
import heapq
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
from collections.abc import Iterator
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
NUM_FLOORS = 4
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Microchip:
|
||||||
|
element: str
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Generator:
|
||||||
|
element: str
|
||||||
|
|
||||||
|
|
||||||
|
Item = Microchip | Generator
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True, order=True)
|
||||||
|
class State:
|
||||||
|
class Floor(NamedTuple):
|
||||||
|
chip: int
|
||||||
|
generator: int
|
||||||
|
|
||||||
|
elevator: int
|
||||||
|
items: tuple[Floor, ...]
|
||||||
|
|
||||||
|
def __post_init__(self) -> None:
|
||||||
|
assert self.items == tuple(sorted(self.items)) # Sanity check
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_item(input: str) -> Item:
|
||||||
|
_, element, item_type = input.split()
|
||||||
|
if item_type == "microchip":
|
||||||
|
return Microchip(element.removesuffix("-compatible"))
|
||||||
|
elif item_type == "generator":
|
||||||
|
return Generator(element)
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
def parse_floor(input: str) -> list[Item]:
|
||||||
|
# Simplify parsing, and remove `The Xth floor contains`
|
||||||
|
input = input.removesuffix(".").replace(", and ", ", ").replace(" and ", ", ")
|
||||||
|
input = " ".join(input.split()[4:])
|
||||||
|
if input == "nothing relevant":
|
||||||
|
return []
|
||||||
|
return [parse_item(it) for it in input.split(", ")]
|
||||||
|
|
||||||
|
def parse(input: str) -> dict[Item, int]:
|
||||||
|
return {
|
||||||
|
it: i
|
||||||
|
for i, line in enumerate(input.splitlines())
|
||||||
|
for it in parse_floor(line)
|
||||||
|
}
|
||||||
|
|
||||||
|
def to_state(elevator: int, floors: dict[Item, int]) -> State:
|
||||||
|
elements = {it.element for it in floors}
|
||||||
|
return State(
|
||||||
|
elevator=elevator,
|
||||||
|
items=tuple(
|
||||||
|
sorted(
|
||||||
|
State.Floor(floors[Microchip(elem)], floors[Generator(elem)])
|
||||||
|
for elem in elements
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
def from_state(state: State) -> tuple[int, dict[Item, int]]:
|
||||||
|
floors: dict[Item, int] = {}
|
||||||
|
for i, (chip, generator) in enumerate(state.items):
|
||||||
|
floors[Microchip(str(i))] = chip
|
||||||
|
floors[Generator(str(i))] = generator
|
||||||
|
return state.elevator, floors
|
||||||
|
|
||||||
|
def solve(state: State) -> int:
|
||||||
|
def items_at(
|
||||||
|
item_type: type[Item],
|
||||||
|
floor: int,
|
||||||
|
items: dict[Item, int],
|
||||||
|
) -> set[str]:
|
||||||
|
return {
|
||||||
|
it.element
|
||||||
|
for it, it_floor in items.items()
|
||||||
|
if it_floor == floor and isinstance(it, item_type)
|
||||||
|
}
|
||||||
|
|
||||||
|
def neighbours(state: State) -> Iterator[State]:
|
||||||
|
elevator, all_items = from_state(state)
|
||||||
|
chips = items_at(Microchip, elevator, all_items)
|
||||||
|
gens = items_at(Generator, elevator, all_items)
|
||||||
|
for dest_floor in (elevator - 1, elevator + 1):
|
||||||
|
# Don't move the elevator out of bounds
|
||||||
|
if dest_floor < 0 or dest_floor >= NUM_FLOORS:
|
||||||
|
continue
|
||||||
|
|
||||||
|
dest_chips = items_at(Microchip, dest_floor, all_items)
|
||||||
|
dest_gens = items_at(Generator, dest_floor, all_items)
|
||||||
|
unmatched_chips = dest_chips - dest_gens
|
||||||
|
if unmatched_chips:
|
||||||
|
assert not dest_gens # Sanity check
|
||||||
|
|
||||||
|
single_items: list[Item] = []
|
||||||
|
# Chips
|
||||||
|
for chip in chips:
|
||||||
|
# can move to floors with no generator, or a matching generator
|
||||||
|
if dest_gens and chip not in dest_gens:
|
||||||
|
continue
|
||||||
|
single_items.append(Microchip(chip))
|
||||||
|
# Generators
|
||||||
|
for gen in gens:
|
||||||
|
# can move to floors without unmatched chips or only their chip
|
||||||
|
if unmatched_chips - {gen}:
|
||||||
|
continue
|
||||||
|
# ... but only if they're not currently protecting their chip
|
||||||
|
if gen in chips and gens - {gen}:
|
||||||
|
continue
|
||||||
|
single_items.append(Generator(gen))
|
||||||
|
|
||||||
|
double_items: list[tuple[Item, Item]] = []
|
||||||
|
# Two chips
|
||||||
|
for chip1, chip2 in itertools.combinations(chips, 2):
|
||||||
|
# Can move to floors with no generator, or both matching generators
|
||||||
|
if dest_gens and not dest_gens.issuperset({chip1, chip2}):
|
||||||
|
continue
|
||||||
|
double_items.append((Microchip(chip1), Microchip(chip2)))
|
||||||
|
# Two generators
|
||||||
|
for gen1, gen2 in itertools.combinations(gens, 2):
|
||||||
|
# Can move to floors with unmatched chips, if they match them...
|
||||||
|
if unmatched_chips - {gen1, gen2}:
|
||||||
|
continue
|
||||||
|
# ... but only if they're not currently protecting their chip
|
||||||
|
if (gen1 in chips or gen2 in chips) and gens - {gen1, gen2}:
|
||||||
|
continue
|
||||||
|
double_items.append((Generator(gen1), Generator(gen2)))
|
||||||
|
# Matching generator and chip
|
||||||
|
for match in chips & gens:
|
||||||
|
# Can move to floors with no unmatched chips
|
||||||
|
if not unmatched_chips:
|
||||||
|
double_items.append((Microchip(match), Generator(match)))
|
||||||
|
|
||||||
|
for item in single_items:
|
||||||
|
new_items = all_items | {item: dest_floor}
|
||||||
|
assert new_items.keys() == all_items.keys() # Sanity check
|
||||||
|
yield to_state(dest_floor, new_items)
|
||||||
|
for item1, item2 in double_items:
|
||||||
|
new_items = all_items | {item1: dest_floor, item2: dest_floor}
|
||||||
|
assert new_items.keys() == all_items.keys() # Sanity check
|
||||||
|
yield to_state(dest_floor, new_items)
|
||||||
|
|
||||||
|
def dijkstra(start: State, end: State) -> int:
|
||||||
|
# Priority queue of (distance, point)
|
||||||
|
queue = [(0, start)]
|
||||||
|
seen: set[State] = set()
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
dist, p = heapq.heappop(queue)
|
||||||
|
if p == end:
|
||||||
|
return dist
|
||||||
|
# We must have seen p with a smaller distance before
|
||||||
|
if p in seen:
|
||||||
|
continue
|
||||||
|
# First time encountering p, must be the smallest distance to it
|
||||||
|
seen.add(p)
|
||||||
|
# Add all neighbours to be visited
|
||||||
|
for n in neighbours(p):
|
||||||
|
heapq.heappush(queue, (dist + 1, n))
|
||||||
|
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
# On the end state, we want all items pairs on the top floor
|
||||||
|
# The elevator must be on the top floor as well to get the last item up
|
||||||
|
top = NUM_FLOORS - 1
|
||||||
|
end = State(top, tuple(State.Floor(top, top) for _ in state.items))
|
||||||
|
return dijkstra(state, end)
|
||||||
|
|
||||||
|
floors = parse(input)
|
||||||
|
state = to_state(0, floors)
|
||||||
|
return solve(state)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
4
2016/d11/ex1/input
Normal file
4
2016/d11/ex1/input
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
The first floor contains a promethium generator and a promethium-compatible microchip.
|
||||||
|
The second floor contains a cobalt generator, a curium generator, a ruthenium generator, and a plutonium generator.
|
||||||
|
The third floor contains a cobalt-compatible microchip, a curium-compatible microchip, a ruthenium-compatible microchip, and a plutonium-compatible microchip.
|
||||||
|
The fourth floor contains nothing relevant.
|
||||||
197
2016/d11/ex2/ex2.py
Executable file
197
2016/d11/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,197 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import dataclasses
|
||||||
|
import heapq
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
from collections.abc import Iterator
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
NUM_FLOORS = 4
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Microchip:
|
||||||
|
element: str
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class Generator:
|
||||||
|
element: str
|
||||||
|
|
||||||
|
|
||||||
|
Item = Microchip | Generator
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True, order=True)
|
||||||
|
class State:
|
||||||
|
class Floor(NamedTuple):
|
||||||
|
chip: int
|
||||||
|
generator: int
|
||||||
|
|
||||||
|
elevator: int
|
||||||
|
items: tuple[Floor, ...]
|
||||||
|
|
||||||
|
def __post_init__(self) -> None:
|
||||||
|
assert self.items == tuple(sorted(self.items)) # Sanity check
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_item(input: str) -> Item:
|
||||||
|
_, element, item_type = input.split()
|
||||||
|
if item_type == "microchip":
|
||||||
|
return Microchip(element.removesuffix("-compatible"))
|
||||||
|
elif item_type == "generator":
|
||||||
|
return Generator(element)
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
def parse_floor(input: str) -> list[Item]:
|
||||||
|
# Simplify parsing, and remove `The Xth floor contains`
|
||||||
|
input = input.removesuffix(".").replace(", and ", ", ").replace(" and ", ", ")
|
||||||
|
input = " ".join(input.split()[4:])
|
||||||
|
if input == "nothing relevant":
|
||||||
|
return []
|
||||||
|
return [parse_item(it) for it in input.split(", ")]
|
||||||
|
|
||||||
|
def parse(input: str) -> dict[Item, int]:
|
||||||
|
return {
|
||||||
|
it: i
|
||||||
|
for i, line in enumerate(input.splitlines())
|
||||||
|
for it in parse_floor(line)
|
||||||
|
}
|
||||||
|
|
||||||
|
def to_state(elevator: int, floors: dict[Item, int]) -> State:
|
||||||
|
elements = {it.element for it in floors}
|
||||||
|
return State(
|
||||||
|
elevator=elevator,
|
||||||
|
items=tuple(
|
||||||
|
sorted(
|
||||||
|
State.Floor(floors[Microchip(elem)], floors[Generator(elem)])
|
||||||
|
for elem in elements
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
def from_state(state: State) -> tuple[int, dict[Item, int]]:
|
||||||
|
floors: dict[Item, int] = {}
|
||||||
|
for i, (chip, generator) in enumerate(state.items):
|
||||||
|
floors[Microchip(str(i))] = chip
|
||||||
|
floors[Generator(str(i))] = generator
|
||||||
|
return state.elevator, floors
|
||||||
|
|
||||||
|
def solve(state: State) -> int:
|
||||||
|
def items_at(
|
||||||
|
item_type: type[Item],
|
||||||
|
floor: int,
|
||||||
|
items: dict[Item, int],
|
||||||
|
) -> set[str]:
|
||||||
|
return {
|
||||||
|
it.element
|
||||||
|
for it, it_floor in items.items()
|
||||||
|
if it_floor == floor and isinstance(it, item_type)
|
||||||
|
}
|
||||||
|
|
||||||
|
def neighbours(state: State) -> Iterator[State]:
|
||||||
|
elevator, all_items = from_state(state)
|
||||||
|
chips = items_at(Microchip, elevator, all_items)
|
||||||
|
gens = items_at(Generator, elevator, all_items)
|
||||||
|
for dest_floor in (elevator - 1, elevator + 1):
|
||||||
|
# Don't move the elevator out of bounds
|
||||||
|
if dest_floor < 0 or dest_floor >= NUM_FLOORS:
|
||||||
|
continue
|
||||||
|
|
||||||
|
dest_chips = items_at(Microchip, dest_floor, all_items)
|
||||||
|
dest_gens = items_at(Generator, dest_floor, all_items)
|
||||||
|
unmatched_chips = dest_chips - dest_gens
|
||||||
|
if unmatched_chips:
|
||||||
|
assert not dest_gens # Sanity check
|
||||||
|
|
||||||
|
single_items: list[Item] = []
|
||||||
|
# Chips
|
||||||
|
for chip in chips:
|
||||||
|
# can move to floors with no generator, or a matching generator
|
||||||
|
if dest_gens and chip not in dest_gens:
|
||||||
|
continue
|
||||||
|
single_items.append(Microchip(chip))
|
||||||
|
# Generators
|
||||||
|
for gen in gens:
|
||||||
|
# can move to floors without unmatched chips or only their chip
|
||||||
|
if unmatched_chips - {gen}:
|
||||||
|
continue
|
||||||
|
# ... but only if they're not currently protecting their chip
|
||||||
|
if gen in chips and gens - {gen}:
|
||||||
|
continue
|
||||||
|
single_items.append(Generator(gen))
|
||||||
|
|
||||||
|
double_items: list[tuple[Item, Item]] = []
|
||||||
|
# Two chips
|
||||||
|
for chip1, chip2 in itertools.combinations(chips, 2):
|
||||||
|
# Can move to floors with no generator, or both matching generators
|
||||||
|
if dest_gens and not dest_gens.issuperset({chip1, chip2}):
|
||||||
|
continue
|
||||||
|
double_items.append((Microchip(chip1), Microchip(chip2)))
|
||||||
|
# Two generators
|
||||||
|
for gen1, gen2 in itertools.combinations(gens, 2):
|
||||||
|
# Can move to floors with unmatched chips, if they match them...
|
||||||
|
if unmatched_chips - {gen1, gen2}:
|
||||||
|
continue
|
||||||
|
# ... but only if they're not currently protecting their chip
|
||||||
|
if (gen1 in chips or gen2 in chips) and gens - {gen1, gen2}:
|
||||||
|
continue
|
||||||
|
double_items.append((Generator(gen1), Generator(gen2)))
|
||||||
|
# Matching generator and chip
|
||||||
|
for match in chips & gens:
|
||||||
|
# Can move to floors with no unmatched chips
|
||||||
|
if not unmatched_chips:
|
||||||
|
double_items.append((Microchip(match), Generator(match)))
|
||||||
|
|
||||||
|
for item in single_items:
|
||||||
|
new_items = all_items | {item: dest_floor}
|
||||||
|
assert new_items.keys() == all_items.keys() # Sanity check
|
||||||
|
yield to_state(dest_floor, new_items)
|
||||||
|
for item1, item2 in double_items:
|
||||||
|
new_items = all_items | {item1: dest_floor, item2: dest_floor}
|
||||||
|
assert new_items.keys() == all_items.keys() # Sanity check
|
||||||
|
yield to_state(dest_floor, new_items)
|
||||||
|
|
||||||
|
def dijkstra(start: State, end: State) -> int:
|
||||||
|
# Priority queue of (distance, point)
|
||||||
|
queue = [(0, start)]
|
||||||
|
seen: set[State] = set()
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
dist, p = heapq.heappop(queue)
|
||||||
|
if p == end:
|
||||||
|
return dist
|
||||||
|
# We must have seen p with a smaller distance before
|
||||||
|
if p in seen:
|
||||||
|
continue
|
||||||
|
# First time encountering p, must be the smallest distance to it
|
||||||
|
seen.add(p)
|
||||||
|
# Add all neighbours to be visited
|
||||||
|
for n in neighbours(p):
|
||||||
|
heapq.heappush(queue, (dist + 1, n))
|
||||||
|
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
# On the end state, we want all items pairs on the top floor
|
||||||
|
# The elevator must be on the top floor as well to get the last item up
|
||||||
|
top = NUM_FLOORS - 1
|
||||||
|
end = State(top, tuple(State.Floor(top, top) for _ in state.items))
|
||||||
|
return dijkstra(state, end)
|
||||||
|
|
||||||
|
floors = parse(input)
|
||||||
|
for elem in ("elerium", "dilithium"):
|
||||||
|
floors[Microchip(elem)] = 0
|
||||||
|
floors[Generator(elem)] = 0
|
||||||
|
state = to_state(0, floors)
|
||||||
|
return solve(state)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
4
2016/d11/ex2/input
Normal file
4
2016/d11/ex2/input
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
The first floor contains a promethium generator and a promethium-compatible microchip.
|
||||||
|
The second floor contains a cobalt generator, a curium generator, a ruthenium generator, and a plutonium generator.
|
||||||
|
The third floor contains a cobalt-compatible microchip, a curium-compatible microchip, a ruthenium-compatible microchip, and a plutonium-compatible microchip.
|
||||||
|
The fourth floor contains nothing relevant.
|
||||||
67
2016/d12/ex1/ex1.py
Executable file
67
2016/d12/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
CPY = "cpy"
|
||||||
|
INC = "inc"
|
||||||
|
DEC = "dec"
|
||||||
|
JNZ = "jnz"
|
||||||
|
|
||||||
|
|
||||||
|
class Instruction(NamedTuple):
|
||||||
|
op: Op
|
||||||
|
x: str
|
||||||
|
y: str | None = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Instruction":
|
||||||
|
op, *rest = input.split()
|
||||||
|
return cls(Op(op), *rest)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Instruction]:
|
||||||
|
return [Instruction.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def resolve(y: str | None, registers: dict[str, int]) -> int:
|
||||||
|
assert y is not None # Sanity check
|
||||||
|
try:
|
||||||
|
return int(y)
|
||||||
|
except ValueError:
|
||||||
|
return registers[y]
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
registers: dict[str, int] = collections.defaultdict(int)
|
||||||
|
|
||||||
|
ip = 0
|
||||||
|
while True:
|
||||||
|
if ip < 0 or ip >= len(instructions):
|
||||||
|
break
|
||||||
|
instr = instructions[ip]
|
||||||
|
ip += 1
|
||||||
|
match instr.op:
|
||||||
|
case Op.CPY:
|
||||||
|
assert instr.y is not None
|
||||||
|
registers[instr.y] = resolve(instr.x, registers)
|
||||||
|
case Op.INC:
|
||||||
|
registers[instr.x] += 1
|
||||||
|
case Op.DEC:
|
||||||
|
registers[instr.x] -= 1
|
||||||
|
case Op.JNZ:
|
||||||
|
if resolve(instr.x, registers) != 0:
|
||||||
|
ip += resolve(instr.y, registers) - 1 # Account auto-increment
|
||||||
|
return registers["a"]
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
23
2016/d12/ex1/input
Normal file
23
2016/d12/ex1/input
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
cpy 1 a
|
||||||
|
cpy 1 b
|
||||||
|
cpy 26 d
|
||||||
|
jnz c 2
|
||||||
|
jnz 1 5
|
||||||
|
cpy 7 c
|
||||||
|
inc d
|
||||||
|
dec c
|
||||||
|
jnz c -2
|
||||||
|
cpy a c
|
||||||
|
inc a
|
||||||
|
dec b
|
||||||
|
jnz b -2
|
||||||
|
cpy c b
|
||||||
|
dec d
|
||||||
|
jnz d -6
|
||||||
|
cpy 13 c
|
||||||
|
cpy 14 d
|
||||||
|
inc a
|
||||||
|
dec d
|
||||||
|
jnz d -2
|
||||||
|
dec c
|
||||||
|
jnz c -5
|
||||||
49
2016/d12/ex2/ex2.py
Executable file
49
2016/d12/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
CPY = "cpy"
|
||||||
|
INC = "inc"
|
||||||
|
DEC = "dec"
|
||||||
|
JNZ = "jnz"
|
||||||
|
|
||||||
|
|
||||||
|
class Instruction(NamedTuple):
|
||||||
|
op: Op
|
||||||
|
x: str
|
||||||
|
y: str | None = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Instruction":
|
||||||
|
op, *rest = input.split()
|
||||||
|
return cls(Op(op), *rest)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Instruction]:
|
||||||
|
return [Instruction.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def fibonacci(n: int) -> int:
|
||||||
|
a, b = 1, 1
|
||||||
|
for _ in range(n):
|
||||||
|
a, b = b, a + b
|
||||||
|
return b
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
fib_n = int(instructions[2].x) + int(instructions[5].x)
|
||||||
|
mult = int(instructions[16].x)
|
||||||
|
fact = int(instructions[17].x)
|
||||||
|
return fibonacci(fib_n) + mult * fact
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
23
2016/d12/ex2/input
Normal file
23
2016/d12/ex2/input
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
cpy 1 a
|
||||||
|
cpy 1 b
|
||||||
|
cpy 26 d
|
||||||
|
jnz c 2
|
||||||
|
jnz 1 5
|
||||||
|
cpy 7 c
|
||||||
|
inc d
|
||||||
|
dec c
|
||||||
|
jnz c -2
|
||||||
|
cpy a c
|
||||||
|
inc a
|
||||||
|
dec b
|
||||||
|
jnz b -2
|
||||||
|
cpy c b
|
||||||
|
dec d
|
||||||
|
jnz d -6
|
||||||
|
cpy 13 c
|
||||||
|
cpy 14 d
|
||||||
|
inc a
|
||||||
|
dec d
|
||||||
|
jnz d -2
|
||||||
|
dec c
|
||||||
|
jnz c -5
|
||||||
68
2016/d13/ex1/ex1.py
Executable file
68
2016/d13/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,68 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import functools
|
||||||
|
import heapq
|
||||||
|
import sys
|
||||||
|
from collections.abc import Callable, Iterator
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def office_location_open(p: Point, number: int) -> bool:
|
||||||
|
x, y = p
|
||||||
|
return (x * x + 3 * x + 2 * x * y + y + y * y + number).bit_count() % 2 == 0
|
||||||
|
|
||||||
|
def office_neighbours(p: Point, number: int) -> Iterator[Point]:
|
||||||
|
for dx, dy in (
|
||||||
|
(-1, 0),
|
||||||
|
(1, 0),
|
||||||
|
(0, -1),
|
||||||
|
(0, 1),
|
||||||
|
):
|
||||||
|
n = Point(p.x + dx, p.y + dy)
|
||||||
|
if n.x < 0 or n.y < 0:
|
||||||
|
continue
|
||||||
|
if office_location_open(n, number):
|
||||||
|
yield n
|
||||||
|
|
||||||
|
def dijkstra(
|
||||||
|
start: Point,
|
||||||
|
end: Point,
|
||||||
|
neighbours: Callable[[Point], Iterator[Point]],
|
||||||
|
) -> int:
|
||||||
|
# Priority queue of (distance, point)
|
||||||
|
queue = [(0, start)]
|
||||||
|
seen: set[Point] = set()
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
dist, p = heapq.heappop(queue)
|
||||||
|
if p == end:
|
||||||
|
return dist
|
||||||
|
# We must have seen p with a smaller distance before
|
||||||
|
if p in seen:
|
||||||
|
continue
|
||||||
|
# First time encountering p, must be the smallest distance to it
|
||||||
|
seen.add(p)
|
||||||
|
# Add all neighbours to be visited
|
||||||
|
for n in neighbours(p):
|
||||||
|
heapq.heappush(queue, (dist + 1, n))
|
||||||
|
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
favorite_number = int(input.strip())
|
||||||
|
neighbours = functools.partial(office_neighbours, number=favorite_number)
|
||||||
|
return dijkstra(Point(1, 1), Point(31, 39), neighbours)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d13/ex1/input
Normal file
1
2016/d13/ex1/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
1358
|
||||||
67
2016/d13/ex2/ex2.py
Executable file
67
2016/d13/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,67 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import functools
|
||||||
|
import heapq
|
||||||
|
import sys
|
||||||
|
from collections.abc import Callable, Iterator
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def office_location_open(p: Point, number: int) -> bool:
|
||||||
|
x, y = p
|
||||||
|
return (x * x + 3 * x + 2 * x * y + y + y * y + number).bit_count() % 2 == 0
|
||||||
|
|
||||||
|
def office_neighbours(p: Point, number: int) -> Iterator[Point]:
|
||||||
|
for dx, dy in (
|
||||||
|
(-1, 0),
|
||||||
|
(1, 0),
|
||||||
|
(0, -1),
|
||||||
|
(0, 1),
|
||||||
|
):
|
||||||
|
n = Point(p.x + dx, p.y + dy)
|
||||||
|
if n.x < 0 or n.y < 0:
|
||||||
|
continue
|
||||||
|
if office_location_open(n, number):
|
||||||
|
yield n
|
||||||
|
|
||||||
|
def explore(
|
||||||
|
start: Point,
|
||||||
|
max_steps: int,
|
||||||
|
neighbours: Callable[[Point], Iterator[Point]],
|
||||||
|
) -> int:
|
||||||
|
queue = [(0, start)]
|
||||||
|
seen: set[Point] = set()
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
dist, p = heapq.heappop(queue)
|
||||||
|
if dist > max_steps:
|
||||||
|
continue
|
||||||
|
# We must have seen p with a smaller distance before
|
||||||
|
if p in seen:
|
||||||
|
continue
|
||||||
|
# First time encountering p, must be the smallest distance to it
|
||||||
|
seen.add(p)
|
||||||
|
# Add all neighbours to be visited
|
||||||
|
for n in neighbours(p):
|
||||||
|
heapq.heappush(queue, (dist + 1, n))
|
||||||
|
|
||||||
|
return len(seen)
|
||||||
|
|
||||||
|
favorite_number = int(input.strip())
|
||||||
|
neighbours = functools.partial(office_neighbours, number=favorite_number)
|
||||||
|
return explore(Point(1, 1), 50, neighbours)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d13/ex2/input
Normal file
1
2016/d13/ex2/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
1358
|
||||||
42
2016/d14/ex1/ex1.py
Executable file
42
2016/d14/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import functools
|
||||||
|
import hashlib
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def hash(n: int, salt: str) -> str:
|
||||||
|
return hashlib.md5((salt + str(n)).encode()).hexdigest()
|
||||||
|
|
||||||
|
def find_triplet_char(input: str) -> str | None:
|
||||||
|
for i in range(0, len(input) - 2):
|
||||||
|
a, b, c = input[i], input[i + 1], input[i + 2]
|
||||||
|
if a == b and b == c:
|
||||||
|
return a
|
||||||
|
return None
|
||||||
|
|
||||||
|
salt = input.strip()
|
||||||
|
hashed_salt = functools.cache(functools.partial(hash, salt=salt))
|
||||||
|
cur_key = 0
|
||||||
|
for i in itertools.count():
|
||||||
|
candidate = hashed_salt(i)
|
||||||
|
if (triplet_char := find_triplet_char(candidate)) is None:
|
||||||
|
continue
|
||||||
|
for j in range(i + 1, i + 1000 + 1):
|
||||||
|
if (triplet_char * 5) in hashed_salt(j):
|
||||||
|
cur_key += 1
|
||||||
|
if cur_key == 64:
|
||||||
|
return i
|
||||||
|
break
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d14/ex1/input
Normal file
1
2016/d14/ex1/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ihaygndm
|
||||||
45
2016/d14/ex2/ex2.py
Executable file
45
2016/d14/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import functools
|
||||||
|
import hashlib
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def hash(n: int, salt: str) -> str:
|
||||||
|
key = salt + str(n)
|
||||||
|
for _ in range(2016 + 1):
|
||||||
|
key = hashlib.md5(key.encode()).hexdigest()
|
||||||
|
return key
|
||||||
|
|
||||||
|
def find_triplet_char(input: str) -> str | None:
|
||||||
|
for i in range(0, len(input) - 2):
|
||||||
|
a, b, c = input[i], input[i + 1], input[i + 2]
|
||||||
|
if a == b and b == c:
|
||||||
|
return a
|
||||||
|
return None
|
||||||
|
|
||||||
|
salt = input.strip()
|
||||||
|
hashed_salt = functools.cache(functools.partial(hash, salt=salt))
|
||||||
|
cur_key = 0
|
||||||
|
for i in itertools.count():
|
||||||
|
candidate = hashed_salt(i)
|
||||||
|
if (triplet_char := find_triplet_char(candidate)) is None:
|
||||||
|
continue
|
||||||
|
for j in range(i + 1, i + 1000 + 1):
|
||||||
|
if (triplet_char * 5) in hashed_salt(j):
|
||||||
|
cur_key += 1
|
||||||
|
if cur_key == 64:
|
||||||
|
return i
|
||||||
|
break
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d14/ex2/input
Normal file
1
2016/d14/ex2/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
ihaygndm
|
||||||
61
2016/d15/ex1/ex1.py
Executable file
61
2016/d15/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,61 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import math
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Disc(NamedTuple):
|
||||||
|
num: int
|
||||||
|
positions: int
|
||||||
|
start_offset: int
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Disc":
|
||||||
|
input = input.removeprefix("Disc #").removesuffix(".")
|
||||||
|
split_input = input.split()
|
||||||
|
return Disc(
|
||||||
|
int(split_input[0]),
|
||||||
|
int(split_input[2]),
|
||||||
|
int(split_input[-1]),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Disc]:
|
||||||
|
return [Disc.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
# https://rosettacode.org/wiki/Chinese_remainder_theorem#Python_3.6
|
||||||
|
def mul_inv(a: int, b: int) -> int:
|
||||||
|
b0 = b
|
||||||
|
x0, x1 = 0, 1
|
||||||
|
if b == 1:
|
||||||
|
return 1
|
||||||
|
while a > 1:
|
||||||
|
q = a // b
|
||||||
|
a, b = b, a % b
|
||||||
|
x0, x1 = x1 - q * x0, x0
|
||||||
|
if x1 < 0:
|
||||||
|
x1 += b0
|
||||||
|
return x1
|
||||||
|
|
||||||
|
def chinese_remainder(residue_mapping: dict[int, int]) -> int:
|
||||||
|
res = 0
|
||||||
|
prod = math.prod(residue_mapping)
|
||||||
|
for n_i, a_i in residue_mapping.items():
|
||||||
|
p = prod // n_i
|
||||||
|
res += a_i * mul_inv(p, n_i) * p
|
||||||
|
return res % prod
|
||||||
|
|
||||||
|
discs = parse(input)
|
||||||
|
residues = {disc.positions: -(disc.start_offset + disc.num) for disc in discs}
|
||||||
|
return chinese_remainder(residues)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
6
2016/d15/ex1/input
Normal file
6
2016/d15/ex1/input
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
Disc #1 has 17 positions; at time=0, it is at position 1.
|
||||||
|
Disc #2 has 7 positions; at time=0, it is at position 0.
|
||||||
|
Disc #3 has 19 positions; at time=0, it is at position 2.
|
||||||
|
Disc #4 has 5 positions; at time=0, it is at position 0.
|
||||||
|
Disc #5 has 3 positions; at time=0, it is at position 0.
|
||||||
|
Disc #6 has 13 positions; at time=0, it is at position 5.
|
||||||
62
2016/d15/ex2/ex2.py
Executable file
62
2016/d15/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,62 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import math
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Disc(NamedTuple):
|
||||||
|
num: int
|
||||||
|
positions: int
|
||||||
|
start_offset: int
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Disc":
|
||||||
|
input = input.removeprefix("Disc #").removesuffix(".")
|
||||||
|
split_input = input.split()
|
||||||
|
return Disc(
|
||||||
|
int(split_input[0]),
|
||||||
|
int(split_input[2]),
|
||||||
|
int(split_input[-1]),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Disc]:
|
||||||
|
return [Disc.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
# https://rosettacode.org/wiki/Chinese_remainder_theorem#Python_3.6
|
||||||
|
def mul_inv(a: int, b: int) -> int:
|
||||||
|
b0 = b
|
||||||
|
x0, x1 = 0, 1
|
||||||
|
if b == 1:
|
||||||
|
return 1
|
||||||
|
while a > 1:
|
||||||
|
q = a // b
|
||||||
|
a, b = b, a % b
|
||||||
|
x0, x1 = x1 - q * x0, x0
|
||||||
|
if x1 < 0:
|
||||||
|
x1 += b0
|
||||||
|
return x1
|
||||||
|
|
||||||
|
def chinese_remainder(residue_mapping: dict[int, int]) -> int:
|
||||||
|
res = 0
|
||||||
|
prod = math.prod(residue_mapping)
|
||||||
|
for n_i, a_i in residue_mapping.items():
|
||||||
|
p = prod // n_i
|
||||||
|
res += a_i * mul_inv(p, n_i) * p
|
||||||
|
return res % prod
|
||||||
|
|
||||||
|
discs = parse(input)
|
||||||
|
discs.append(Disc(len(discs) + 1, 11, 0))
|
||||||
|
residues = {disc.positions: -(disc.start_offset + disc.num) for disc in discs}
|
||||||
|
return chinese_remainder(residues)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
6
2016/d15/ex2/input
Normal file
6
2016/d15/ex2/input
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
Disc #1 has 17 positions; at time=0, it is at position 1.
|
||||||
|
Disc #2 has 7 positions; at time=0, it is at position 0.
|
||||||
|
Disc #3 has 19 positions; at time=0, it is at position 2.
|
||||||
|
Disc #4 has 5 positions; at time=0, it is at position 0.
|
||||||
|
Disc #5 has 3 positions; at time=0, it is at position 0.
|
||||||
|
Disc #6 has 13 positions; at time=0, it is at position 5.
|
||||||
30
2016/d16/ex1/ex1.py
Executable file
30
2016/d16/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def curve_step(input: str) -> str:
|
||||||
|
b = input.translate(str.maketrans("01", "10"))[::-1]
|
||||||
|
return input + "0" + b
|
||||||
|
|
||||||
|
def checksum(state: str) -> str:
|
||||||
|
while len(state) % 2 == 0:
|
||||||
|
state = "".join(str(int(a == b)) for a, b in itertools.batched(state, 2))
|
||||||
|
return state
|
||||||
|
|
||||||
|
state = input.strip()
|
||||||
|
disk_size = 272
|
||||||
|
while len(state) < disk_size:
|
||||||
|
state = curve_step(state)
|
||||||
|
return checksum(state[:disk_size])
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d16/ex1/input
Normal file
1
2016/d16/ex1/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
00101000101111010
|
||||||
30
2016/d16/ex2/ex2.py
Executable file
30
2016/d16/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,30 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def curve_step(input: str) -> str:
|
||||||
|
b = input.translate(str.maketrans("01", "10"))[::-1]
|
||||||
|
return input + "0" + b
|
||||||
|
|
||||||
|
def checksum(state: str) -> str:
|
||||||
|
while len(state) % 2 == 0:
|
||||||
|
state = "".join(str(int(a == b)) for a, b in itertools.batched(state, 2))
|
||||||
|
return state
|
||||||
|
|
||||||
|
state = input.strip()
|
||||||
|
disk_size = 35651584
|
||||||
|
while len(state) < disk_size:
|
||||||
|
state = curve_step(state)
|
||||||
|
return checksum(state[:disk_size])
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d16/ex2/input
Normal file
1
2016/d16/ex2/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
00101000101111010
|
||||||
81
2016/d17/ex1/ex1.py
Executable file
81
2016/d17/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,81 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import functools
|
||||||
|
import hashlib
|
||||||
|
import sys
|
||||||
|
from collections.abc import Callable, Iterator
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
# Iteration order of `Direction` is relevant to the solution
|
||||||
|
class Direction(enum.StrEnum):
|
||||||
|
UP = "U"
|
||||||
|
DOWN = "D"
|
||||||
|
LEFT = "L"
|
||||||
|
RIGHT = "R"
|
||||||
|
|
||||||
|
def apply(self, p: Point) -> Point:
|
||||||
|
match self:
|
||||||
|
case Direction.UP:
|
||||||
|
dx, dy = -1, 0
|
||||||
|
case Direction.DOWN:
|
||||||
|
dx, dy = 1, 0
|
||||||
|
case Direction.LEFT:
|
||||||
|
dx, dy = 0, -1
|
||||||
|
case Direction.RIGHT:
|
||||||
|
dx, dy = 0, 1
|
||||||
|
return Point(p.x + dx, p.y + dy)
|
||||||
|
|
||||||
|
|
||||||
|
Path = tuple[Direction, ...]
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def doors_at_passcode(path: Path, passcode: str) -> Iterator[Direction]:
|
||||||
|
hashed = hashlib.md5((passcode + "".join(path)).encode()).hexdigest()[:4]
|
||||||
|
for c, dir in zip(hashed, Direction):
|
||||||
|
if c.isdigit() or c == "a":
|
||||||
|
continue
|
||||||
|
yield Direction(dir) # Satisfy Mypy to use the correct return type...
|
||||||
|
|
||||||
|
def bfs(
|
||||||
|
start: Point,
|
||||||
|
end: Point,
|
||||||
|
doors_at: Callable[[Path], Iterator[Direction]],
|
||||||
|
) -> Path:
|
||||||
|
queue: list[tuple[Point, Path]] = [(start, ())]
|
||||||
|
|
||||||
|
while queue:
|
||||||
|
new_queue: list[tuple[Point, Path]] = []
|
||||||
|
for p, path in queue:
|
||||||
|
if p == end:
|
||||||
|
return path
|
||||||
|
for dir in doors_at(path):
|
||||||
|
new_pos = dir.apply(p)
|
||||||
|
if new_pos.x < 0 or new_pos.x > end.x:
|
||||||
|
continue
|
||||||
|
if new_pos.y < 0 or new_pos.y > end.y:
|
||||||
|
continue
|
||||||
|
new_queue.append((dir.apply(p), path + (dir,)))
|
||||||
|
queue = new_queue
|
||||||
|
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
passcode = input.strip()
|
||||||
|
doors_at = functools.partial(doors_at_passcode, passcode=passcode)
|
||||||
|
return "".join(bfs(Point(0, 0), Point(3, 3), doors_at))
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d17/ex1/input
Normal file
1
2016/d17/ex1/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
pgflpeqp
|
||||||
83
2016/d17/ex2/ex2.py
Executable file
83
2016/d17/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,83 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import functools
|
||||||
|
import hashlib
|
||||||
|
import sys
|
||||||
|
from collections.abc import Callable, Iterator
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
# Iteration order of `Direction` is relevant to the solution
|
||||||
|
class Direction(enum.StrEnum):
|
||||||
|
UP = "U"
|
||||||
|
DOWN = "D"
|
||||||
|
LEFT = "L"
|
||||||
|
RIGHT = "R"
|
||||||
|
|
||||||
|
def apply(self, p: Point) -> Point:
|
||||||
|
match self:
|
||||||
|
case Direction.UP:
|
||||||
|
dx, dy = -1, 0
|
||||||
|
case Direction.DOWN:
|
||||||
|
dx, dy = 1, 0
|
||||||
|
case Direction.LEFT:
|
||||||
|
dx, dy = 0, -1
|
||||||
|
case Direction.RIGHT:
|
||||||
|
dx, dy = 0, 1
|
||||||
|
return Point(p.x + dx, p.y + dy)
|
||||||
|
|
||||||
|
|
||||||
|
Path = tuple[Direction, ...]
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def doors_at_passcode(path: Path, passcode: str) -> Iterator[Direction]:
|
||||||
|
hashed = hashlib.md5((passcode + "".join(path)).encode()).hexdigest()[:4]
|
||||||
|
for c, dir in zip(hashed, Direction):
|
||||||
|
if c.isdigit() or c == "a":
|
||||||
|
continue
|
||||||
|
yield Direction(dir) # Satisfy Mypy to use the correct return type...
|
||||||
|
|
||||||
|
def bfs(
|
||||||
|
start: Point,
|
||||||
|
end: Point,
|
||||||
|
doors_at: Callable[[Path], Iterator[Direction]],
|
||||||
|
) -> int:
|
||||||
|
queue: list[tuple[Point, Path]] = [(start, ())]
|
||||||
|
max_dist = -1
|
||||||
|
|
||||||
|
while queue:
|
||||||
|
new_queue: list[tuple[Point, Path]] = []
|
||||||
|
for p, path in queue:
|
||||||
|
if p == end:
|
||||||
|
max_dist = max(max_dist, len(path))
|
||||||
|
continue
|
||||||
|
for dir in doors_at(path):
|
||||||
|
new_pos = dir.apply(p)
|
||||||
|
if new_pos.x < 0 or new_pos.x > end.x:
|
||||||
|
continue
|
||||||
|
if new_pos.y < 0 or new_pos.y > end.y:
|
||||||
|
continue
|
||||||
|
new_queue.append((dir.apply(p), path + (dir,)))
|
||||||
|
queue = new_queue
|
||||||
|
|
||||||
|
return max_dist
|
||||||
|
|
||||||
|
passcode = input.strip()
|
||||||
|
doors_at = functools.partial(doors_at_passcode, passcode=passcode)
|
||||||
|
return bfs(Point(0, 0), Point(3, 3), doors_at)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d17/ex2/input
Normal file
1
2016/d17/ex2/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
pgflpeqp
|
||||||
41
2016/d18/ex1/ex1.py
Executable file
41
2016/d18/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> set[int]:
|
||||||
|
return {i for i, c in enumerate(input.strip()) if c == "^"}
|
||||||
|
|
||||||
|
def is_trap(tile: int, traps: set[int]) -> bool:
|
||||||
|
match ((tile - 1) in traps, tile in traps, (tile + 1) in traps):
|
||||||
|
case (True, True, False):
|
||||||
|
return True
|
||||||
|
case (False, True, True):
|
||||||
|
return True
|
||||||
|
case (True, False, False):
|
||||||
|
return True
|
||||||
|
case (False, False, True):
|
||||||
|
return True
|
||||||
|
case _:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def step_row(traps: set[int], row_length: int) -> set[int]:
|
||||||
|
return {i for i in range(row_length) if is_trap(i, traps)}
|
||||||
|
|
||||||
|
traps = parse(input)
|
||||||
|
row_length = len(input.strip())
|
||||||
|
safe_tiles = row_length - len(traps)
|
||||||
|
for _ in range(40 - 1):
|
||||||
|
traps = step_row(traps, row_length)
|
||||||
|
safe_tiles += row_length - len(traps)
|
||||||
|
return safe_tiles
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d18/ex1/input
Normal file
1
2016/d18/ex1/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
^..^^.^^^..^^.^...^^^^^....^.^..^^^.^.^.^^...^.^.^.^.^^.....^.^^.^.^.^.^.^.^^..^^^^^...^.....^....^.
|
||||||
42
2016/d18/ex2/ex2.py
Executable file
42
2016/d18/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> set[int]:
|
||||||
|
return {i for i, c in enumerate(input.strip()) if c == "^"}
|
||||||
|
|
||||||
|
def is_trap(tile: int, traps: set[int]) -> bool:
|
||||||
|
match ((tile - 1) in traps, tile in traps, (tile + 1) in traps):
|
||||||
|
case (True, True, False):
|
||||||
|
return True
|
||||||
|
case (False, True, True):
|
||||||
|
return True
|
||||||
|
case (True, False, False):
|
||||||
|
return True
|
||||||
|
case (False, False, True):
|
||||||
|
return True
|
||||||
|
case _:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def step_row(traps: set[int], row_length: int) -> set[int]:
|
||||||
|
return {i for i in range(row_length) if is_trap(i, traps)}
|
||||||
|
|
||||||
|
traps = parse(input)
|
||||||
|
row_length = len(input.strip())
|
||||||
|
safe_tiles = row_length - len(traps)
|
||||||
|
# No cycles, we really need to iterate though all steps
|
||||||
|
for _ in range(400000 - 1):
|
||||||
|
traps = step_row(traps, row_length)
|
||||||
|
safe_tiles += row_length - len(traps)
|
||||||
|
return safe_tiles
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d18/ex2/input
Normal file
1
2016/d18/ex2/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
^..^^.^^^..^^.^...^^^^^....^.^..^^^.^.^.^^...^.^.^.^.^^.....^.^^.^.^.^.^.^.^^..^^^^^...^.....^....^.
|
||||||
25
2016/d19/ex1/ex1.py
Executable file
25
2016/d19/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def msb(n: int) -> int:
|
||||||
|
assert n # Sanity check
|
||||||
|
return n.bit_length() - 1
|
||||||
|
|
||||||
|
# https://en.wikipedia.org/wiki/Josephus_problem
|
||||||
|
def josephus(n: int) -> int:
|
||||||
|
return 2 * (n - (1 << msb(n))) + 1
|
||||||
|
|
||||||
|
num_elves = int(input.strip())
|
||||||
|
return josephus(num_elves)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d19/ex1/input
Normal file
1
2016/d19/ex1/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
3014387
|
||||||
31
2016/d19/ex2/ex2.py
Executable file
31
2016/d19/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def white_elephant(num_elves: int) -> int:
|
||||||
|
left = collections.deque(range(1, (num_elves // 2) + 1))
|
||||||
|
right = collections.deque(range(num_elves, (num_elves // 2), -1))
|
||||||
|
|
||||||
|
while left and right:
|
||||||
|
if len(left) > len(right):
|
||||||
|
left.pop()
|
||||||
|
else:
|
||||||
|
right.pop()
|
||||||
|
right.appendleft(left.popleft())
|
||||||
|
left.append(right.pop())
|
||||||
|
return (left + right)[0]
|
||||||
|
|
||||||
|
num_elves = int(input.strip())
|
||||||
|
return white_elephant(num_elves)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
2016/d19/ex2/input
Normal file
1
2016/d19/ex2/input
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
3014387
|
||||||
44
2016/d20/ex1/ex1.py
Executable file
44
2016/d20/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Interval(NamedTuple):
|
||||||
|
start: int
|
||||||
|
end: int
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Interval":
|
||||||
|
start, end = input.split("-")
|
||||||
|
return cls(int(start), int(end))
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Interval]:
|
||||||
|
return [Interval.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def merge_overlaps(intervals: list[Interval]) -> list[Interval]:
|
||||||
|
# Sort intervals by start, then merge overlapping ones
|
||||||
|
intervals = sorted(intervals)
|
||||||
|
res = [intervals[0]]
|
||||||
|
for interval in intervals[1:]:
|
||||||
|
# `+ 1` to merge [0, 2] and [2, 5]
|
||||||
|
if interval.start <= (res[-1].end + 1):
|
||||||
|
res[-1] = Interval(res[-1].start, max(interval.end, res[-1].end))
|
||||||
|
else:
|
||||||
|
res.append(interval)
|
||||||
|
return res
|
||||||
|
|
||||||
|
intervals = parse(input)
|
||||||
|
intervals = merge_overlaps(intervals)
|
||||||
|
return 0 if intervals[0].start else intervals[0].end + 1
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1029
2016/d20/ex1/input
Normal file
1029
2016/d20/ex1/input
Normal file
File diff suppressed because it is too large
Load diff
44
2016/d20/ex2/ex2.py
Executable file
44
2016/d20/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,44 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Interval(NamedTuple):
|
||||||
|
start: int
|
||||||
|
end: int
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Interval":
|
||||||
|
start, end = input.split("-")
|
||||||
|
return cls(int(start), int(end))
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Interval]:
|
||||||
|
return [Interval.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def merge_overlaps(intervals: list[Interval]) -> list[Interval]:
|
||||||
|
# Sort intervals by start, then merge overlapping ones
|
||||||
|
intervals = sorted(intervals)
|
||||||
|
res = [intervals[0]]
|
||||||
|
for interval in intervals[1:]:
|
||||||
|
# `+ 1` to merge [0, 2] and [2, 5]
|
||||||
|
if interval.start <= (res[-1].end + 1):
|
||||||
|
res[-1] = Interval(res[-1].start, max(interval.end, res[-1].end))
|
||||||
|
else:
|
||||||
|
res.append(interval)
|
||||||
|
return res
|
||||||
|
|
||||||
|
intervals = parse(input)
|
||||||
|
intervals = merge_overlaps(intervals)
|
||||||
|
return (1 << 32) - sum((end - start + 1) for start, end in intervals)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1029
2016/d20/ex2/input
Normal file
1029
2016/d20/ex2/input
Normal file
File diff suppressed because it is too large
Load diff
92
2016/d21/ex1/ex1.py
Executable file
92
2016/d21/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,92 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
SWAP_POSITION = "swap position"
|
||||||
|
SWAP_LETTER = "swap letter"
|
||||||
|
ROTATE_LEFT = "rotate left"
|
||||||
|
ROTATE_RIGHT = "rotate right"
|
||||||
|
ROTATE_BASED = "rotate based"
|
||||||
|
REVERSE_POSITION = "reverse positions"
|
||||||
|
MOVE_POSITION = "move position"
|
||||||
|
|
||||||
|
|
||||||
|
class Instruction(NamedTuple):
|
||||||
|
op: Op
|
||||||
|
x: str
|
||||||
|
y: str | None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Instruction":
|
||||||
|
split_input = input.split()
|
||||||
|
op = Op(" ".join(split_input[:2]))
|
||||||
|
x: str
|
||||||
|
y: str | None
|
||||||
|
match op:
|
||||||
|
case Op.ROTATE_LEFT | Op.ROTATE_RIGHT:
|
||||||
|
x, y = split_input[2], None
|
||||||
|
case Op.ROTATE_BASED:
|
||||||
|
x, y = split_input[-1], None
|
||||||
|
case _:
|
||||||
|
x, y = split_input[2], split_input[-1]
|
||||||
|
return cls(op, x, y)
|
||||||
|
|
||||||
|
def apply(self, password: str) -> str:
|
||||||
|
letters = list(password)
|
||||||
|
match self.op:
|
||||||
|
case Op.SWAP_POSITION:
|
||||||
|
assert self.y is not None # Sanity check
|
||||||
|
x, y = int(self.x), int(self.y)
|
||||||
|
letters[x], letters[y] = letters[y], letters[x]
|
||||||
|
case Op.SWAP_LETTER:
|
||||||
|
assert self.y is not None # Sanity check
|
||||||
|
x, y = letters.index(self.x), letters.index(self.y)
|
||||||
|
letters[x], letters[y] = letters[y], letters[x]
|
||||||
|
case Op.ROTATE_LEFT:
|
||||||
|
x = int(self.x)
|
||||||
|
x %= len(letters)
|
||||||
|
letters = letters[x:] + letters[:x]
|
||||||
|
case Op.ROTATE_RIGHT:
|
||||||
|
x = int(self.x)
|
||||||
|
x %= len(letters)
|
||||||
|
letters = letters[-x:] + letters[:-x]
|
||||||
|
case Op.ROTATE_BASED:
|
||||||
|
x = letters.index(self.x)
|
||||||
|
x += x >= 4
|
||||||
|
x += 1
|
||||||
|
x %= len(letters)
|
||||||
|
letters = letters[-x:] + letters[:-x]
|
||||||
|
case Op.REVERSE_POSITION:
|
||||||
|
assert self.y is not None # Sanity check
|
||||||
|
x, y = int(self.x), int(self.y)
|
||||||
|
letters[x : y + 1] = letters[x : y + 1][::-1]
|
||||||
|
case Op.MOVE_POSITION:
|
||||||
|
assert self.y is not None # Sanity check
|
||||||
|
x, y = int(self.x), int(self.y)
|
||||||
|
letter = letters.pop(x)
|
||||||
|
letters.insert(y, letter)
|
||||||
|
return "".join(letters)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def parse(input: str) -> list[Instruction]:
|
||||||
|
return [Instruction.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
password = "abcdefgh"
|
||||||
|
for instruction in instructions:
|
||||||
|
password = instruction.apply(password)
|
||||||
|
return password
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
100
2016/d21/ex1/input
Normal file
100
2016/d21/ex1/input
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
swap letter a with letter d
|
||||||
|
move position 6 to position 4
|
||||||
|
move position 5 to position 1
|
||||||
|
swap letter h with letter e
|
||||||
|
rotate based on position of letter a
|
||||||
|
move position 6 to position 2
|
||||||
|
reverse positions 0 through 1
|
||||||
|
rotate based on position of letter h
|
||||||
|
rotate based on position of letter g
|
||||||
|
rotate based on position of letter h
|
||||||
|
reverse positions 4 through 7
|
||||||
|
swap letter a with letter f
|
||||||
|
swap position 2 with position 7
|
||||||
|
move position 7 to position 5
|
||||||
|
reverse positions 0 through 5
|
||||||
|
rotate based on position of letter f
|
||||||
|
rotate right 4 steps
|
||||||
|
swap position 3 with position 0
|
||||||
|
move position 1 to position 2
|
||||||
|
reverse positions 4 through 6
|
||||||
|
swap position 3 with position 5
|
||||||
|
swap letter a with letter c
|
||||||
|
swap position 5 with position 2
|
||||||
|
swap position 7 with position 2
|
||||||
|
move position 2 to position 5
|
||||||
|
rotate based on position of letter h
|
||||||
|
rotate right 2 steps
|
||||||
|
swap position 3 with position 4
|
||||||
|
move position 0 to position 1
|
||||||
|
reverse positions 1 through 7
|
||||||
|
reverse positions 1 through 4
|
||||||
|
rotate based on position of letter b
|
||||||
|
rotate right 7 steps
|
||||||
|
rotate left 0 steps
|
||||||
|
swap position 6 with position 1
|
||||||
|
reverse positions 1 through 3
|
||||||
|
reverse positions 0 through 3
|
||||||
|
move position 0 to position 4
|
||||||
|
rotate based on position of letter f
|
||||||
|
reverse positions 0 through 7
|
||||||
|
reverse positions 0 through 1
|
||||||
|
move position 1 to position 7
|
||||||
|
move position 7 to position 6
|
||||||
|
rotate based on position of letter b
|
||||||
|
reverse positions 3 through 5
|
||||||
|
reverse positions 0 through 3
|
||||||
|
swap letter c with letter h
|
||||||
|
reverse positions 3 through 5
|
||||||
|
swap position 3 with position 6
|
||||||
|
swap letter d with letter g
|
||||||
|
move position 5 to position 6
|
||||||
|
swap position 6 with position 2
|
||||||
|
rotate right 5 steps
|
||||||
|
swap letter e with letter g
|
||||||
|
rotate based on position of letter e
|
||||||
|
rotate based on position of letter c
|
||||||
|
swap letter g with letter e
|
||||||
|
rotate based on position of letter b
|
||||||
|
rotate based on position of letter b
|
||||||
|
swap position 0 with position 2
|
||||||
|
move position 6 to position 0
|
||||||
|
move position 5 to position 0
|
||||||
|
rotate left 2 steps
|
||||||
|
move position 0 to position 5
|
||||||
|
rotate left 7 steps
|
||||||
|
swap letter b with letter g
|
||||||
|
rotate based on position of letter d
|
||||||
|
swap letter h with letter e
|
||||||
|
swap letter d with letter c
|
||||||
|
rotate based on position of letter f
|
||||||
|
move position 5 to position 0
|
||||||
|
rotate left 5 steps
|
||||||
|
swap position 0 with position 7
|
||||||
|
swap position 0 with position 3
|
||||||
|
rotate left 4 steps
|
||||||
|
rotate left 1 step
|
||||||
|
rotate right 6 steps
|
||||||
|
swap position 0 with position 1
|
||||||
|
reverse positions 4 through 6
|
||||||
|
reverse positions 4 through 6
|
||||||
|
move position 6 to position 3
|
||||||
|
move position 7 to position 4
|
||||||
|
rotate right 4 steps
|
||||||
|
swap letter g with letter d
|
||||||
|
swap letter c with letter e
|
||||||
|
swap letter e with letter h
|
||||||
|
rotate right 5 steps
|
||||||
|
rotate based on position of letter g
|
||||||
|
rotate based on position of letter g
|
||||||
|
rotate left 3 steps
|
||||||
|
swap letter h with letter g
|
||||||
|
reverse positions 0 through 4
|
||||||
|
rotate right 4 steps
|
||||||
|
move position 6 to position 4
|
||||||
|
rotate based on position of letter c
|
||||||
|
swap position 2 with position 6
|
||||||
|
swap position 7 with position 2
|
||||||
|
rotate right 1 step
|
||||||
|
swap position 3 with position 1
|
||||||
|
swap position 4 with position 6
|
||||||
101
2016/d21/ex2/ex2.py
Executable file
101
2016/d21/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,101 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
SWAP_POSITION = "swap position"
|
||||||
|
SWAP_LETTER = "swap letter"
|
||||||
|
ROTATE_LEFT = "rotate left"
|
||||||
|
ROTATE_RIGHT = "rotate right"
|
||||||
|
ROTATE_BASED = "rotate based"
|
||||||
|
REVERSE_POSITION = "reverse positions"
|
||||||
|
MOVE_POSITION = "move position"
|
||||||
|
|
||||||
|
|
||||||
|
class Instruction(NamedTuple):
|
||||||
|
op: Op
|
||||||
|
x: str
|
||||||
|
y: str | None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Instruction":
|
||||||
|
split_input = input.split()
|
||||||
|
op = Op(" ".join(split_input[:2]))
|
||||||
|
x: str
|
||||||
|
y: str | None
|
||||||
|
match op:
|
||||||
|
case Op.ROTATE_LEFT | Op.ROTATE_RIGHT:
|
||||||
|
x, y = split_input[2], None
|
||||||
|
case Op.ROTATE_BASED:
|
||||||
|
x, y = split_input[-1], None
|
||||||
|
case _:
|
||||||
|
x, y = split_input[2], split_input[-1]
|
||||||
|
return cls(op, x, y)
|
||||||
|
|
||||||
|
def undo(self, password: str) -> str:
|
||||||
|
letters = list(password)
|
||||||
|
match self.op:
|
||||||
|
case Op.SWAP_POSITION:
|
||||||
|
assert self.y is not None # Sanity check
|
||||||
|
x, y = int(self.x), int(self.y)
|
||||||
|
letters[x], letters[y] = letters[y], letters[x]
|
||||||
|
case Op.SWAP_LETTER:
|
||||||
|
assert self.y is not None # Sanity check
|
||||||
|
x, y = letters.index(self.x), letters.index(self.y)
|
||||||
|
letters[x], letters[y] = letters[y], letters[x]
|
||||||
|
case Op.ROTATE_LEFT:
|
||||||
|
x = int(self.x)
|
||||||
|
x %= len(letters)
|
||||||
|
letters = letters[-x:] + letters[:-x]
|
||||||
|
case Op.ROTATE_RIGHT:
|
||||||
|
x = int(self.x)
|
||||||
|
x %= len(letters)
|
||||||
|
letters = letters[x:] + letters[:x]
|
||||||
|
case Op.ROTATE_BASED:
|
||||||
|
# original: 0 1 2 3 4 5 6 7
|
||||||
|
# result: 1 3 5 7 2 4 6 0
|
||||||
|
# rotation: 1 2 3 4 6 7 0 1
|
||||||
|
x = {
|
||||||
|
1: 1,
|
||||||
|
3: 2,
|
||||||
|
5: 3,
|
||||||
|
7: 4,
|
||||||
|
2: 6,
|
||||||
|
4: 7,
|
||||||
|
6: 0,
|
||||||
|
0: 1,
|
||||||
|
}[letters.index(self.x)]
|
||||||
|
letters = letters[x:] + letters[:x]
|
||||||
|
case Op.REVERSE_POSITION:
|
||||||
|
assert self.y is not None # Sanity check
|
||||||
|
x, y = int(self.x), int(self.y)
|
||||||
|
letters[x : y + 1] = letters[x : y + 1][::-1]
|
||||||
|
case Op.MOVE_POSITION:
|
||||||
|
assert self.y is not None # Sanity check
|
||||||
|
x, y = int(self.x), int(self.y)
|
||||||
|
letter = letters.pop(y)
|
||||||
|
letters.insert(x, letter)
|
||||||
|
return "".join(letters)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> str:
|
||||||
|
def parse(input: str) -> list[Instruction]:
|
||||||
|
return [Instruction.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
password = "fbgdceah"
|
||||||
|
for instruction in instructions[::-1]:
|
||||||
|
password = instruction.undo(password)
|
||||||
|
return password
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
100
2016/d21/ex2/input
Normal file
100
2016/d21/ex2/input
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
swap letter a with letter d
|
||||||
|
move position 6 to position 4
|
||||||
|
move position 5 to position 1
|
||||||
|
swap letter h with letter e
|
||||||
|
rotate based on position of letter a
|
||||||
|
move position 6 to position 2
|
||||||
|
reverse positions 0 through 1
|
||||||
|
rotate based on position of letter h
|
||||||
|
rotate based on position of letter g
|
||||||
|
rotate based on position of letter h
|
||||||
|
reverse positions 4 through 7
|
||||||
|
swap letter a with letter f
|
||||||
|
swap position 2 with position 7
|
||||||
|
move position 7 to position 5
|
||||||
|
reverse positions 0 through 5
|
||||||
|
rotate based on position of letter f
|
||||||
|
rotate right 4 steps
|
||||||
|
swap position 3 with position 0
|
||||||
|
move position 1 to position 2
|
||||||
|
reverse positions 4 through 6
|
||||||
|
swap position 3 with position 5
|
||||||
|
swap letter a with letter c
|
||||||
|
swap position 5 with position 2
|
||||||
|
swap position 7 with position 2
|
||||||
|
move position 2 to position 5
|
||||||
|
rotate based on position of letter h
|
||||||
|
rotate right 2 steps
|
||||||
|
swap position 3 with position 4
|
||||||
|
move position 0 to position 1
|
||||||
|
reverse positions 1 through 7
|
||||||
|
reverse positions 1 through 4
|
||||||
|
rotate based on position of letter b
|
||||||
|
rotate right 7 steps
|
||||||
|
rotate left 0 steps
|
||||||
|
swap position 6 with position 1
|
||||||
|
reverse positions 1 through 3
|
||||||
|
reverse positions 0 through 3
|
||||||
|
move position 0 to position 4
|
||||||
|
rotate based on position of letter f
|
||||||
|
reverse positions 0 through 7
|
||||||
|
reverse positions 0 through 1
|
||||||
|
move position 1 to position 7
|
||||||
|
move position 7 to position 6
|
||||||
|
rotate based on position of letter b
|
||||||
|
reverse positions 3 through 5
|
||||||
|
reverse positions 0 through 3
|
||||||
|
swap letter c with letter h
|
||||||
|
reverse positions 3 through 5
|
||||||
|
swap position 3 with position 6
|
||||||
|
swap letter d with letter g
|
||||||
|
move position 5 to position 6
|
||||||
|
swap position 6 with position 2
|
||||||
|
rotate right 5 steps
|
||||||
|
swap letter e with letter g
|
||||||
|
rotate based on position of letter e
|
||||||
|
rotate based on position of letter c
|
||||||
|
swap letter g with letter e
|
||||||
|
rotate based on position of letter b
|
||||||
|
rotate based on position of letter b
|
||||||
|
swap position 0 with position 2
|
||||||
|
move position 6 to position 0
|
||||||
|
move position 5 to position 0
|
||||||
|
rotate left 2 steps
|
||||||
|
move position 0 to position 5
|
||||||
|
rotate left 7 steps
|
||||||
|
swap letter b with letter g
|
||||||
|
rotate based on position of letter d
|
||||||
|
swap letter h with letter e
|
||||||
|
swap letter d with letter c
|
||||||
|
rotate based on position of letter f
|
||||||
|
move position 5 to position 0
|
||||||
|
rotate left 5 steps
|
||||||
|
swap position 0 with position 7
|
||||||
|
swap position 0 with position 3
|
||||||
|
rotate left 4 steps
|
||||||
|
rotate left 1 step
|
||||||
|
rotate right 6 steps
|
||||||
|
swap position 0 with position 1
|
||||||
|
reverse positions 4 through 6
|
||||||
|
reverse positions 4 through 6
|
||||||
|
move position 6 to position 3
|
||||||
|
move position 7 to position 4
|
||||||
|
rotate right 4 steps
|
||||||
|
swap letter g with letter d
|
||||||
|
swap letter c with letter e
|
||||||
|
swap letter e with letter h
|
||||||
|
rotate right 5 steps
|
||||||
|
rotate based on position of letter g
|
||||||
|
rotate based on position of letter g
|
||||||
|
rotate left 3 steps
|
||||||
|
swap letter h with letter g
|
||||||
|
reverse positions 0 through 4
|
||||||
|
rotate right 4 steps
|
||||||
|
move position 6 to position 4
|
||||||
|
rotate based on position of letter c
|
||||||
|
swap position 2 with position 6
|
||||||
|
swap position 7 with position 2
|
||||||
|
rotate right 1 step
|
||||||
|
swap position 3 with position 1
|
||||||
|
swap position 4 with position 6
|
||||||
49
2016/d22/ex1/ex1.py
Executable file
49
2016/d22/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
class Filesystem(NamedTuple):
|
||||||
|
size: int
|
||||||
|
used: int
|
||||||
|
|
||||||
|
@property
|
||||||
|
def avail(self) -> int:
|
||||||
|
return self.size - self.used
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_line(input: str) -> tuple[Point, Filesystem]:
|
||||||
|
raw_fs, raw_size, raw_used, raw_avail, _ = input.split()
|
||||||
|
size = int(raw_size.removesuffix("T"))
|
||||||
|
used = int(raw_used.removesuffix("T"))
|
||||||
|
avail = int(raw_avail.removesuffix("T"))
|
||||||
|
assert size == (used + avail) # Sanity check
|
||||||
|
*_, x, y = raw_fs.split("-")
|
||||||
|
return Point(int(x[1:]), int(y[1:])), Filesystem(size, used)
|
||||||
|
|
||||||
|
def parse(input: str) -> dict[Point, Filesystem]:
|
||||||
|
return {node: fs for node, fs in map(parse_line, input.splitlines()[2:])}
|
||||||
|
|
||||||
|
df = parse(input)
|
||||||
|
return sum(
|
||||||
|
a.used <= b.avail
|
||||||
|
for a, b in itertools.permutations(df.values(), 2)
|
||||||
|
if a.used > 0
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
877
2016/d22/ex1/input
Normal file
877
2016/d22/ex1/input
Normal file
|
|
@ -0,0 +1,877 @@
|
||||||
|
root@ebhq-gridcenter# df -h
|
||||||
|
Filesystem Size Used Avail Use%
|
||||||
|
/dev/grid/node-x0-y0 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x0-y1 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x0-y2 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x0-y3 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x0-y4 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x0-y5 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x0-y6 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x0-y7 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x0-y8 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x0-y9 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x0-y10 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x0-y11 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x0-y12 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x0-y13 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x0-y14 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x0-y15 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x0-y16 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x0-y17 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x0-y18 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x0-y19 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x0-y20 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x0-y21 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x0-y22 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x0-y23 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x0-y24 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x1-y0 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x1-y1 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x1-y2 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x1-y3 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x1-y4 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x1-y5 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x1-y6 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x1-y7 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x1-y8 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x1-y9 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x1-y10 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x1-y11 91T 66T 25T 72%
|
||||||
|
/dev/grid/node-x1-y12 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x1-y13 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x1-y14 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x1-y15 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x1-y16 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x1-y17 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x1-y18 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x1-y19 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x1-y20 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x1-y21 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x1-y22 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x1-y23 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x1-y24 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x2-y0 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x2-y1 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x2-y2 85T 64T 21T 75%
|
||||||
|
/dev/grid/node-x2-y3 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x2-y4 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x2-y5 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x2-y6 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x2-y7 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x2-y8 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x2-y9 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x2-y10 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x2-y11 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x2-y12 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x2-y13 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x2-y14 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x2-y15 91T 66T 25T 72%
|
||||||
|
/dev/grid/node-x2-y16 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x2-y17 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x2-y18 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x2-y19 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x2-y20 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x2-y21 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x2-y22 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x2-y23 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x2-y24 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x3-y0 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x3-y1 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x3-y2 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x3-y3 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x3-y4 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x3-y5 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x3-y6 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x3-y7 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x3-y8 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x3-y9 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x3-y10 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x3-y11 93T 67T 26T 72%
|
||||||
|
/dev/grid/node-x3-y12 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x3-y13 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x3-y14 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x3-y15 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x3-y16 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x3-y17 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x3-y18 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x3-y19 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x3-y20 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x3-y21 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x3-y22 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x3-y23 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x3-y24 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x4-y0 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x4-y1 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x4-y2 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x4-y3 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x4-y4 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x4-y5 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x4-y6 91T 66T 25T 72%
|
||||||
|
/dev/grid/node-x4-y7 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x4-y8 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x4-y9 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x4-y10 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x4-y11 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x4-y12 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x4-y13 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x4-y14 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x4-y15 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x4-y16 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x4-y17 85T 65T 20T 76%
|
||||||
|
/dev/grid/node-x4-y18 94T 72T 22T 76%
|
||||||
|
/dev/grid/node-x4-y19 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x4-y20 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x4-y21 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x4-y22 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x4-y23 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x4-y24 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x5-y0 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x5-y1 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x5-y2 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x5-y3 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x5-y4 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x5-y5 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x5-y6 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x5-y7 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x5-y8 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x5-y9 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x5-y10 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x5-y11 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x5-y12 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x5-y13 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x5-y14 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x5-y15 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x5-y16 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x5-y17 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x5-y18 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x5-y19 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x5-y20 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x5-y21 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x5-y22 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x5-y23 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x5-y24 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x6-y0 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x6-y1 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x6-y2 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x6-y3 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x6-y4 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x6-y5 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x6-y6 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x6-y7 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x6-y8 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x6-y9 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x6-y10 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x6-y11 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x6-y12 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x6-y13 93T 67T 26T 72%
|
||||||
|
/dev/grid/node-x6-y14 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x6-y15 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x6-y16 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x6-y17 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x6-y18 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x6-y19 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x6-y20 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x6-y21 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x6-y22 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x6-y23 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x6-y24 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x7-y0 87T 66T 21T 75%
|
||||||
|
/dev/grid/node-x7-y1 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x7-y2 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x7-y3 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x7-y4 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x7-y5 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x7-y6 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x7-y7 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x7-y8 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x7-y9 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x7-y10 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x7-y11 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x7-y12 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x7-y13 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x7-y14 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x7-y15 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x7-y16 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x7-y17 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x7-y18 87T 70T 17T 80%
|
||||||
|
/dev/grid/node-x7-y19 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x7-y20 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x7-y21 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x7-y22 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x7-y23 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x7-y24 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x8-y0 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x8-y1 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x8-y2 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x8-y3 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x8-y4 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x8-y5 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x8-y6 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x8-y7 87T 66T 21T 75%
|
||||||
|
/dev/grid/node-x8-y8 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x8-y9 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x8-y10 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x8-y11 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x8-y12 91T 66T 25T 72%
|
||||||
|
/dev/grid/node-x8-y13 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x8-y14 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x8-y15 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x8-y16 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x8-y17 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x8-y18 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x8-y19 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x8-y20 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x8-y21 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x8-y22 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x8-y23 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x8-y24 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x9-y0 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x9-y1 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x9-y2 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x9-y3 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x9-y4 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x9-y5 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x9-y6 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x9-y7 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x9-y8 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x9-y9 85T 65T 20T 76%
|
||||||
|
/dev/grid/node-x9-y10 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x9-y11 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x9-y12 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x9-y13 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x9-y14 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x9-y15 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x9-y16 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x9-y17 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x9-y18 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x9-y19 85T 64T 21T 75%
|
||||||
|
/dev/grid/node-x9-y20 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x9-y21 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x9-y22 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x9-y23 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x9-y24 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x10-y0 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x10-y1 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x10-y2 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x10-y3 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x10-y4 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x10-y5 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x10-y6 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x10-y7 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x10-y8 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x10-y9 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x10-y10 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x10-y11 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x10-y12 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x10-y13 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x10-y14 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x10-y15 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x10-y16 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x10-y17 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x10-y18 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x10-y19 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x10-y20 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x10-y21 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x10-y22 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x10-y23 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x10-y24 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x11-y0 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x11-y1 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x11-y2 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x11-y3 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x11-y4 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x11-y5 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x11-y6 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x11-y7 86T 72T 14T 83%
|
||||||
|
/dev/grid/node-x11-y8 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x11-y9 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x11-y10 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x11-y11 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x11-y12 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x11-y13 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x11-y14 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x11-y15 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x11-y16 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x11-y17 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x11-y18 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x11-y19 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x11-y20 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x11-y21 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x11-y22 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x11-y23 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x11-y24 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x12-y0 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x12-y1 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x12-y2 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x12-y3 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x12-y4 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x12-y5 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x12-y6 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x12-y7 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x12-y8 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x12-y9 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x12-y10 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x12-y11 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x12-y12 87T 70T 17T 80%
|
||||||
|
/dev/grid/node-x12-y13 86T 72T 14T 83%
|
||||||
|
/dev/grid/node-x12-y14 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x12-y15 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x12-y16 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x12-y17 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x12-y18 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x12-y19 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x12-y20 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x12-y21 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x12-y22 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x12-y23 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x12-y24 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x13-y0 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x13-y1 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x13-y2 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x13-y3 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x13-y4 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x13-y5 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x13-y6 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x13-y7 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x13-y8 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x13-y9 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x13-y10 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x13-y11 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x13-y12 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x13-y13 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x13-y14 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x13-y15 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x13-y16 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x13-y17 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x13-y18 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x13-y19 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x13-y20 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x13-y21 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x13-y22 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x13-y23 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x13-y24 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x14-y0 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x14-y1 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x14-y2 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x14-y3 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x14-y4 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x14-y5 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x14-y6 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x14-y7 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x14-y8 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x14-y9 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x14-y10 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x14-y11 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x14-y12 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x14-y13 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x14-y14 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x14-y15 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x14-y16 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x14-y17 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x14-y18 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x14-y19 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x14-y20 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x14-y21 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x14-y22 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x14-y23 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x14-y24 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x15-y0 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x15-y1 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x15-y2 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x15-y3 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x15-y4 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x15-y5 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x15-y6 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x15-y7 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x15-y8 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x15-y9 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x15-y10 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x15-y11 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x15-y12 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x15-y13 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x15-y14 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x15-y15 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x15-y16 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x15-y17 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x15-y18 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x15-y19 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x15-y20 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x15-y21 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x15-y22 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x15-y23 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x15-y24 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x16-y0 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x16-y1 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x16-y2 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x16-y3 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x16-y4 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x16-y5 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x16-y6 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x16-y7 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x16-y8 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x16-y9 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x16-y10 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x16-y11 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x16-y12 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x16-y13 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x16-y14 94T 72T 22T 76%
|
||||||
|
/dev/grid/node-x16-y15 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x16-y16 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x16-y17 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x16-y18 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x16-y19 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x16-y20 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x16-y21 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x16-y22 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x16-y23 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x16-y24 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x17-y0 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x17-y1 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x17-y2 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x17-y3 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x17-y4 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x17-y5 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x17-y6 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x17-y7 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x17-y8 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x17-y9 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x17-y10 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x17-y11 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x17-y12 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x17-y13 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x17-y14 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x17-y15 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x17-y16 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x17-y17 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x17-y18 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x17-y19 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x17-y20 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x17-y21 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x17-y22 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x17-y23 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x17-y24 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x18-y0 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x18-y1 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x18-y2 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x18-y3 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x18-y4 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x18-y5 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x18-y6 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x18-y7 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x18-y8 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x18-y9 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x18-y10 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x18-y11 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x18-y12 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x18-y13 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x18-y14 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x18-y15 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x18-y16 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x18-y17 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x18-y18 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x18-y19 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x18-y20 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x18-y21 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x18-y22 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x18-y23 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x18-y24 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x19-y0 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x19-y1 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x19-y2 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x19-y3 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x19-y4 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x19-y5 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x19-y6 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x19-y7 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x19-y8 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x19-y9 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x19-y10 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x19-y11 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x19-y12 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x19-y13 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x19-y14 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x19-y15 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x19-y16 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x19-y17 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x19-y18 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x19-y19 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x19-y20 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x19-y21 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x19-y22 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x19-y23 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x19-y24 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x20-y0 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x20-y1 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x20-y2 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x20-y3 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x20-y4 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x20-y5 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x20-y6 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x20-y7 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x20-y8 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x20-y9 91T 71T 20T 78%
|
||||||
|
/dev/grid/node-x20-y10 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x20-y11 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x20-y12 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x20-y13 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x20-y14 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x20-y15 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x20-y16 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x20-y17 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x20-y18 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x20-y19 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x20-y20 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x20-y21 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x20-y22 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x20-y23 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x20-y24 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x21-y0 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x21-y1 85T 65T 20T 76%
|
||||||
|
/dev/grid/node-x21-y2 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x21-y3 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x21-y4 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x21-y5 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x21-y6 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x21-y7 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x21-y8 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x21-y9 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x21-y10 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x21-y11 504T 496T 8T 98%
|
||||||
|
/dev/grid/node-x21-y12 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x21-y13 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x21-y14 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x21-y15 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x21-y16 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x21-y17 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x21-y18 87T 70T 17T 80%
|
||||||
|
/dev/grid/node-x21-y19 85T 64T 21T 75%
|
||||||
|
/dev/grid/node-x21-y20 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x21-y21 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x21-y22 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x21-y23 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x21-y24 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x22-y0 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x22-y1 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x22-y2 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x22-y3 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x22-y4 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x22-y5 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x22-y6 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x22-y7 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x22-y8 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x22-y9 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x22-y10 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x22-y11 508T 492T 16T 96%
|
||||||
|
/dev/grid/node-x22-y12 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x22-y13 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x22-y14 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x22-y15 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x22-y16 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x22-y17 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x22-y18 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x22-y19 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x22-y20 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x22-y21 91T 71T 20T 78%
|
||||||
|
/dev/grid/node-x22-y22 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x22-y23 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x22-y24 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x23-y0 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x23-y1 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x23-y2 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x23-y3 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x23-y4 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x23-y5 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x23-y6 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x23-y7 85T 64T 21T 75%
|
||||||
|
/dev/grid/node-x23-y8 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x23-y9 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x23-y10 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x23-y11 509T 491T 18T 96%
|
||||||
|
/dev/grid/node-x23-y12 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x23-y13 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x23-y14 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x23-y15 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x23-y16 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x23-y17 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x23-y18 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x23-y19 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x23-y20 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x23-y21 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x23-y22 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x23-y23 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x23-y24 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x24-y0 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x24-y1 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x24-y2 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x24-y3 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x24-y4 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x24-y5 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x24-y6 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x24-y7 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x24-y8 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x24-y9 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x24-y10 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x24-y11 503T 492T 11T 97%
|
||||||
|
/dev/grid/node-x24-y12 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x24-y13 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x24-y14 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x24-y15 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x24-y16 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x24-y17 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x24-y18 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x24-y19 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x24-y20 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x24-y21 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x24-y22 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x24-y23 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x24-y24 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x25-y0 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x25-y1 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x25-y2 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x25-y3 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x25-y4 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x25-y5 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x25-y6 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x25-y7 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x25-y8 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x25-y9 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x25-y10 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x25-y11 503T 491T 12T 97%
|
||||||
|
/dev/grid/node-x25-y12 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x25-y13 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x25-y14 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x25-y15 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x25-y16 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x25-y17 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x25-y18 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x25-y19 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x25-y20 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x25-y21 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x25-y22 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x25-y23 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x25-y24 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x26-y0 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x26-y1 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x26-y2 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x26-y3 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x26-y4 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x26-y5 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x26-y6 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x26-y7 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x26-y8 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x26-y9 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x26-y10 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x26-y11 508T 496T 12T 97%
|
||||||
|
/dev/grid/node-x26-y12 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x26-y13 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x26-y14 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x26-y15 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x26-y16 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x26-y17 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x26-y18 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x26-y19 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x26-y20 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x26-y21 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x26-y22 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x26-y23 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x26-y24 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x27-y0 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x27-y1 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x27-y2 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x27-y3 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x27-y4 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x27-y5 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x27-y6 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x27-y7 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x27-y8 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x27-y9 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x27-y10 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x27-y11 501T 494T 7T 98%
|
||||||
|
/dev/grid/node-x27-y12 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x27-y13 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x27-y14 90T 0T 90T 0%
|
||||||
|
/dev/grid/node-x27-y15 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x27-y16 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x27-y17 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x27-y18 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x27-y19 94T 72T 22T 76%
|
||||||
|
/dev/grid/node-x27-y20 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x27-y21 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x27-y22 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x27-y23 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x27-y24 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x28-y0 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x28-y1 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x28-y2 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x28-y3 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x28-y4 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x28-y5 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x28-y6 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x28-y7 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x28-y8 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x28-y9 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x28-y10 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x28-y11 505T 493T 12T 97%
|
||||||
|
/dev/grid/node-x28-y12 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x28-y13 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x28-y14 85T 65T 20T 76%
|
||||||
|
/dev/grid/node-x28-y15 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x28-y16 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x28-y17 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x28-y18 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x28-y19 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x28-y20 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x28-y21 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x28-y22 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x28-y23 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x28-y24 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x29-y0 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x29-y1 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x29-y2 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x29-y3 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x29-y4 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x29-y5 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x29-y6 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x29-y7 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x29-y8 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x29-y9 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x29-y10 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x29-y11 510T 497T 13T 97%
|
||||||
|
/dev/grid/node-x29-y12 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x29-y13 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x29-y14 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x29-y15 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x29-y16 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x29-y17 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x29-y18 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x29-y19 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x29-y20 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x29-y21 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x29-y22 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x29-y23 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x29-y24 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x30-y0 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x30-y1 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x30-y2 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x30-y3 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x30-y4 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x30-y5 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x30-y6 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x30-y7 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x30-y8 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x30-y9 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x30-y10 87T 66T 21T 75%
|
||||||
|
/dev/grid/node-x30-y11 501T 490T 11T 97%
|
||||||
|
/dev/grid/node-x30-y12 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x30-y13 91T 71T 20T 78%
|
||||||
|
/dev/grid/node-x30-y14 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x30-y15 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x30-y16 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x30-y17 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x30-y18 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x30-y19 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x30-y20 91T 71T 20T 78%
|
||||||
|
/dev/grid/node-x30-y21 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x30-y22 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x30-y23 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x30-y24 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x31-y0 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x31-y1 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x31-y2 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x31-y3 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x31-y4 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x31-y5 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x31-y6 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x31-y7 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x31-y8 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x31-y9 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x31-y10 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x31-y11 506T 494T 12T 97%
|
||||||
|
/dev/grid/node-x31-y12 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x31-y13 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x31-y14 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x31-y15 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x31-y16 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x31-y17 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x31-y18 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x31-y19 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x31-y20 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x31-y21 86T 72T 14T 83%
|
||||||
|
/dev/grid/node-x31-y22 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x31-y23 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x31-y24 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x32-y0 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x32-y1 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x32-y2 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x32-y3 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x32-y4 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x32-y5 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x32-y6 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x32-y7 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x32-y8 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x32-y9 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x32-y10 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x32-y11 508T 491T 17T 96%
|
||||||
|
/dev/grid/node-x32-y12 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x32-y13 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x32-y14 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x32-y15 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x32-y16 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x32-y17 87T 66T 21T 75%
|
||||||
|
/dev/grid/node-x32-y18 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x32-y19 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x32-y20 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x32-y21 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x32-y22 93T 67T 26T 72%
|
||||||
|
/dev/grid/node-x32-y23 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x32-y24 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x33-y0 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x33-y1 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x33-y2 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x33-y3 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x33-y4 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x33-y5 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x33-y6 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x33-y7 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x33-y8 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x33-y9 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x33-y10 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x33-y11 507T 491T 16T 96%
|
||||||
|
/dev/grid/node-x33-y12 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x33-y13 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x33-y14 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x33-y15 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x33-y16 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x33-y17 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x33-y18 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x33-y19 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x33-y20 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x33-y21 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x33-y22 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x33-y23 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x33-y24 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x34-y0 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x34-y1 93T 67T 26T 72%
|
||||||
|
/dev/grid/node-x34-y2 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x34-y3 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x34-y4 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x34-y5 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x34-y6 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x34-y7 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x34-y8 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x34-y9 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x34-y10 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x34-y11 504T 496T 8T 98%
|
||||||
|
/dev/grid/node-x34-y12 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x34-y13 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x34-y14 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x34-y15 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x34-y16 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x34-y17 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x34-y18 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x34-y19 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x34-y20 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x34-y21 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x34-y22 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x34-y23 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x34-y24 92T 71T 21T 77%
|
||||||
101
2016/d22/ex2/ex2.py
Executable file
101
2016/d22/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,101 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import heapq
|
||||||
|
import sys
|
||||||
|
from collections.abc import Iterable
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
class Filesystem(NamedTuple):
|
||||||
|
size: int
|
||||||
|
used: int
|
||||||
|
|
||||||
|
@property
|
||||||
|
def avail(self) -> int:
|
||||||
|
return self.size - self.used
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse_line(input: str) -> tuple[Point, Filesystem]:
|
||||||
|
raw_fs, raw_size, raw_used, raw_avail, _ = input.split()
|
||||||
|
size = int(raw_size.removesuffix("T"))
|
||||||
|
used = int(raw_used.removesuffix("T"))
|
||||||
|
avail = int(raw_avail.removesuffix("T"))
|
||||||
|
assert size == (used + avail) # Sanity check
|
||||||
|
*_, x, y = raw_fs.split("-")
|
||||||
|
return Point(int(x[1:]), int(y[1:])), Filesystem(size, used)
|
||||||
|
|
||||||
|
def parse(input: str) -> dict[Point, Filesystem]:
|
||||||
|
return {node: fs for node, fs in map(parse_line, input.splitlines()[2:])}
|
||||||
|
|
||||||
|
def neighbours(p: Point) -> Iterable[Point]:
|
||||||
|
for dx, dy in (
|
||||||
|
(-1, 0),
|
||||||
|
(1, 0),
|
||||||
|
(0, -1),
|
||||||
|
(0, 1),
|
||||||
|
):
|
||||||
|
yield Point(p.x + dx, p.y + dy)
|
||||||
|
|
||||||
|
def dijkstra(start: Point, end: Point, points: set[Point]) -> int:
|
||||||
|
# Priority queue of (distance, point)
|
||||||
|
queue = [(0, start)]
|
||||||
|
seen: set[Point] = set()
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
dist, p = heapq.heappop(queue)
|
||||||
|
if p == end:
|
||||||
|
return dist
|
||||||
|
# We must have seen p with a smaller distance before
|
||||||
|
if p in seen:
|
||||||
|
continue
|
||||||
|
# First time encountering p, must be the smallest distance to it
|
||||||
|
seen.add(p)
|
||||||
|
# Add all neighbours to be visited
|
||||||
|
for n in neighbours(p):
|
||||||
|
if n not in points:
|
||||||
|
continue
|
||||||
|
heapq.heappush(queue, (dist + 1, n))
|
||||||
|
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
def dist(p: Point, other: Point) -> int:
|
||||||
|
return abs(p.x - other.x) + abs(p.y - other.y)
|
||||||
|
|
||||||
|
def has_angle(p: Point, other: Point) -> int:
|
||||||
|
return p.x != other.x and p.y != other.y
|
||||||
|
|
||||||
|
def data_migration(start: Point, end: Point) -> int:
|
||||||
|
# Moving the data once is a 5 step move, unless it is on an angle, where it is 3
|
||||||
|
# Assumes there's no wall between either points
|
||||||
|
return 5 * dist(start, end) - 2 * has_angle(start, end)
|
||||||
|
|
||||||
|
df = parse(input)
|
||||||
|
# The data moves from the goal to us, hence `start` and `end` are "reversed"
|
||||||
|
start = max(p for p in df.keys() if p.y == 0)
|
||||||
|
end = Point(0, 0)
|
||||||
|
# The "hole" must be used to migrate the data to us
|
||||||
|
hole = next(p for p, fs in df.items() if fs.used == 0)
|
||||||
|
# The "walls" are nodes which are too big to move, effectively blocking us
|
||||||
|
walls = {p for p, fs in df.items() if fs.used > df[hole].avail}
|
||||||
|
accessible = df.keys() - walls
|
||||||
|
|
||||||
|
return min(
|
||||||
|
dijkstra(hole, n, accessible) + 1 + data_migration(n, end)
|
||||||
|
for n in neighbours(start)
|
||||||
|
if n in accessible
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
877
2016/d22/ex2/input
Normal file
877
2016/d22/ex2/input
Normal file
|
|
@ -0,0 +1,877 @@
|
||||||
|
root@ebhq-gridcenter# df -h
|
||||||
|
Filesystem Size Used Avail Use%
|
||||||
|
/dev/grid/node-x0-y0 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x0-y1 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x0-y2 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x0-y3 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x0-y4 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x0-y5 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x0-y6 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x0-y7 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x0-y8 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x0-y9 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x0-y10 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x0-y11 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x0-y12 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x0-y13 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x0-y14 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x0-y15 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x0-y16 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x0-y17 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x0-y18 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x0-y19 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x0-y20 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x0-y21 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x0-y22 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x0-y23 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x0-y24 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x1-y0 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x1-y1 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x1-y2 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x1-y3 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x1-y4 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x1-y5 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x1-y6 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x1-y7 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x1-y8 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x1-y9 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x1-y10 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x1-y11 91T 66T 25T 72%
|
||||||
|
/dev/grid/node-x1-y12 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x1-y13 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x1-y14 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x1-y15 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x1-y16 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x1-y17 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x1-y18 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x1-y19 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x1-y20 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x1-y21 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x1-y22 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x1-y23 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x1-y24 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x2-y0 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x2-y1 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x2-y2 85T 64T 21T 75%
|
||||||
|
/dev/grid/node-x2-y3 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x2-y4 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x2-y5 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x2-y6 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x2-y7 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x2-y8 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x2-y9 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x2-y10 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x2-y11 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x2-y12 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x2-y13 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x2-y14 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x2-y15 91T 66T 25T 72%
|
||||||
|
/dev/grid/node-x2-y16 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x2-y17 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x2-y18 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x2-y19 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x2-y20 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x2-y21 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x2-y22 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x2-y23 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x2-y24 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x3-y0 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x3-y1 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x3-y2 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x3-y3 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x3-y4 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x3-y5 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x3-y6 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x3-y7 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x3-y8 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x3-y9 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x3-y10 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x3-y11 93T 67T 26T 72%
|
||||||
|
/dev/grid/node-x3-y12 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x3-y13 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x3-y14 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x3-y15 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x3-y16 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x3-y17 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x3-y18 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x3-y19 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x3-y20 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x3-y21 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x3-y22 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x3-y23 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x3-y24 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x4-y0 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x4-y1 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x4-y2 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x4-y3 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x4-y4 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x4-y5 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x4-y6 91T 66T 25T 72%
|
||||||
|
/dev/grid/node-x4-y7 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x4-y8 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x4-y9 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x4-y10 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x4-y11 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x4-y12 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x4-y13 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x4-y14 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x4-y15 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x4-y16 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x4-y17 85T 65T 20T 76%
|
||||||
|
/dev/grid/node-x4-y18 94T 72T 22T 76%
|
||||||
|
/dev/grid/node-x4-y19 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x4-y20 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x4-y21 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x4-y22 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x4-y23 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x4-y24 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x5-y0 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x5-y1 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x5-y2 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x5-y3 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x5-y4 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x5-y5 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x5-y6 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x5-y7 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x5-y8 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x5-y9 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x5-y10 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x5-y11 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x5-y12 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x5-y13 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x5-y14 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x5-y15 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x5-y16 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x5-y17 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x5-y18 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x5-y19 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x5-y20 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x5-y21 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x5-y22 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x5-y23 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x5-y24 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x6-y0 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x6-y1 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x6-y2 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x6-y3 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x6-y4 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x6-y5 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x6-y6 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x6-y7 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x6-y8 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x6-y9 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x6-y10 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x6-y11 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x6-y12 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x6-y13 93T 67T 26T 72%
|
||||||
|
/dev/grid/node-x6-y14 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x6-y15 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x6-y16 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x6-y17 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x6-y18 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x6-y19 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x6-y20 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x6-y21 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x6-y22 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x6-y23 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x6-y24 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x7-y0 87T 66T 21T 75%
|
||||||
|
/dev/grid/node-x7-y1 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x7-y2 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x7-y3 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x7-y4 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x7-y5 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x7-y6 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x7-y7 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x7-y8 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x7-y9 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x7-y10 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x7-y11 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x7-y12 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x7-y13 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x7-y14 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x7-y15 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x7-y16 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x7-y17 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x7-y18 87T 70T 17T 80%
|
||||||
|
/dev/grid/node-x7-y19 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x7-y20 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x7-y21 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x7-y22 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x7-y23 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x7-y24 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x8-y0 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x8-y1 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x8-y2 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x8-y3 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x8-y4 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x8-y5 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x8-y6 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x8-y7 87T 66T 21T 75%
|
||||||
|
/dev/grid/node-x8-y8 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x8-y9 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x8-y10 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x8-y11 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x8-y12 91T 66T 25T 72%
|
||||||
|
/dev/grid/node-x8-y13 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x8-y14 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x8-y15 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x8-y16 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x8-y17 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x8-y18 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x8-y19 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x8-y20 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x8-y21 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x8-y22 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x8-y23 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x8-y24 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x9-y0 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x9-y1 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x9-y2 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x9-y3 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x9-y4 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x9-y5 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x9-y6 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x9-y7 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x9-y8 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x9-y9 85T 65T 20T 76%
|
||||||
|
/dev/grid/node-x9-y10 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x9-y11 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x9-y12 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x9-y13 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x9-y14 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x9-y15 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x9-y16 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x9-y17 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x9-y18 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x9-y19 85T 64T 21T 75%
|
||||||
|
/dev/grid/node-x9-y20 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x9-y21 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x9-y22 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x9-y23 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x9-y24 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x10-y0 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x10-y1 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x10-y2 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x10-y3 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x10-y4 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x10-y5 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x10-y6 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x10-y7 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x10-y8 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x10-y9 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x10-y10 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x10-y11 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x10-y12 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x10-y13 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x10-y14 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x10-y15 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x10-y16 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x10-y17 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x10-y18 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x10-y19 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x10-y20 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x10-y21 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x10-y22 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x10-y23 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x10-y24 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x11-y0 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x11-y1 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x11-y2 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x11-y3 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x11-y4 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x11-y5 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x11-y6 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x11-y7 86T 72T 14T 83%
|
||||||
|
/dev/grid/node-x11-y8 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x11-y9 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x11-y10 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x11-y11 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x11-y12 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x11-y13 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x11-y14 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x11-y15 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x11-y16 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x11-y17 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x11-y18 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x11-y19 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x11-y20 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x11-y21 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x11-y22 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x11-y23 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x11-y24 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x12-y0 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x12-y1 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x12-y2 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x12-y3 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x12-y4 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x12-y5 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x12-y6 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x12-y7 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x12-y8 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x12-y9 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x12-y10 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x12-y11 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x12-y12 87T 70T 17T 80%
|
||||||
|
/dev/grid/node-x12-y13 86T 72T 14T 83%
|
||||||
|
/dev/grid/node-x12-y14 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x12-y15 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x12-y16 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x12-y17 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x12-y18 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x12-y19 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x12-y20 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x12-y21 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x12-y22 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x12-y23 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x12-y24 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x13-y0 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x13-y1 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x13-y2 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x13-y3 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x13-y4 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x13-y5 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x13-y6 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x13-y7 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x13-y8 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x13-y9 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x13-y10 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x13-y11 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x13-y12 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x13-y13 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x13-y14 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x13-y15 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x13-y16 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x13-y17 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x13-y18 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x13-y19 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x13-y20 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x13-y21 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x13-y22 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x13-y23 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x13-y24 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x14-y0 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x14-y1 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x14-y2 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x14-y3 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x14-y4 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x14-y5 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x14-y6 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x14-y7 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x14-y8 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x14-y9 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x14-y10 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x14-y11 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x14-y12 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x14-y13 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x14-y14 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x14-y15 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x14-y16 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x14-y17 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x14-y18 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x14-y19 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x14-y20 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x14-y21 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x14-y22 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x14-y23 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x14-y24 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x15-y0 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x15-y1 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x15-y2 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x15-y3 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x15-y4 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x15-y5 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x15-y6 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x15-y7 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x15-y8 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x15-y9 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x15-y10 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x15-y11 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x15-y12 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x15-y13 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x15-y14 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x15-y15 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x15-y16 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x15-y17 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x15-y18 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x15-y19 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x15-y20 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x15-y21 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x15-y22 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x15-y23 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x15-y24 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x16-y0 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x16-y1 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x16-y2 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x16-y3 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x16-y4 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x16-y5 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x16-y6 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x16-y7 88T 64T 24T 72%
|
||||||
|
/dev/grid/node-x16-y8 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x16-y9 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x16-y10 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x16-y11 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x16-y12 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x16-y13 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x16-y14 94T 72T 22T 76%
|
||||||
|
/dev/grid/node-x16-y15 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x16-y16 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x16-y17 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x16-y18 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x16-y19 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x16-y20 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x16-y21 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x16-y22 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x16-y23 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x16-y24 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x17-y0 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x17-y1 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x17-y2 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x17-y3 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x17-y4 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x17-y5 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x17-y6 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x17-y7 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x17-y8 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x17-y9 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x17-y10 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x17-y11 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x17-y12 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x17-y13 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x17-y14 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x17-y15 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x17-y16 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x17-y17 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x17-y18 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x17-y19 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x17-y20 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x17-y21 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x17-y22 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x17-y23 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x17-y24 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x18-y0 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x18-y1 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x18-y2 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x18-y3 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x18-y4 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x18-y5 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x18-y6 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x18-y7 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x18-y8 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x18-y9 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x18-y10 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x18-y11 90T 68T 22T 75%
|
||||||
|
/dev/grid/node-x18-y12 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x18-y13 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x18-y14 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x18-y15 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x18-y16 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x18-y17 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x18-y18 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x18-y19 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x18-y20 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x18-y21 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x18-y22 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x18-y23 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x18-y24 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x19-y0 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x19-y1 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x19-y2 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x19-y3 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x19-y4 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x19-y5 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x19-y6 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x19-y7 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x19-y8 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x19-y9 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x19-y10 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x19-y11 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x19-y12 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x19-y13 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x19-y14 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x19-y15 92T 73T 19T 79%
|
||||||
|
/dev/grid/node-x19-y16 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x19-y17 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x19-y18 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x19-y19 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x19-y20 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x19-y21 94T 67T 27T 71%
|
||||||
|
/dev/grid/node-x19-y22 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x19-y23 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x19-y24 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x20-y0 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x20-y1 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x20-y2 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x20-y3 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x20-y4 91T 64T 27T 70%
|
||||||
|
/dev/grid/node-x20-y5 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x20-y6 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x20-y7 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x20-y8 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x20-y9 91T 71T 20T 78%
|
||||||
|
/dev/grid/node-x20-y10 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x20-y11 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x20-y12 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x20-y13 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x20-y14 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x20-y15 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x20-y16 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x20-y17 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x20-y18 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x20-y19 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x20-y20 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x20-y21 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x20-y22 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x20-y23 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x20-y24 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x21-y0 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x21-y1 85T 65T 20T 76%
|
||||||
|
/dev/grid/node-x21-y2 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x21-y3 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x21-y4 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x21-y5 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x21-y6 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x21-y7 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x21-y8 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x21-y9 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x21-y10 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x21-y11 504T 496T 8T 98%
|
||||||
|
/dev/grid/node-x21-y12 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x21-y13 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x21-y14 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x21-y15 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x21-y16 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x21-y17 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x21-y18 87T 70T 17T 80%
|
||||||
|
/dev/grid/node-x21-y19 85T 64T 21T 75%
|
||||||
|
/dev/grid/node-x21-y20 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x21-y21 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x21-y22 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x21-y23 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x21-y24 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x22-y0 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x22-y1 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x22-y2 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x22-y3 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x22-y4 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x22-y5 87T 67T 20T 77%
|
||||||
|
/dev/grid/node-x22-y6 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x22-y7 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x22-y8 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x22-y9 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x22-y10 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x22-y11 508T 492T 16T 96%
|
||||||
|
/dev/grid/node-x22-y12 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x22-y13 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x22-y14 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x22-y15 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x22-y16 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x22-y17 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x22-y18 92T 65T 27T 70%
|
||||||
|
/dev/grid/node-x22-y19 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x22-y20 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x22-y21 91T 71T 20T 78%
|
||||||
|
/dev/grid/node-x22-y22 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x22-y23 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x22-y24 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x23-y0 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x23-y1 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x23-y2 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x23-y3 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x23-y4 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x23-y5 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x23-y6 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x23-y7 85T 64T 21T 75%
|
||||||
|
/dev/grid/node-x23-y8 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x23-y9 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x23-y10 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x23-y11 509T 491T 18T 96%
|
||||||
|
/dev/grid/node-x23-y12 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x23-y13 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x23-y14 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x23-y15 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x23-y16 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x23-y17 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x23-y18 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x23-y19 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x23-y20 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x23-y21 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x23-y22 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x23-y23 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x23-y24 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x24-y0 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x24-y1 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x24-y2 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x24-y3 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x24-y4 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x24-y5 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x24-y6 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x24-y7 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x24-y8 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x24-y9 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x24-y10 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x24-y11 503T 492T 11T 97%
|
||||||
|
/dev/grid/node-x24-y12 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x24-y13 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x24-y14 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x24-y15 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x24-y16 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x24-y17 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x24-y18 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x24-y19 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x24-y20 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x24-y21 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x24-y22 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x24-y23 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x24-y24 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x25-y0 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x25-y1 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x25-y2 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x25-y3 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x25-y4 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x25-y5 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x25-y6 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x25-y7 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x25-y8 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x25-y9 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x25-y10 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x25-y11 503T 491T 12T 97%
|
||||||
|
/dev/grid/node-x25-y12 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x25-y13 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x25-y14 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x25-y15 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x25-y16 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x25-y17 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x25-y18 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x25-y19 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x25-y20 93T 70T 23T 75%
|
||||||
|
/dev/grid/node-x25-y21 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x25-y22 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x25-y23 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x25-y24 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x26-y0 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x26-y1 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x26-y2 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x26-y3 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x26-y4 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x26-y5 93T 71T 22T 76%
|
||||||
|
/dev/grid/node-x26-y6 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x26-y7 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x26-y8 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x26-y9 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x26-y10 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x26-y11 508T 496T 12T 97%
|
||||||
|
/dev/grid/node-x26-y12 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x26-y13 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x26-y14 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x26-y15 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x26-y16 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x26-y17 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x26-y18 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x26-y19 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x26-y20 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x26-y21 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x26-y22 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x26-y23 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x26-y24 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x27-y0 94T 69T 25T 73%
|
||||||
|
/dev/grid/node-x27-y1 94T 73T 21T 77%
|
||||||
|
/dev/grid/node-x27-y2 91T 67T 24T 73%
|
||||||
|
/dev/grid/node-x27-y3 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x27-y4 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x27-y5 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x27-y6 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x27-y7 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x27-y8 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x27-y9 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x27-y10 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x27-y11 501T 494T 7T 98%
|
||||||
|
/dev/grid/node-x27-y12 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x27-y13 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x27-y14 90T 0T 90T 0%
|
||||||
|
/dev/grid/node-x27-y15 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x27-y16 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x27-y17 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x27-y18 89T 71T 18T 79%
|
||||||
|
/dev/grid/node-x27-y19 94T 72T 22T 76%
|
||||||
|
/dev/grid/node-x27-y20 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x27-y21 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x27-y22 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x27-y23 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x27-y24 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x28-y0 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x28-y1 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x28-y2 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x28-y3 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x28-y4 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x28-y5 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x28-y6 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x28-y7 88T 66T 22T 75%
|
||||||
|
/dev/grid/node-x28-y8 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x28-y9 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x28-y10 89T 69T 20T 77%
|
||||||
|
/dev/grid/node-x28-y11 505T 493T 12T 97%
|
||||||
|
/dev/grid/node-x28-y12 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x28-y13 92T 69T 23T 75%
|
||||||
|
/dev/grid/node-x28-y14 85T 65T 20T 76%
|
||||||
|
/dev/grid/node-x28-y15 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x28-y16 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x28-y17 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x28-y18 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x28-y19 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x28-y20 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x28-y21 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x28-y22 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x28-y23 93T 64T 29T 68%
|
||||||
|
/dev/grid/node-x28-y24 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x29-y0 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x29-y1 89T 67T 22T 75%
|
||||||
|
/dev/grid/node-x29-y2 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x29-y3 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x29-y4 88T 71T 17T 80%
|
||||||
|
/dev/grid/node-x29-y5 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x29-y6 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x29-y7 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x29-y8 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x29-y9 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x29-y10 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x29-y11 510T 497T 13T 97%
|
||||||
|
/dev/grid/node-x29-y12 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x29-y13 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x29-y14 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x29-y15 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x29-y16 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x29-y17 93T 69T 24T 74%
|
||||||
|
/dev/grid/node-x29-y18 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x29-y19 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x29-y20 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x29-y21 92T 71T 21T 77%
|
||||||
|
/dev/grid/node-x29-y22 94T 68T 26T 72%
|
||||||
|
/dev/grid/node-x29-y23 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x29-y24 91T 65T 26T 71%
|
||||||
|
/dev/grid/node-x30-y0 88T 70T 18T 79%
|
||||||
|
/dev/grid/node-x30-y1 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x30-y2 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x30-y3 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x30-y4 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x30-y5 90T 66T 24T 73%
|
||||||
|
/dev/grid/node-x30-y6 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x30-y7 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x30-y8 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x30-y9 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x30-y10 87T 66T 21T 75%
|
||||||
|
/dev/grid/node-x30-y11 501T 490T 11T 97%
|
||||||
|
/dev/grid/node-x30-y12 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x30-y13 91T 71T 20T 78%
|
||||||
|
/dev/grid/node-x30-y14 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x30-y15 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x30-y16 88T 72T 16T 81%
|
||||||
|
/dev/grid/node-x30-y17 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x30-y18 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x30-y19 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x30-y20 91T 71T 20T 78%
|
||||||
|
/dev/grid/node-x30-y21 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x30-y22 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x30-y23 91T 72T 19T 79%
|
||||||
|
/dev/grid/node-x30-y24 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x31-y0 93T 73T 20T 78%
|
||||||
|
/dev/grid/node-x31-y1 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x31-y2 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x31-y3 86T 67T 19T 77%
|
||||||
|
/dev/grid/node-x31-y4 89T 68T 21T 76%
|
||||||
|
/dev/grid/node-x31-y5 91T 70T 21T 76%
|
||||||
|
/dev/grid/node-x31-y6 91T 69T 22T 75%
|
||||||
|
/dev/grid/node-x31-y7 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x31-y8 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x31-y9 87T 65T 22T 74%
|
||||||
|
/dev/grid/node-x31-y10 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x31-y11 506T 494T 12T 97%
|
||||||
|
/dev/grid/node-x31-y12 89T 70T 19T 78%
|
||||||
|
/dev/grid/node-x31-y13 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x31-y14 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x31-y15 90T 72T 18T 80%
|
||||||
|
/dev/grid/node-x31-y16 87T 71T 16T 81%
|
||||||
|
/dev/grid/node-x31-y17 89T 65T 24T 73%
|
||||||
|
/dev/grid/node-x31-y18 86T 68T 18T 79%
|
||||||
|
/dev/grid/node-x31-y19 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x31-y20 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x31-y21 86T 72T 14T 83%
|
||||||
|
/dev/grid/node-x31-y22 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x31-y23 91T 68T 23T 74%
|
||||||
|
/dev/grid/node-x31-y24 87T 68T 19T 78%
|
||||||
|
/dev/grid/node-x32-y0 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x32-y1 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x32-y2 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x32-y3 92T 68T 24T 73%
|
||||||
|
/dev/grid/node-x32-y4 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x32-y5 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x32-y6 85T 72T 13T 84%
|
||||||
|
/dev/grid/node-x32-y7 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x32-y8 85T 69T 16T 81%
|
||||||
|
/dev/grid/node-x32-y9 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x32-y10 86T 64T 22T 74%
|
||||||
|
/dev/grid/node-x32-y11 508T 491T 17T 96%
|
||||||
|
/dev/grid/node-x32-y12 89T 66T 23T 74%
|
||||||
|
/dev/grid/node-x32-y13 89T 73T 16T 82%
|
||||||
|
/dev/grid/node-x32-y14 94T 70T 24T 74%
|
||||||
|
/dev/grid/node-x32-y15 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x32-y16 88T 73T 15T 82%
|
||||||
|
/dev/grid/node-x32-y17 87T 66T 21T 75%
|
||||||
|
/dev/grid/node-x32-y18 85T 73T 12T 85%
|
||||||
|
/dev/grid/node-x32-y19 94T 64T 30T 68%
|
||||||
|
/dev/grid/node-x32-y20 86T 73T 13T 84%
|
||||||
|
/dev/grid/node-x32-y21 93T 72T 21T 77%
|
||||||
|
/dev/grid/node-x32-y22 93T 67T 26T 72%
|
||||||
|
/dev/grid/node-x32-y23 94T 65T 29T 69%
|
||||||
|
/dev/grid/node-x32-y24 85T 71T 14T 83%
|
||||||
|
/dev/grid/node-x33-y0 88T 67T 21T 76%
|
||||||
|
/dev/grid/node-x33-y1 90T 69T 21T 76%
|
||||||
|
/dev/grid/node-x33-y2 85T 68T 17T 80%
|
||||||
|
/dev/grid/node-x33-y3 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x33-y4 93T 66T 27T 70%
|
||||||
|
/dev/grid/node-x33-y5 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x33-y6 85T 67T 18T 78%
|
||||||
|
/dev/grid/node-x33-y7 86T 69T 17T 80%
|
||||||
|
/dev/grid/node-x33-y8 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x33-y9 93T 68T 25T 73%
|
||||||
|
/dev/grid/node-x33-y10 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x33-y11 507T 491T 16T 96%
|
||||||
|
/dev/grid/node-x33-y12 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x33-y13 89T 72T 17T 80%
|
||||||
|
/dev/grid/node-x33-y14 94T 71T 23T 75%
|
||||||
|
/dev/grid/node-x33-y15 86T 66T 20T 76%
|
||||||
|
/dev/grid/node-x33-y16 86T 70T 16T 81%
|
||||||
|
/dev/grid/node-x33-y17 87T 69T 18T 79%
|
||||||
|
/dev/grid/node-x33-y18 89T 64T 25T 71%
|
||||||
|
/dev/grid/node-x33-y19 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x33-y20 86T 71T 15T 82%
|
||||||
|
/dev/grid/node-x33-y21 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x33-y22 86T 65T 21T 75%
|
||||||
|
/dev/grid/node-x33-y23 92T 70T 22T 76%
|
||||||
|
/dev/grid/node-x33-y24 92T 64T 28T 69%
|
||||||
|
/dev/grid/node-x34-y0 88T 69T 19T 78%
|
||||||
|
/dev/grid/node-x34-y1 93T 67T 26T 72%
|
||||||
|
/dev/grid/node-x34-y2 88T 65T 23T 73%
|
||||||
|
/dev/grid/node-x34-y3 90T 71T 19T 78%
|
||||||
|
/dev/grid/node-x34-y4 90T 67T 23T 74%
|
||||||
|
/dev/grid/node-x34-y5 85T 70T 15T 82%
|
||||||
|
/dev/grid/node-x34-y6 87T 72T 15T 82%
|
||||||
|
/dev/grid/node-x34-y7 92T 66T 26T 71%
|
||||||
|
/dev/grid/node-x34-y8 93T 65T 28T 69%
|
||||||
|
/dev/grid/node-x34-y9 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x34-y10 90T 64T 26T 71%
|
||||||
|
/dev/grid/node-x34-y11 504T 496T 8T 98%
|
||||||
|
/dev/grid/node-x34-y12 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x34-y13 92T 67T 25T 72%
|
||||||
|
/dev/grid/node-x34-y14 90T 70T 20T 77%
|
||||||
|
/dev/grid/node-x34-y15 88T 68T 20T 77%
|
||||||
|
/dev/grid/node-x34-y16 87T 73T 14T 83%
|
||||||
|
/dev/grid/node-x34-y17 90T 65T 25T 72%
|
||||||
|
/dev/grid/node-x34-y18 90T 73T 17T 81%
|
||||||
|
/dev/grid/node-x34-y19 91T 73T 18T 80%
|
||||||
|
/dev/grid/node-x34-y20 92T 72T 20T 78%
|
||||||
|
/dev/grid/node-x34-y21 85T 66T 19T 77%
|
||||||
|
/dev/grid/node-x34-y22 94T 66T 28T 70%
|
||||||
|
/dev/grid/node-x34-y23 87T 64T 23T 73%
|
||||||
|
/dev/grid/node-x34-y24 92T 71T 21T 77%
|
||||||
87
2016/d23/ex1/ex1.py
Executable file
87
2016/d23/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,87 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
CPY = "cpy"
|
||||||
|
INC = "inc"
|
||||||
|
DEC = "dec"
|
||||||
|
JNZ = "jnz"
|
||||||
|
TGL = "tgl"
|
||||||
|
|
||||||
|
|
||||||
|
class Instruction(NamedTuple):
|
||||||
|
op: Op
|
||||||
|
x: str
|
||||||
|
y: str | None = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Instruction":
|
||||||
|
op, *rest = input.split()
|
||||||
|
return cls(Op(op), *rest)
|
||||||
|
|
||||||
|
def toggle(self) -> "Instruction":
|
||||||
|
if self.y is None:
|
||||||
|
op = Op.DEC if self.op == Op.INC else Op.INC
|
||||||
|
else:
|
||||||
|
op = Op.CPY if self.op == Op.JNZ else Op.JNZ
|
||||||
|
return Instruction(op, self.x, self.y)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Instruction]:
|
||||||
|
return [Instruction.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def resolve(y: str | None, registers: dict[str, int]) -> int:
|
||||||
|
assert y is not None # Sanity check
|
||||||
|
try:
|
||||||
|
return int(y)
|
||||||
|
except ValueError:
|
||||||
|
return registers[y]
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
registers: dict[str, int] = collections.defaultdict(int)
|
||||||
|
|
||||||
|
ip = 0
|
||||||
|
registers["a"] = 7
|
||||||
|
while True:
|
||||||
|
if ip < 0 or ip >= len(instructions):
|
||||||
|
break
|
||||||
|
instr = instructions[ip]
|
||||||
|
ip += 1
|
||||||
|
match instr.op:
|
||||||
|
case Op.CPY:
|
||||||
|
assert instr.y is not None
|
||||||
|
if instr.y.isdigit():
|
||||||
|
continue
|
||||||
|
registers[instr.y] = resolve(instr.x, registers)
|
||||||
|
case Op.INC:
|
||||||
|
if instr.x.isdigit():
|
||||||
|
continue
|
||||||
|
registers[instr.x] += 1
|
||||||
|
case Op.DEC:
|
||||||
|
if instr.x.isdigit():
|
||||||
|
continue
|
||||||
|
registers[instr.x] -= 1
|
||||||
|
case Op.JNZ:
|
||||||
|
if resolve(instr.x, registers) != 0:
|
||||||
|
ip += resolve(instr.y, registers) - 1 # Account auto-increment
|
||||||
|
case Op.TGL:
|
||||||
|
target = ip + resolve(instr.x, registers) - 1 # Account auto-increment
|
||||||
|
if target < 0 or target >= len(instructions):
|
||||||
|
continue
|
||||||
|
instructions[target] = instructions[target].toggle()
|
||||||
|
return registers["a"]
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
26
2016/d23/ex1/input
Normal file
26
2016/d23/ex1/input
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
cpy a b
|
||||||
|
dec b
|
||||||
|
cpy a d
|
||||||
|
cpy 0 a
|
||||||
|
cpy b c
|
||||||
|
inc a
|
||||||
|
dec c
|
||||||
|
jnz c -2
|
||||||
|
dec d
|
||||||
|
jnz d -5
|
||||||
|
dec b
|
||||||
|
cpy b c
|
||||||
|
cpy c d
|
||||||
|
dec d
|
||||||
|
inc c
|
||||||
|
jnz d -2
|
||||||
|
tgl c
|
||||||
|
cpy -16 c
|
||||||
|
jnz 1 c
|
||||||
|
cpy 95 c
|
||||||
|
jnz 95 d
|
||||||
|
inc a
|
||||||
|
inc d
|
||||||
|
jnz d -2
|
||||||
|
inc c
|
||||||
|
jnz c -5
|
||||||
53
2016/d23/ex2/ex2.py
Executable file
53
2016/d23/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,53 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import math
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
CPY = "cpy"
|
||||||
|
INC = "inc"
|
||||||
|
DEC = "dec"
|
||||||
|
JNZ = "jnz"
|
||||||
|
TGL = "tgl"
|
||||||
|
|
||||||
|
|
||||||
|
class Instruction(NamedTuple):
|
||||||
|
op: Op
|
||||||
|
x: str
|
||||||
|
y: str | None = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Instruction":
|
||||||
|
op, *rest = input.split()
|
||||||
|
return cls(Op(op), *rest)
|
||||||
|
|
||||||
|
def toggle(self) -> "Instruction":
|
||||||
|
if self.y is None:
|
||||||
|
op = Op.DEC if self.op == Op.INC else Op.INC
|
||||||
|
else:
|
||||||
|
op = Op.CPY if self.op == Op.JNZ else Op.JNZ
|
||||||
|
return Instruction(op, self.x, self.y)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Instruction]:
|
||||||
|
return [Instruction.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
|
||||||
|
num_eggs = 12
|
||||||
|
c = int(instructions[19].x)
|
||||||
|
d = int(instructions[20].x)
|
||||||
|
return math.factorial(num_eggs) + c * d
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
26
2016/d23/ex2/input
Normal file
26
2016/d23/ex2/input
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
cpy a b
|
||||||
|
dec b
|
||||||
|
cpy a d
|
||||||
|
cpy 0 a
|
||||||
|
cpy b c
|
||||||
|
inc a
|
||||||
|
dec c
|
||||||
|
jnz c -2
|
||||||
|
dec d
|
||||||
|
jnz d -5
|
||||||
|
dec b
|
||||||
|
cpy b c
|
||||||
|
cpy c d
|
||||||
|
dec d
|
||||||
|
inc c
|
||||||
|
jnz d -2
|
||||||
|
tgl c
|
||||||
|
cpy -16 c
|
||||||
|
jnz 1 c
|
||||||
|
cpy 95 c
|
||||||
|
jnz 95 d
|
||||||
|
inc a
|
||||||
|
inc d
|
||||||
|
jnz d -2
|
||||||
|
inc c
|
||||||
|
jnz c -5
|
||||||
96
2016/d24/ex1/ex1.py
Executable file
96
2016/d24/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,96 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import heapq
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
from collections.abc import Iterator
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> tuple[set[Point], dict[int, Point]]:
|
||||||
|
spaces: set[Point] = set()
|
||||||
|
waypoints: dict[int, Point] = {}
|
||||||
|
for x, line in enumerate(input.splitlines()):
|
||||||
|
for y, c in enumerate(line):
|
||||||
|
if c == "#":
|
||||||
|
continue
|
||||||
|
p = Point(x, y)
|
||||||
|
spaces.add(p)
|
||||||
|
if c != ".":
|
||||||
|
waypoints[int(c)] = p
|
||||||
|
return spaces, waypoints
|
||||||
|
|
||||||
|
def neighbours(p: Point) -> Iterator[Point]:
|
||||||
|
for dx, dy in (
|
||||||
|
(-1, 0),
|
||||||
|
(1, 0),
|
||||||
|
(0, -1),
|
||||||
|
(0, 1),
|
||||||
|
):
|
||||||
|
yield Point(p.x + dx, p.y + dy)
|
||||||
|
|
||||||
|
def dijkstra(start: Point, end: Point, points: set[Point]) -> int:
|
||||||
|
# Priority queue of (distance, point)
|
||||||
|
queue = [(0, start)]
|
||||||
|
seen: set[Point] = set()
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
dist, p = heapq.heappop(queue)
|
||||||
|
if p == end:
|
||||||
|
return dist
|
||||||
|
# We must have seen p with a smaller distance before
|
||||||
|
if p in seen:
|
||||||
|
continue
|
||||||
|
# First time encountering p, must be the smallest distance to it
|
||||||
|
seen.add(p)
|
||||||
|
# Add all neighbours to be visited
|
||||||
|
for n in neighbours(p):
|
||||||
|
if n not in points:
|
||||||
|
continue
|
||||||
|
heapq.heappush(queue, (dist + 1, n))
|
||||||
|
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
def waypoint_distances(
|
||||||
|
points: set[Point], waypoints: dict[int, Point]
|
||||||
|
) -> dict[int, dict[int, int]]:
|
||||||
|
res: dict[int, dict[int, int]] = collections.defaultdict(dict)
|
||||||
|
for p1, p2 in itertools.combinations(waypoints.keys(), 2):
|
||||||
|
dist = dijkstra(waypoints[p1], waypoints[p2], points)
|
||||||
|
res[p1][p2] = dist
|
||||||
|
res[p2][p1] = dist
|
||||||
|
return res
|
||||||
|
|
||||||
|
def traveling_salesman(
|
||||||
|
start: int,
|
||||||
|
points: set[Point],
|
||||||
|
waypoints: dict[int, Point],
|
||||||
|
) -> int:
|
||||||
|
def list_travels() -> Iterator[Iterator[int]]:
|
||||||
|
for destinations in itertools.permutations(waypoints.keys() - {start}):
|
||||||
|
yield itertools.chain([start], destinations)
|
||||||
|
|
||||||
|
distances = waypoint_distances(points, waypoints)
|
||||||
|
return min(
|
||||||
|
sum(distances[s][e] for s, e in itertools.pairwise(travel_plan))
|
||||||
|
for travel_plan in list_travels()
|
||||||
|
)
|
||||||
|
|
||||||
|
points, waypoints = parse(input)
|
||||||
|
return traveling_salesman(0, points, waypoints)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
39
2016/d24/ex1/input
Normal file
39
2016/d24/ex1/input
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
###################################################################################################################################################################################
|
||||||
|
#.#.........#.#.....#.#.#.#.#.........#...#.......#.....#.#.....#...#.......#.#...#.#.....#...#.....#.................#.#...#.....#.....#.....#.............#.........#.#.....#0#.#
|
||||||
|
#.###.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.#.###.#.#.###.#.#.#.#.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#####.#####.#.#.#.#.#.#.#.#.###.#.#.#.#
|
||||||
|
#.......#.......#.#...#.....#...#.#...#...#.....#2#.#...#.#.....#...#...#.......#...#...#.....#.#.#.....#...#.#.....#.........#.#.#.....#.......#...#.....#.......#.....#...#...#.#
|
||||||
|
#.###.#.#.#.###.#####.#.#.#.###.#.###.#.#.###.#.#####.#.#####.#.#.#.#########.#.#.#######.###.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.###.#.#.###.#####.#.#.#####.#.###.#.#.#.#
|
||||||
|
#.....#...........#...#.......................#...........#.#...#.#.#.#.....#.#...#...#.#...#.#.........#...#.....#...#...#.....#.....#.....#...#.....#.#...#...........#.....#.#.#
|
||||||
|
#####.###.#########.###.#.#########.###.###.#.#####.#####.#.#.#####.#.#.#.###.#.#.#.#.#.###.#.###########.#.#.#.#.#.#####.#######.###.#.###.#.###.#####.#.#.#####.#.#.###.###.#.#.#
|
||||||
|
#...#.#1..#...........#.#.....#...#.#.....#...#...#...........#...#.......#...............#...#.......#.....#.....#.#...#.....#...#.#.#.......#.......#.............#...........#.#
|
||||||
|
#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#####.#####.###.#.#.#######.#####.###.#.###.#.#.###.#.#.###.#.#.#.#.#.#.###.#.#.###.#.#.#.#.#.#.#.#.#.###.#######.#.#######
|
||||||
|
#...#...#...#.....#...#...........#...#.#...#...#.#.#.#...#...#...#...#.#...#.#.......#...#...#.#.....#.#.....#.....#.....#.....#.#.#...#...#.#.....#.....#.....#.......#.#.#.....#
|
||||||
|
#.#.#.#.###.#.#####.#.#.#.#.#####.#.#.#.#.###.#.#.#.#.#####.#.#.#.#.#.#.###.#.#.#.#.#.#####.#.#.#.#.###.###.#.###.###.###.#.#.#.#.#.###.###.#.###.#.#.###.#.###.#.#.###.#.###.#.###
|
||||||
|
#...#...#...#...........#.........#.#.#.#.....#.#.#.#.#.........#.....#.#.......#.#.#...#.....#...#...#.......#.#.....#.#.....#.......#...#.#.#...#.#.#...#.#...#.#...#.#.#...#.#.#
|
||||||
|
#.###.###.#.#.#.#.#.###.#.#.#.#.#.#.#.#.###.#.#####.#.#.#.#.#####.#.#.#.#.#.###.#.#.###.###.###.#######.#.#####.###.#.#.#.###.#.#.###.#.#.#.#.#.#.#.###.#.###.#.#.#.#####.#.#.#.#.#
|
||||||
|
#...#.#...#.#.#.............#.......#.#...............#.#.#.....#...#.#...#.....#...#...................#.....#.#.#.....#.........#...#.#...#.......#...#...#...#.#.......#.....#.#
|
||||||
|
###.#.#.#.#.#.#######.#.#.#.#.#.###.#####.###.#.#.###.#.###.###.#.#.#.#.#.#.#########.###.#.#.###.#.#.#.#.#.#.#.#.#.###.###########.#.#.#####.#.#####.#.#.#.###.#.#.###.#.###.#.#.#
|
||||||
|
#...#.....#...#...#...#.#...#.....#.#.......#.....#...#...#.#.....#...#...#...#.......#.............#.....#...#.....#.......#.....#.#.#.......#.....#...#.....#...#.....#.#...#...#
|
||||||
|
#.#.#####.#########.#.#.#.#.###########.###.###.#.#.#.#.#.#.#####.#.###.#.#.###.#####.#.#.#####.###.#.#.###.#.#.###.#.###.#.#.#.###.#.#.#.#####.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.###
|
||||||
|
#.........#.#...........#.#.#...#.#.....#.....#...........#.#.....#.....#...#.#...#.#.......#...#.#.......#.....#...#...#...#.......#.#.......#.#.....#...#...#.#.#.#4........#...#
|
||||||
|
#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#############.#.#.#######.#.#.#.#.###.#.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.###.#.#.###.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.#.#
|
||||||
|
#3........#...#...#.#.#.#...#...#.....#...#.#...#...#.#.#.#...#.....#.#.#.#.............#.........#.#.....#.....#.#.............#.#.#.#...#...#...#.#.............#.#...#.....#...#
|
||||||
|
###.###.#.#.###.###.###.#.#####.#####.#####.#.#.#.#.#.#.###.#.#.#.#.#.#####.###.###.#.###.#.#.#.#.#.#.#.###.#.###.###########.###.#.#.#.#.#.#.#.#####.###.#.#.#.#.#.###.###.#.#.#.#
|
||||||
|
#...#.......#.#.#...............#.........#...#.....#.#...........#.#.........#.....#.........#...#...#.........#.......#.......#.........#.....#.#...#...#.#.#.....#.............#
|
||||||
|
#.#.###.#####.###.###.#.###.#.###.#.#.###.###.#.#####.#######.###.#.#.###.#####.#.#.#.#.#.#.###.#.#####.#.#.#######.#.#.###.###.#.#.###.#.###.#.#.###.#############.#.###.#.#####.#
|
||||||
|
#.#.#...#...#.#...#.#...#...#.....#.#.........#.......#.............#.#...#.........#.#.....#.....#.....#...#.....#...#...#.....#...#...#.........#...#.....#.........#...#.....#.#
|
||||||
|
#.#####.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.###.#.###.#.#.###.###.#.###.#.#.#.#.###.#.#####.###.#.###.#########.#.#.#####.#.#.#.#.#.###.###.###.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#
|
||||||
|
#.................#...#...#.#...........#.#.#.......#.......#...#.#...#...#.#...#.#.#.......#.#.#...#...........#.............#.#...#...#.......#...#.#.....#...#.#...#...#.......#
|
||||||
|
#.#.#.#.#.###.###.#.#.#####.#.#.#.#####.#.#.#.###.#.#######.###.#.#.###.#.#.#####.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.#####.###.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#####.#.#
|
||||||
|
#...#.#.#...#.....#.#.#.......#...#...#...#.......................#.#.....#.................#.....#.......#...#...........#...#...........#...#...#...#.....#.#.#...#.#.#...#...#.#
|
||||||
|
#.#.#.#.###.#.#######.#####.###.#.#.#.###.#.###.#.#.###.#.#.#.###.#####.#.#.#.#.#.###.#.#####.###.#######.#.#.#.###.###.#.###.#.#.###.###.#.#.###.###.#.###.###.###.#.#.###.#.#.#.#
|
||||||
|
#...#...#.#.#...#...#.#...#...#.#.....#.#...#.....#.....#.....#.#.....#.....#.#...#.#...#.........#.....#.#.....................#...#...#.#...#...#...#.#.....#.#...#.....#...#...#
|
||||||
|
#.#####.#.#####.###.#.#.#.#.#.#.#.#.###.#####.#.#.#.###.#.###.#.###.#.###.###.#.#.#.###.#.#.#.#.#.#.#.#.#.#.###.#.###.#.#######.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.....#.#.#7..#.#.......#...#.#.....#...#.........#...#.#...#.......#.....#...#.#...#.#...#.#.#.#.#.......#.....#...#...#.........#.....#...#.....#.....#.#.....#.............#..5#
|
||||||
|
#.###.#.#.###.#.###.#######.#.#####.###.#.#.###.#.#.#.#.###.###.#.#.#####.#.#.#.#.#.#.#.###.#.#.#.#.#.###.###.###.#.#####.###.#.###.#.#.#.#.#.#####.#.#.#.#.#####.#.#.#.#.###.#.#.#
|
||||||
|
#.......#.....#.....#.#.......#.#.#...#...#6#.#.......#...#.#.#.....#.#.#.....#.....#.....#.....#.#...#.........#...#...#.#.......#.#.#...#.#...#...#.....#.#.....#...#...#...#.#.#
|
||||||
|
###.#.###.#.#.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#####.#.#####.#.#.#.#.#.#.###.#.#####.#.#.#.#######.#.#.#####.#.#.#.#.#.#.#.###.###.###.#.#.#.#.#######.#.#.#.#.#.#.#.#.###.#.#.#.#.#
|
||||||
|
#...#.#...#.#.....#...#.....#...#.#.....#...#.#...#.#.......#...#.....#...#.......#.....#.#...#...#...#.#...#.....#.....#.........#.#.......#.#.......#.#.....#.....#.#...........#
|
||||||
|
#.#.#.###.#.###.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#######.###.#.#.#####.###.#.#.#.#.#.#.#.#.###.#.#.#####.###.###.###.#.#.#.#.#.#####.#.#####.#.#.#.###.#.###.#.#.#####.#.#.#######.#
|
||||||
|
#.#.#...#.......#.....#...#.#...#...................#...#...#...#...#.......#.#.....#...#...#.........#.....#...........#...#.#.#.#.#.#...#.........#.#.........#.#...#.....#.#...#
|
||||||
|
###################################################################################################################################################################################
|
||||||
96
2016/d24/ex2/ex2.py
Executable file
96
2016/d24/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,96 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import collections
|
||||||
|
import heapq
|
||||||
|
import itertools
|
||||||
|
import sys
|
||||||
|
from collections.abc import Iterator
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Point(NamedTuple):
|
||||||
|
x: int
|
||||||
|
y: int
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> tuple[set[Point], dict[int, Point]]:
|
||||||
|
spaces: set[Point] = set()
|
||||||
|
waypoints: dict[int, Point] = {}
|
||||||
|
for x, line in enumerate(input.splitlines()):
|
||||||
|
for y, c in enumerate(line):
|
||||||
|
if c == "#":
|
||||||
|
continue
|
||||||
|
p = Point(x, y)
|
||||||
|
spaces.add(p)
|
||||||
|
if c != ".":
|
||||||
|
waypoints[int(c)] = p
|
||||||
|
return spaces, waypoints
|
||||||
|
|
||||||
|
def neighbours(p: Point) -> Iterator[Point]:
|
||||||
|
for dx, dy in (
|
||||||
|
(-1, 0),
|
||||||
|
(1, 0),
|
||||||
|
(0, -1),
|
||||||
|
(0, 1),
|
||||||
|
):
|
||||||
|
yield Point(p.x + dx, p.y + dy)
|
||||||
|
|
||||||
|
def dijkstra(start: Point, end: Point, points: set[Point]) -> int:
|
||||||
|
# Priority queue of (distance, point)
|
||||||
|
queue = [(0, start)]
|
||||||
|
seen: set[Point] = set()
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
dist, p = heapq.heappop(queue)
|
||||||
|
if p == end:
|
||||||
|
return dist
|
||||||
|
# We must have seen p with a smaller distance before
|
||||||
|
if p in seen:
|
||||||
|
continue
|
||||||
|
# First time encountering p, must be the smallest distance to it
|
||||||
|
seen.add(p)
|
||||||
|
# Add all neighbours to be visited
|
||||||
|
for n in neighbours(p):
|
||||||
|
if n not in points:
|
||||||
|
continue
|
||||||
|
heapq.heappush(queue, (dist + 1, n))
|
||||||
|
|
||||||
|
assert False # Sanity check
|
||||||
|
|
||||||
|
def waypoint_distances(
|
||||||
|
points: set[Point], waypoints: dict[int, Point]
|
||||||
|
) -> dict[int, dict[int, int]]:
|
||||||
|
res: dict[int, dict[int, int]] = collections.defaultdict(dict)
|
||||||
|
for p1, p2 in itertools.combinations(waypoints.keys(), 2):
|
||||||
|
dist = dijkstra(waypoints[p1], waypoints[p2], points)
|
||||||
|
res[p1][p2] = dist
|
||||||
|
res[p2][p1] = dist
|
||||||
|
return res
|
||||||
|
|
||||||
|
def traveling_salesman(
|
||||||
|
start: int,
|
||||||
|
points: set[Point],
|
||||||
|
waypoints: dict[int, Point],
|
||||||
|
) -> int:
|
||||||
|
def list_travel_loops() -> Iterator[Iterator[int]]:
|
||||||
|
for destinations in itertools.permutations(waypoints.keys() - {start}):
|
||||||
|
yield itertools.chain([start], destinations, [start])
|
||||||
|
|
||||||
|
distances = waypoint_distances(points, waypoints)
|
||||||
|
return min(
|
||||||
|
sum(distances[s][e] for s, e in itertools.pairwise(travel_plan))
|
||||||
|
for travel_plan in list_travel_loops()
|
||||||
|
)
|
||||||
|
|
||||||
|
points, waypoints = parse(input)
|
||||||
|
return traveling_salesman(0, points, waypoints)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
39
2016/d24/ex2/input
Normal file
39
2016/d24/ex2/input
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
###################################################################################################################################################################################
|
||||||
|
#.#.........#.#.....#.#.#.#.#.........#...#.......#.....#.#.....#...#.......#.#...#.#.....#...#.....#.................#.#...#.....#.....#.....#.............#.........#.#.....#0#.#
|
||||||
|
#.###.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.#.###.#.#.###.#.#.#.#.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#####.#####.#.#.#.#.#.#.#.#.###.#.#.#.#
|
||||||
|
#.......#.......#.#...#.....#...#.#...#...#.....#2#.#...#.#.....#...#...#.......#...#...#.....#.#.#.....#...#.#.....#.........#.#.#.....#.......#...#.....#.......#.....#...#...#.#
|
||||||
|
#.###.#.#.#.###.#####.#.#.#.###.#.###.#.#.###.#.#####.#.#####.#.#.#.#########.#.#.#######.###.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.###.#.#.###.#####.#.#.#####.#.###.#.#.#.#
|
||||||
|
#.....#...........#...#.......................#...........#.#...#.#.#.#.....#.#...#...#.#...#.#.........#...#.....#...#...#.....#.....#.....#...#.....#.#...#...........#.....#.#.#
|
||||||
|
#####.###.#########.###.#.#########.###.###.#.#####.#####.#.#.#####.#.#.#.###.#.#.#.#.#.###.#.###########.#.#.#.#.#.#####.#######.###.#.###.#.###.#####.#.#.#####.#.#.###.###.#.#.#
|
||||||
|
#...#.#1..#...........#.#.....#...#.#.....#...#...#...........#...#.......#...............#...#.......#.....#.....#.#...#.....#...#.#.#.......#.......#.............#...........#.#
|
||||||
|
#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#####.#####.###.#.#.#######.#####.###.#.###.#.#.###.#.#.###.#.#.#.#.#.#.###.#.#.###.#.#.#.#.#.#.#.#.#.###.#######.#.#######
|
||||||
|
#...#...#...#.....#...#...........#...#.#...#...#.#.#.#...#...#...#...#.#...#.#.......#...#...#.#.....#.#.....#.....#.....#.....#.#.#...#...#.#.....#.....#.....#.......#.#.#.....#
|
||||||
|
#.#.#.#.###.#.#####.#.#.#.#.#####.#.#.#.#.###.#.#.#.#.#####.#.#.#.#.#.#.###.#.#.#.#.#.#####.#.#.#.#.###.###.#.###.###.###.#.#.#.#.#.###.###.#.###.#.#.###.#.###.#.#.###.#.###.#.###
|
||||||
|
#...#...#...#...........#.........#.#.#.#.....#.#.#.#.#.........#.....#.#.......#.#.#...#.....#...#...#.......#.#.....#.#.....#.......#...#.#.#...#.#.#...#.#...#.#...#.#.#...#.#.#
|
||||||
|
#.###.###.#.#.#.#.#.###.#.#.#.#.#.#.#.#.###.#.#####.#.#.#.#.#####.#.#.#.#.#.###.#.#.###.###.###.#######.#.#####.###.#.#.#.###.#.#.###.#.#.#.#.#.#.#.###.#.###.#.#.#.#####.#.#.#.#.#
|
||||||
|
#...#.#...#.#.#.............#.......#.#...............#.#.#.....#...#.#...#.....#...#...................#.....#.#.#.....#.........#...#.#...#.......#...#...#...#.#.......#.....#.#
|
||||||
|
###.#.#.#.#.#.#######.#.#.#.#.#.###.#####.###.#.#.###.#.###.###.#.#.#.#.#.#.#########.###.#.#.###.#.#.#.#.#.#.#.#.#.###.###########.#.#.#####.#.#####.#.#.#.###.#.#.###.#.###.#.#.#
|
||||||
|
#...#.....#...#...#...#.#...#.....#.#.......#.....#...#...#.#.....#...#...#...#.......#.............#.....#...#.....#.......#.....#.#.#.......#.....#...#.....#...#.....#.#...#...#
|
||||||
|
#.#.#####.#########.#.#.#.#.###########.###.###.#.#.#.#.#.#.#####.#.###.#.#.###.#####.#.#.#####.###.#.#.###.#.#.###.#.###.#.#.#.###.#.#.#.#####.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.###
|
||||||
|
#.........#.#...........#.#.#...#.#.....#.....#...........#.#.....#.....#...#.#...#.#.......#...#.#.......#.....#...#...#...#.......#.#.......#.#.....#...#...#.#.#.#4........#...#
|
||||||
|
#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#############.#.#.#######.#.#.#.#.###.#.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.###.#.#.###.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.#.#
|
||||||
|
#3........#...#...#.#.#.#...#...#.....#...#.#...#...#.#.#.#...#.....#.#.#.#.............#.........#.#.....#.....#.#.............#.#.#.#...#...#...#.#.............#.#...#.....#...#
|
||||||
|
###.###.#.#.###.###.###.#.#####.#####.#####.#.#.#.#.#.#.###.#.#.#.#.#.#####.###.###.#.###.#.#.#.#.#.#.#.###.#.###.###########.###.#.#.#.#.#.#.#.#####.###.#.#.#.#.#.###.###.#.#.#.#
|
||||||
|
#...#.......#.#.#...............#.........#...#.....#.#...........#.#.........#.....#.........#...#...#.........#.......#.......#.........#.....#.#...#...#.#.#.....#.............#
|
||||||
|
#.#.###.#####.###.###.#.###.#.###.#.#.###.###.#.#####.#######.###.#.#.###.#####.#.#.#.#.#.#.###.#.#####.#.#.#######.#.#.###.###.#.#.###.#.###.#.#.###.#############.#.###.#.#####.#
|
||||||
|
#.#.#...#...#.#...#.#...#...#.....#.#.........#.......#.............#.#...#.........#.#.....#.....#.....#...#.....#...#...#.....#...#...#.........#...#.....#.........#...#.....#.#
|
||||||
|
#.#####.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.###.#.###.#.#.###.###.#.###.#.#.#.#.###.#.#####.###.#.###.#########.#.#.#####.#.#.#.#.#.###.###.###.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.#
|
||||||
|
#.................#...#...#.#...........#.#.#.......#.......#...#.#...#...#.#...#.#.#.......#.#.#...#...........#.............#.#...#...#.......#...#.#.....#...#.#...#...#.......#
|
||||||
|
#.#.#.#.#.###.###.#.#.#####.#.#.#.#####.#.#.#.###.#.#######.###.#.#.###.#.#.#####.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#####.#####.###.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#####.#.#
|
||||||
|
#...#.#.#...#.....#.#.#.......#...#...#...#.......................#.#.....#.................#.....#.......#...#...........#...#...........#...#...#...#.....#.#.#...#.#.#...#...#.#
|
||||||
|
#.#.#.#.###.#.#######.#####.###.#.#.#.###.#.###.#.#.###.#.#.#.###.#####.#.#.#.#.#.###.#.#####.###.#######.#.#.#.###.###.#.###.#.#.###.###.#.#.###.###.#.###.###.###.#.#.###.#.#.#.#
|
||||||
|
#...#...#.#.#...#...#.#...#...#.#.....#.#...#.....#.....#.....#.#.....#.....#.#...#.#...#.........#.....#.#.....................#...#...#.#...#...#...#.#.....#.#...#.....#...#...#
|
||||||
|
#.#####.#.#####.###.#.#.#.#.#.#.#.#.###.#####.#.#.#.###.#.###.#.###.#.###.###.#.#.#.###.#.#.#.#.#.#.#.#.#.#.###.#.###.#.#######.#.#.#.#.#.#.#.#.#.#.#.#.#.#####.#.#.#.#.#.#.#.#.#.#
|
||||||
|
#.....#.#.#7..#.#.......#...#.#.....#...#.........#...#.#...#.......#.....#...#.#...#.#...#.#.#.#.#.......#.....#...#...#.........#.....#...#.....#.....#.#.....#.............#..5#
|
||||||
|
#.###.#.#.###.#.###.#######.#.#####.###.#.#.###.#.#.#.#.###.###.#.#.#####.#.#.#.#.#.#.#.###.#.#.#.#.#.###.###.###.#.#####.###.#.###.#.#.#.#.#.#####.#.#.#.#.#####.#.#.#.#.###.#.#.#
|
||||||
|
#.......#.....#.....#.#.......#.#.#...#...#6#.#.......#...#.#.#.....#.#.#.....#.....#.....#.....#.#...#.........#...#...#.#.......#.#.#...#.#...#...#.....#.#.....#...#...#...#.#.#
|
||||||
|
###.#.###.#.#.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#####.#.#####.#.#.#.#.#.#.###.#.#####.#.#.#.#######.#.#.#####.#.#.#.#.#.#.#.###.###.###.#.#.#.#.#######.#.#.#.#.#.#.#.#.###.#.#.#.#.#
|
||||||
|
#...#.#...#.#.....#...#.....#...#.#.....#...#.#...#.#.......#...#.....#...#.......#.....#.#...#...#...#.#...#.....#.....#.........#.#.......#.#.......#.#.....#.....#.#...........#
|
||||||
|
#.#.#.###.#.###.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#######.###.#.#.#####.###.#.#.#.#.#.#.#.#.###.#.#.#####.###.###.###.#.#.#.#.#.#####.#.#####.#.#.#.###.#.###.#.#.#####.#.#.#######.#
|
||||||
|
#.#.#...#.......#.....#...#.#...#...................#...#...#...#...#.......#.#.....#...#...#.........#.....#...........#...#.#.#.#.#.#...#.........#.#.........#.#...#.....#.#...#
|
||||||
|
###################################################################################################################################################################################
|
||||||
48
2016/d25/ex1/ex1.py
Executable file
48
2016/d25/ex1/ex1.py
Executable file
|
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import enum
|
||||||
|
import sys
|
||||||
|
from typing import NamedTuple
|
||||||
|
|
||||||
|
|
||||||
|
class Op(enum.StrEnum):
|
||||||
|
CPY = "cpy"
|
||||||
|
INC = "inc"
|
||||||
|
DEC = "dec"
|
||||||
|
JNZ = "jnz"
|
||||||
|
OUT = "out"
|
||||||
|
|
||||||
|
|
||||||
|
class Instruction(NamedTuple):
|
||||||
|
op: Op
|
||||||
|
x: str
|
||||||
|
y: str | None = None
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def from_str(cls, input: str) -> "Instruction":
|
||||||
|
op, *rest = input.split()
|
||||||
|
return cls(Op(op), *rest)
|
||||||
|
|
||||||
|
|
||||||
|
def solve(input: str) -> int:
|
||||||
|
def parse(input: str) -> list[Instruction]:
|
||||||
|
return [Instruction.from_str(line) for line in input.splitlines()]
|
||||||
|
|
||||||
|
def next_signal_int(n: int) -> int:
|
||||||
|
res = 0b10
|
||||||
|
while res < n:
|
||||||
|
res = (res << 2) | res
|
||||||
|
return res
|
||||||
|
|
||||||
|
instructions = parse(input)
|
||||||
|
bc = int(instructions[1].x) * int(instructions[2].x)
|
||||||
|
return next_signal_int(bc) - bc
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
input = sys.stdin.read()
|
||||||
|
print(solve(input))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
30
2016/d25/ex1/input
Normal file
30
2016/d25/ex1/input
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
cpy a d
|
||||||
|
cpy 15 c
|
||||||
|
cpy 170 b
|
||||||
|
inc d
|
||||||
|
dec b
|
||||||
|
jnz b -2
|
||||||
|
dec c
|
||||||
|
jnz c -5
|
||||||
|
cpy d a
|
||||||
|
jnz 0 0
|
||||||
|
cpy a b
|
||||||
|
cpy 0 a
|
||||||
|
cpy 2 c
|
||||||
|
jnz b 2
|
||||||
|
jnz 1 6
|
||||||
|
dec b
|
||||||
|
dec c
|
||||||
|
jnz c -4
|
||||||
|
inc a
|
||||||
|
jnz 1 -7
|
||||||
|
cpy 2 b
|
||||||
|
jnz c 2
|
||||||
|
jnz 1 4
|
||||||
|
dec b
|
||||||
|
dec c
|
||||||
|
jnz 1 -4
|
||||||
|
jnz 0 0
|
||||||
|
out b
|
||||||
|
jnz a -19
|
||||||
|
jnz 1 -21
|
||||||
9
2016/d25/ex2/ex2.py
Executable file
9
2016/d25/ex2/ex2.py
Executable file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
print("There is no part two...")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
62
2016/d25/ex2/input
Normal file
62
2016/d25/ex2/input
Normal file
|
|
@ -0,0 +1,62 @@
|
||||||
|
Begin in state A.
|
||||||
|
Perform a diagnostic checksum after 12683008 steps.
|
||||||
|
|
||||||
|
In state A:
|
||||||
|
If the current value is 0:
|
||||||
|
- Write the value 1.
|
||||||
|
- Move one slot to the right.
|
||||||
|
- Continue with state B.
|
||||||
|
If the current value is 1:
|
||||||
|
- Write the value 0.
|
||||||
|
- Move one slot to the left.
|
||||||
|
- Continue with state B.
|
||||||
|
|
||||||
|
In state B:
|
||||||
|
If the current value is 0:
|
||||||
|
- Write the value 1.
|
||||||
|
- Move one slot to the left.
|
||||||
|
- Continue with state C.
|
||||||
|
If the current value is 1:
|
||||||
|
- Write the value 0.
|
||||||
|
- Move one slot to the right.
|
||||||
|
- Continue with state E.
|
||||||
|
|
||||||
|
In state C:
|
||||||
|
If the current value is 0:
|
||||||
|
- Write the value 1.
|
||||||
|
- Move one slot to the right.
|
||||||
|
- Continue with state E.
|
||||||
|
If the current value is 1:
|
||||||
|
- Write the value 0.
|
||||||
|
- Move one slot to the left.
|
||||||
|
- Continue with state D.
|
||||||
|
|
||||||
|
In state D:
|
||||||
|
If the current value is 0:
|
||||||
|
- Write the value 1.
|
||||||
|
- Move one slot to the left.
|
||||||
|
- Continue with state A.
|
||||||
|
If the current value is 1:
|
||||||
|
- Write the value 1.
|
||||||
|
- Move one slot to the left.
|
||||||
|
- Continue with state A.
|
||||||
|
|
||||||
|
In state E:
|
||||||
|
If the current value is 0:
|
||||||
|
- Write the value 0.
|
||||||
|
- Move one slot to the right.
|
||||||
|
- Continue with state A.
|
||||||
|
If the current value is 1:
|
||||||
|
- Write the value 0.
|
||||||
|
- Move one slot to the right.
|
||||||
|
- Continue with state F.
|
||||||
|
|
||||||
|
In state F:
|
||||||
|
If the current value is 0:
|
||||||
|
- Write the value 1.
|
||||||
|
- Move one slot to the right.
|
||||||
|
- Continue with state E.
|
||||||
|
If the current value is 1:
|
||||||
|
- Write the value 1.
|
||||||
|
- Move one slot to the right.
|
||||||
|
- Continue with state A.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue