Compare commits
74
Commits
6a276c3c1b
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ec58edd08 | ||
|
|
1904239ca7 | ||
|
|
46d49dc3fe | ||
|
|
950f2860df | ||
|
|
d203c9a520 | ||
|
|
8b54ae782c | ||
|
|
9f1499a1d3 | ||
|
|
490696c63d | ||
|
|
a7c039197b | ||
|
|
94f4badcc4 | ||
|
|
4e57ad4072 | ||
|
|
f2f3e497d6 | ||
|
|
2a515a5323 | ||
|
|
5c0d7867a4 | ||
|
|
1df5532c24 | ||
|
|
8db68c9baf | ||
|
|
360be1a368 | ||
|
|
ae2acb87fa | ||
|
|
c7eae53378 | ||
|
|
b9a36a476a | ||
|
|
8270ee7aa8 | ||
|
|
894e83fe12 | ||
|
|
11546bff5f | ||
|
|
d1e69ba66e | ||
|
|
2887274ad9 | ||
|
|
6758130700 | ||
|
|
ff4bb0ae89 | ||
|
|
b69f867423 | ||
|
|
a652ec69da | ||
|
|
421616a282 | ||
|
|
f775ed645b | ||
|
|
705c9e9a7c | ||
|
|
8d97e7601c | ||
|
|
b89e9c05ef | ||
|
|
b90478cd03 | ||
|
|
383c6c0fca | ||
|
|
19a763b73f | ||
|
|
dcb1338aa3 | ||
|
|
724576d120 | ||
|
|
ceaebf895d | ||
|
|
ceb0f04a78 | ||
|
|
c5c9b584c0 | ||
|
|
80f29ae00e | ||
|
|
2418d2ff0d | ||
|
|
1ca2a95e1d | ||
|
|
61e3520ede | ||
|
|
98f47654f8 | ||
|
|
88acb381f1 | ||
|
|
1d60878428 | ||
|
|
63bad67c1b | ||
|
|
8fe7e77b52 | ||
|
|
06f695b34c | ||
|
|
fa8970b0de | ||
|
|
dfa2cf11a1 | ||
|
|
8562bc8385 | ||
|
|
887d961d29 | ||
|
|
31a75867fa | ||
|
|
b6eae27d9d | ||
|
|
fe5cd3666f | ||
|
|
250d978a38 | ||
|
|
c93c273ffd | ||
|
|
bf5d3c1656 | ||
|
|
1ee3a5a3c5 | ||
|
|
5e1c30637e | ||
|
|
239af2f93b | ||
|
|
7d6b43ba93 | ||
|
|
b7aabdedcb | ||
|
|
3d2a2f2c4d | ||
|
|
1fdb1ebc36 | ||
|
|
666c81118f | ||
|
|
45d735bac9 | ||
|
|
f31499ecda | ||
|
|
c61676cf02 | ||
|
|
0a24022629 |
No files matched your search
@@ -1,2 +1,3 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
_build/
|
_build/
|
||||||
|
_opam/
|
||||||
@@ -1,2 +1 @@
|
|||||||
profile = janestreet
|
profile = janestreet
|
||||||
version = 0.26.0
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
#install_printer Aoc.Vec2.pp;;
|
||||||
|
#install_printer Aoc.Grid.pp;;
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
## 2022 AOC problems in Ocaml
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ opam switch create . --deps-only -y
|
||||||
|
$ dune build
|
||||||
|
```
|
||||||
@@ -10,8 +10,21 @@ homepage: "https://github.com/username/reponame"
|
|||||||
doc: "https://url/to/documentation"
|
doc: "https://url/to/documentation"
|
||||||
bug-reports: "https://github.com/username/reponame/issues"
|
bug-reports: "https://github.com/username/reponame/issues"
|
||||||
depends: [
|
depends: [
|
||||||
|
"utop"
|
||||||
|
"ocaml-lsp-server"
|
||||||
|
"ocamlformat"
|
||||||
"ocaml"
|
"ocaml"
|
||||||
"dune" {>= "3.10"}
|
"dune" {>= "3.10"}
|
||||||
|
"re"
|
||||||
|
"containers"
|
||||||
|
"iter"
|
||||||
|
"dune-site"
|
||||||
|
"angstrom"
|
||||||
|
"ppx_deriving"
|
||||||
|
"ppx_deriving_hash"
|
||||||
|
"ppx_regexp"
|
||||||
|
"ppx_expect"
|
||||||
|
"ppx_inline_test"
|
||||||
"odoc" {with-doc}
|
"odoc" {with-doc}
|
||||||
]
|
]
|
||||||
build: [
|
build: [
|
||||||
|
|||||||
+22
-1
@@ -21,7 +21,28 @@
|
|||||||
(name aoc)
|
(name aoc)
|
||||||
(synopsis "A short synopsis")
|
(synopsis "A short synopsis")
|
||||||
(description "A longer description")
|
(description "A longer description")
|
||||||
(depends ocaml dune)
|
(depends
|
||||||
|
;; development env
|
||||||
|
utop
|
||||||
|
ocaml-lsp-server
|
||||||
|
ocamlformat
|
||||||
|
|
||||||
|
;; deps
|
||||||
|
ocaml
|
||||||
|
dune
|
||||||
|
re
|
||||||
|
containers
|
||||||
|
iter
|
||||||
|
dune-site
|
||||||
|
angstrom
|
||||||
|
|
||||||
|
;; ppx
|
||||||
|
ppx_deriving
|
||||||
|
ppx_deriving_hash
|
||||||
|
ppx_regexp
|
||||||
|
ppx_expect
|
||||||
|
ppx_inline_test
|
||||||
|
)
|
||||||
(sites (lib inputs))
|
(sites (lib inputs))
|
||||||
(tags
|
(tags
|
||||||
(topics "to describe" your project)))
|
(topics "to describe" your project)))
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
open Aoc
|
|
||||||
|
|
||||||
let () =
|
|
||||||
Day1.print ();
|
|
||||||
Day2.print ()
|
|
||||||
;;
|
|
||||||
+143
@@ -0,0 +1,143 @@
|
|||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx -5
|
||||||
|
addx 6
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -38
|
||||||
|
addx 41
|
||||||
|
addx -22
|
||||||
|
addx -14
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 17
|
||||||
|
addx -12
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -16
|
||||||
|
addx 17
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -30
|
||||||
|
noop
|
||||||
|
addx -6
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx -12
|
||||||
|
addx 17
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 10
|
||||||
|
addx -9
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -5
|
||||||
|
addx 6
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -37
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 17
|
||||||
|
addx -12
|
||||||
|
addx 30
|
||||||
|
addx -23
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -17
|
||||||
|
addx 22
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx -10
|
||||||
|
addx 11
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx -6
|
||||||
|
addx -29
|
||||||
|
addx 37
|
||||||
|
addx -30
|
||||||
|
addx 27
|
||||||
|
addx -2
|
||||||
|
addx -22
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -5
|
||||||
|
addx 6
|
||||||
|
addx 2
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -25
|
||||||
|
noop
|
||||||
|
addx -10
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 1
|
||||||
|
addx 4
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
Monkey 0:
|
||||||
|
Starting items: 97, 81, 57, 57, 91, 61
|
||||||
|
Operation: new = old * 7
|
||||||
|
Test: divisible by 11
|
||||||
|
If true: throw to monkey 5
|
||||||
|
If false: throw to monkey 6
|
||||||
|
|
||||||
|
Monkey 1:
|
||||||
|
Starting items: 88, 62, 68, 90
|
||||||
|
Operation: new = old * 17
|
||||||
|
Test: divisible by 19
|
||||||
|
If true: throw to monkey 4
|
||||||
|
If false: throw to monkey 2
|
||||||
|
|
||||||
|
Monkey 2:
|
||||||
|
Starting items: 74, 87
|
||||||
|
Operation: new = old + 2
|
||||||
|
Test: divisible by 5
|
||||||
|
If true: throw to monkey 7
|
||||||
|
If false: throw to monkey 4
|
||||||
|
|
||||||
|
Monkey 3:
|
||||||
|
Starting items: 53, 81, 60, 87, 90, 99, 75
|
||||||
|
Operation: new = old + 1
|
||||||
|
Test: divisible by 2
|
||||||
|
If true: throw to monkey 2
|
||||||
|
If false: throw to monkey 1
|
||||||
|
|
||||||
|
Monkey 4:
|
||||||
|
Starting items: 57
|
||||||
|
Operation: new = old + 6
|
||||||
|
Test: divisible by 13
|
||||||
|
If true: throw to monkey 7
|
||||||
|
If false: throw to monkey 0
|
||||||
|
|
||||||
|
Monkey 5:
|
||||||
|
Starting items: 54, 84, 91, 55, 59, 72, 75, 70
|
||||||
|
Operation: new = old * old
|
||||||
|
Test: divisible by 7
|
||||||
|
If true: throw to monkey 6
|
||||||
|
If false: throw to monkey 3
|
||||||
|
|
||||||
|
Monkey 6:
|
||||||
|
Starting items: 95, 79, 79, 68, 78
|
||||||
|
Operation: new = old + 3
|
||||||
|
Test: divisible by 3
|
||||||
|
If true: throw to monkey 1
|
||||||
|
If false: throw to monkey 3
|
||||||
|
|
||||||
|
Monkey 7:
|
||||||
|
Starting items: 61, 97, 67
|
||||||
|
Operation: new = old + 4
|
||||||
|
Test: divisible by 17
|
||||||
|
If true: throw to monkey 0
|
||||||
|
If false: throw to monkey 5
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
abcccccccccccccccccccccccccccccccccccccccccccccccccccaaaaacccccccccccccaaaaaaaccccccccccccccccaaaaaaccccccccccccccccccccccccccaaaaacccaaaccccccccccccccccccccccccccccccaaaaa
|
||||||
|
abcccccccccaaaccccccccccccaaaccccccccccccccccccccccccaaaaaacccccccccccccaaaaaaaaaaaccaaaaccccaaaaaaacccccccccccccccccccccccccccaaaaaacaaaaccccccccccccccccccccccccccccccaaaa
|
||||||
|
abcccccccccaaaaaacccccccccaaaacccccccccccccccccccccccaaaaaaccccccccccccaaaaaaaaaaaccaaaaacccaaaaaacccccccccaaacccccccccccccccaaaaaaaacaaaaccccccccccccccccacccccccccccccaaaa
|
||||||
|
abcccccccccaaaaaacccccccccaaaaccccaacccccccccccccccccaaaaaaccccccccccaaaaaaaaaaaaaacaaaaaaccaacaaaccaacccaaaaaaccccccccccccccaaaaaaaacaaaccccccccccaccccaaaccccccccccccaaaaa
|
||||||
|
abcccccccaaaaaaaccccccccccaaaacccaaaaccccccccccccaaccccaaacccccccaaacaaaaaaaaaccccccaaaaaacccccaaaccaacccaaaaaacccccccccccccccccaaccccccccccccccccaaacccaaaccccccccccccaaaca
|
||||||
|
abcccccccaaaaaaacccccccaaacccccccaaaacccccccaaccaaaccccccccccccaaaaacaaaaaaaaaccccccaaaaaccccccccaaaaaaaacaaaaaccaacaaccccccccccaaccccccccccccccccaaaaaaaaaccccccccccccccccc
|
||||||
|
abcccccccccaaaaaaccaaccaaacccccccaaaacccccccaaaaaaaccccccccccccaaaaaaccccaaaaaacccccccaaaccccccccaaaaaaaaaaaaacccaaaaacccccccaaaccccccccccccccccccaaaaaaaackcccccccccccccccc
|
||||||
|
abcccccccccaaaaaaccaaaaaaaccccccccccccccccccaaaaaacccccccccccccaaaaaaccccaaaaaaccccccccccccccccccccaaaaccaaaaaccccaaaaaccccccaaaaaccccaaaaaccccccccaaaajjkkkkkccccccaacccccc
|
||||||
|
abcccccccccaaccccccaaaaaaccccccccccccccccccccaaaaaaaaccccccccccaaaaacccaaaacaaccccccccccccccccccccaaaaaccccccccccaaaaaacccccaaaaaaccccaaaaaccciijjjjjjjjjkkkkkkccaaaaaaccccc
|
||||||
|
abcaaaccccccccccccccaaaaaaaaccccccccccccccccaaaaaaaaacccccccccccaaaacccaaaccaaccccccccccccccccccccaacaaacccccccccaaaacccccccaaaaaacccaaaaaaciiiijjjjjjjjjoopkkkkcaaaaacccccc
|
||||||
|
abaaaacccccccccccccaaaaaaaaaccccccccccccccccaaaaaaaacccccccccccccccccccaaaaaaaccccaccaccccccccccccacccaacccccccccccaaccccccccaaaaacccaaaaaaiiiiiijjjjjjoooppppkkcaaaaaaacccc
|
||||||
|
abaaaaaccccccccccccaaaaaaaaccccccccccccccccaaaaaaaccccccccccccccccccccccaaaaaaccccaaaacccccccccccccccccccccccccccccccccccccccaaaaccccaaaaaiiiinnnoooooooooppppkkkaaaaaaacccc
|
||||||
|
abaaaaacccccccccccaaaaaaaccccccccccccccccccccccaaacccccccccccccccccccaaaaaaaacccccaaaaccccccccccccaaccaacccccaccccacccccccccccccccccccaaaciiinnnnoooooooouupppkkkaaaaaaacccc
|
||||||
|
abaaaaccccccccccccccccaaaccccccccccccccccccccccaaacccccccaaccccccccccaaaaaaaaacccaaaaaacccccccccccaaaaaaccccaaaaaaaacccccccccccccaaccccccciiinnnntttooouuuuupppiiacaaacccccc
|
||||||
|
abaaaacccccccccccccccccaaccccccccccccccccccccccccccccccaaaacacccccccccaaaaaaaacccaaaaaacccccccccccaaaaaccccccaaaaaacccccccccccaaaaaacccccciinnnttttuuuuuuuuuuppiiccaaacccccc
|
||||||
|
abcccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaacccccccccccaaaaaaaccccaacccccaaccccccaaaaaacccccaaaaaacccccccccccaaaaaccccccciinnntttttuuuuxyuuuppiiicccccccccc
|
||||||
|
abccccccccccccccccccccccccccccccccccccaaacccccccaaccccccaaaaccccccccccccaaccccccccccccccccaacaaacaaaaaaaacccaaaaaaaaccccccccccaaaaaaaccccchinnnttxxxxuuxyyyuuppiiiiccccccccc
|
||||||
|
abccccccccccccccccccccccccccccccccccccaaaaaaccccaaacccccaaaaccccccccccccaaccccccccccccccccaaaaaccaaaaaaaaccaaaaaaaaaaccccccccaaaaaaaaccccchhhnnttxxxxxxxyyuvppppiiiccccccccc
|
||||||
|
abccccccccccccccccccccccccccccccccccaaaaaaaaaaccaaaaaaacacaacccccccccccccccccaaaccccccccaaaaaaccccccaacccccaaaaaaaaaaccccccccaaaaaaaaccccchhhnntttxxxxxxyyvvvppqqiiicccccccc
|
||||||
|
abccccccccccccccccccccccccccccaacaccaaaaaaaaaaaaaaaaaaacccccccccccccccccccccaaaaaaccccccaaaaaaacccccaacccccaccaaaaacacccccccccacaaaccccccchhhnnnttxxxxxyyyvvvvqqqqiiiccccccc
|
||||||
|
SbccccccccccccccccccccccccccccaaaaccaaaaaaacaaaaaaaaaaccccccccccccccccccccccaaaaaaccccccccaaaaaaccccccccccccccaaaaccccccccccccccaaacccccchhhmmmtttxxxEzzyyyyvvvqqqqiiccccccc
|
||||||
|
abcccccccccccccccccccccccccccaaaaaccccaaaaaccaaaaaaaaacccccccccccccccaaaaaccaaaaaaccccccccaaccaacccccccccccccccaacccccccaaaaccccccccccccchhhmmmtttxxxyyyyyyyyvvvqqqjjjcccccc
|
||||||
|
abcccaaacccccccccccccccccccccaaaaaacccaacaaaaaaaaaaaaacccccccccccccccaaaaacccaaaaaccccccccaacccccccccccccccccccccccccccaaaaacccccccccccchhhmmmttsxxyyyyyyyyvvvvvqqqjjjcccccc
|
||||||
|
abcccaaaaaacccaacaaccccccccccacaaaacccaacccaaaaaaaaaaaacccccccccccccaaaaaacccaacaaccccccccccccccccccccccccccccccccaacccaaaaaaccccccccccchhhmmmssxxwwwwyyywvvvvvqqqjjjjcccccc
|
||||||
|
abccaaaaaaacccaaaaaccccccccccccaaccccccccccaaaaaaaccaaccccccccccccccaaaaaacccccccccccccccccccccccccccccccccccaaccaaacccaaaaaacccccccaaachhhmmssswwwwwwyyywvvqqqqqqjjjccccccc
|
||||||
|
abcaaaaaaacccccaaaaacccccccccccccccccccccccccccaaaccccccccccccccccccaaaaaacccccccccccaaccccaaccccccccccccccccaaacaaacccaaaaaacccccccaaacgggmmsssswwwswwyywwrrqqqjjjjcccccccc
|
||||||
|
abcaaaaaaaccccaaaaaacccccccccccccccccccccccaaccaaaccccccccccccccccccccaaccccccccccccaaccccaaaacccccccccccccccaaaaaaccccccaacccccccaacaaagggmmmssssssswwwwwwrrqjjjjjddccccccc
|
||||||
|
abcccaaaaaacccaaaacccccccccccccccccccccccccaaacaaccccccccccccccccccccccccccccccccaaaaacaacaaaaccccccccccccccccaaaaaaaaccccccccccccaaaaaagggmmmmssssssswwwwrrrkjjjjddddcccccc
|
||||||
|
abcccaaaaaacccccaaccccccccccccccccccccccccccaaaaaccccccccccccccccccccccccccccccccaaaaaaaacaaaacaaccccccaaccaaaaaaaaaaacccccccccccccaaaaaggggmmmmllllsrrwwwrrkkkjdddddaaacccc
|
||||||
|
abcccaaaccccccccccccaacccccccccccccccccccccaaaaaaccccccccccccccccccccccccccccccccccaaaaacccccccaaaaaaccaaaaaaaaaaaaaacccccccccccccccaaaaaggggmmllllllrrrrrrrkkkdddddaaaccccc
|
||||||
|
abccccaaaaaaccccccccaacaaaccccccccacccaaccaaaaaaaaccccccccccaaaccccccaacccccccccccaaaaaccccccccaaaaacccaaaaaaaaaaaaccccccccccccccccaaacaacggggggflllllrrrrrrkkddddaaaaaccccc
|
||||||
|
abccccaaaaacccccccccaaaaacccccccccaaaaaaccaaaaaaaaccccccccccaaacacccaaaaccccccccccaacaaacccccaaaaaaccccaaaaaaaccaaacccccccccccccccccaacccccggggffffllllrrrrkkkdddaaaaaaacccc
|
||||||
|
abccaaaaaaacccccccaaaaaaccccccccccaaaaaccccccaacccccaaccccaacaaaaaccaaaacccccccaaccccaaccccccaaaaaaaccaaaaaaaaccaaaccccccccccccccccccaaaccccccgffffflllkkkkkkeedaaaaaaaacccc
|
||||||
|
abccaaaaaaacccccccaaaaaaacccccccccaaaaaacccccaacccccaaacccaaaaaaaaccaaaacccaaaaacccccccccccccccaaaaaacaaaaaaaacccccccccccccccccccccccaaaacaacccccffffllkkkkkeeedccaaaaaacccc
|
||||||
|
abccccaaaaaaccccccccaaaaaacccccccaaaaaaaacccccaaccccaaaaaaaaaaaaccccccccccaaaaaaaacccccccccccccaaccaaccccaaaccccccaacccccccccccccccccaaaaaaaccccccfffffkkkkeeeecccaacccccccc
|
||||||
|
abccccaaccaaccccccccaaccaacccccccaaaaaaaacccccaaccaaaaaaaaccaaaaacccccccccaaaaaaaaccccccccccaacaaccccccccaaccccaacaaaccccaacccccccccccaaaaaaccccccaafffeeeeeeecccccccccccccc
|
||||||
|
abccccaaccccccccccccaaccccccccccccccaacccccaaaaaaaaaaaaaaacaaacaaaaaaacaccaaaaaaacccccccaaacaacccccccccccccccccaaaaaccccaaaacccccccaaaaaaaaccccccaaaaffeeeeeeeccccccccccccca
|
||||||
|
abacccccccccccccaaacccccccccccccccccaacccccaaaaaaaaaaaaaacccaaccaaaaaaaaaaaaaccaaacccccccaaaaaccccccccccccccccccaaaaaaccaaaacccccccaaaaaaaaaccccccaaacceeeeeccccccccccccccaa
|
||||||
|
abaaccccccccccaaaaaacccccccccccccccccccccccccaaaacccaaaaaaccccccaaaaaaaaaaaaaaaaaaaccccccaaaaaaacccaaaccccccccaaaaaaaaccaaaaccccccccaaaaaaaaccccccccccccaaacccccccccccaaacaa
|
||||||
|
abaaccccccccccaaaaaacccccccccccccccccccccccccaaaaacaaaaaaaccccccaaaaaaaaaaaaaaaaaaccccccaaaaaaaaccccaaaaccccccaaaaacaaccccccccccccccccaaaaaaacccccccccccacacccccccccccaaaaaa
|
||||||
|
abacccccccccccaaaaaaccccccccccccccccccccccccaaaaaacaaaccaaccccccaaaaaaccaaaaaaaaccccccccaaaaaaaaccaaaaaacccccccccaaaccccccccccccccccccaacccccccccccccccccccccccccccccccaaaaa
|
||||||
+449
@@ -0,0 +1,449 @@
|
|||||||
|
[[9,[8,[7]],4,7,[[4,9,3,2],6,5,[1,10,2,4,5],[1,3,2,6,1]]],[4,[6],3],[4,[7,0,3,8,8],[7,[10],[10,10,10,7]]]]
|
||||||
|
[[],[[6,4,[5],4,[0,5,5]],3,[5,[],9]],[[[5,1,6,2],[6,4,7],[4,7,4,2]],[10,[],[6,9,4],[6,2],9]],[[[10,5,9],10,0,[4,1,4,10,1],1],[7,7,[10,8],6],2]]
|
||||||
|
|
||||||
|
[[[8,2],2,[[10],[],6,10,[10,10,3,10,3]]],[],[]]
|
||||||
|
[[[[7,3,5],10,[4,1,0,8,7],9],10,[]]]
|
||||||
|
|
||||||
|
[[6,2,[2,[10,10,0],[2]],7]]
|
||||||
|
[[7,9],[5,[8,[0,5,5,10,4],6,8,6],3,[4],2],[4]]
|
||||||
|
|
||||||
|
[[[5],[6,[5,3,0],[6,2,5,2,6],1,6],[[]],[3,[1,1,0],[],1,[9,4,3,5,7]]],[[1,9,[2,2,6],[8,9],2],1,[[],0,8],[[],9],3]]
|
||||||
|
[[],[[10,9],[],[[6],9,8,[3]],[0,5,[5],6],2],[[[5,2,5,3,5],4],9,6],[8]]
|
||||||
|
|
||||||
|
[[[[9,10,8,4],2],[[10]]],[1,[[],9,[7,2,2,1,0],5]],[[[10],[],[5]],10,[],9],[[],[2,[1],[4],7,[6,1,5,0,1]]]]
|
||||||
|
[[[[6,9],[8,2,2],[5,1,6],[0,1]],[[2,5,1,3],9,[]],[[10,3,9],10,4]],[[[5,2,0],[7,3],9],[[5,3,2,6]],4]]
|
||||||
|
|
||||||
|
[[[1,0,9,[10]],[],[8,2,[0,2],6,[]]]]
|
||||||
|
[[4,3],[2]]
|
||||||
|
|
||||||
|
[[7]]
|
||||||
|
[[7,[[4,0,9,9]],3,[10,0,6,[5,2,0,1,7]],7],[5,[3,[2,8,7],[9],[2,3,5,0,10]],10,[[3,0,8],6,[5,5,7],[2,10]]],[3,4]]
|
||||||
|
|
||||||
|
[[[[0,9,5,2],[6,0,4,10]],[10,7]],[[6]],[7],[[[1,10,8,0,6],7,[3],0],3],[[[1,5,5],[6,6,9],[],[4]],1,9]]
|
||||||
|
[[[[2,3],[7],10,[2,1,3]],10,[6,9,[0,8]],[[6,6,5],[10,6]],[[],[],7]]]
|
||||||
|
|
||||||
|
[[[6],7,[10,[2],3],[[2,3]],[[1,1,7],[0,6,6,2],[7],[]]],[4],[2],[[6,2,10,3,6],[[5,7,10,3,6],8,[1],[]],7,5,[]],[[]]]
|
||||||
|
[[[],[7,5,8],0,3,[]],[2,8],[7],[8,0,[[0],3,[2]]],[1]]
|
||||||
|
|
||||||
|
[[[],5,[0]],[7],[[2,7,[7]],[[8,3],[8,9,8],6,[]],[1,3,[0,4,10],[6,1,9]],8],[[3,0]]]
|
||||||
|
[[5,[],10]]
|
||||||
|
|
||||||
|
[[8,[[0],5,[],3],[0,8]]]
|
||||||
|
[[],[3,5],[[[8,9,5],1,[3,9]],[[0,0],9,2],[0,1,8]],[0,3,[[3]],[7,[3,5,10],[1,9,10],[9,5],[2,4,3,9,7]]],[[8,3,6],6,[7,5,8],[[],4,1]]]
|
||||||
|
|
||||||
|
[[6],[]]
|
||||||
|
[[],[[[3,5,9],[0,7,5],[3,8,1,9,6]],[1,[3,3,10],0],[5,8,3,0,3],3,8],[[[1],[9,9,3,3],[7],[7,10,1,6]],4,10,[[7,7,2,0,3]],[10,9]],[9]]
|
||||||
|
|
||||||
|
[[3,2,4]]
|
||||||
|
[[[[2],4,[9,4,6,0]],[7,[]],[[0,5,9],[7],7,3],[[8,0,0,4,5]],[9,[3,5,4,10],[7,7,4]]],[[9,[],[8,5,6,4,9]],1,10,4,7]]
|
||||||
|
|
||||||
|
[[],[[],[8]],[1,[[8,10,0,2],1,4,[1,10,9]],3],[[[0,4,5,6,6]],5,[[9,0,5],[3,10],8],3],[[9],4,[[3,6],6],[8,[5],10,[7,0]],7]]
|
||||||
|
[[1]]
|
||||||
|
|
||||||
|
[[[[5,3,8,2],1,[10]],9],[[[9,3,0,7],8,[10,1,6,9],[7,6,3],[6,7,5]],[6,1,[1,6,10,8],7,[]]]]
|
||||||
|
[[8],[[7,[5,6],0],[4,[],[5,2,10,8]],[10]],[[],6,[],[10,5,3],[3,4]],[[[7,4,7,8,0]],9]]
|
||||||
|
|
||||||
|
[[7,[7,7],4,1,4],[10,[10,[2,4,9],0,[5,10,7],1],10,[9,2,[0,6,3,9,10],8,[7,9,7,10,3]],[3,[0,2]]],[9,3]]
|
||||||
|
[[3,[0,[5,0,8,1]],[]],[],[[3,[2,4,4,0,0],2],[4,[9,1,0]],1],[],[]]
|
||||||
|
|
||||||
|
[[[[5,10,10,8]],[[5,7,10,10],[],[2,4,10,9],1,[]],9,8,[10,[5],[7,6,8,2],10,[2,9]]],[8,3,[[],3,[4,3,0],1,2],[6,[2,8],[2],0,0],5],[2,[[6,0,0,4,9],[7,10],1,[]],[[8],10],[[1,10]]],[6,10,[[3,6,7,9],5],4]]
|
||||||
|
[[[]],[[[10,5,9],2],4,[0,[8],[0,8,9,2,6]],[8,0,[4,4,10],7]],[[6,[]],10,[[],[5,10]],[6,9],[3,10,[2,5,1,7,7],[2,6,10]]],[[],[[],5],[[5],[7],[8,2,2,8]],[2,[4,0],8]],[[[10],8,[10]],[],[]]]
|
||||||
|
|
||||||
|
[[[[6,6,1],[3,10,5]],[[3,9,6,0],2,[10,1,8,8]],[],[[6,9],5,5,[],4]],[[7],3],[[[],[8,4,2,0,8]],10,2,7],[8],[10,7,[[2,6,0,0,8],[3,10,10],[],9,[7,9,3]],6]]
|
||||||
|
[[6,8,[[9,0,8,7,5],0,3],[],0],[8,[6,9],8,[[0],7,[10,6],6,[7]],8]]
|
||||||
|
|
||||||
|
[[[[9],[6,6],0,8,[7,2]],[7,[],[9,6,2],9,[]],[[],7,7,[6,6]]],[1,3,1],[1,[[8,0,10,1,9]],9],[10,5]]
|
||||||
|
[[[[4,6,8,9],8,[3,3,6],[10]],[[3,6,7,5],[],[4,9]],[6,0,8],[],[5,[2]]],[[[5,1,6,2,8],2],3,[9,9,[],0,1],5,[10,[9,5,2],5]],[]]
|
||||||
|
|
||||||
|
[[[]],[]]
|
||||||
|
[[8,[5,[6,3,2],[10,5,4],[5,1],[5,10,5,9,7]],4,[8,2,0,6],4],[[[0,9,5,7],9],6,[[0,8,10,8],9,[9,0,3,7,1],[6,8,2,5,10],[]],7,[1,[],4,[0],[2]]],[1],[[7,[],6,2,1]],[2,3]]
|
||||||
|
|
||||||
|
[[5],[3,[1],[[6]],[[2],[],3,[6,1,8,6,1],[4,6,4,7]],[3]]]
|
||||||
|
[[[[6,5,1],9],[],7,7],[0,4]]
|
||||||
|
|
||||||
|
[[[],5,4,7,[[9,5,9],[]]]]
|
||||||
|
[[10,[1,[2,3],9,[3]]],[[[5,7,9,10,8],[]],0]]
|
||||||
|
|
||||||
|
[[6,8,[0,1,10]],[[4,7],[[7,0,0,3],6,2]],[[[10],[6,5,3,10,0],[0,2,4],[8,10],[7]],1],[2,[2]]]
|
||||||
|
[[],[5,8,[[],[6,3,2,3],9,3,[]],[0,[4,1,5],4],[[0,6,4],[],[3,6,10,9],3,[0,0]]],[[6,3],6,2,10,8],[5,[[0,9,4,6,1],[6,9,4]],3,[],0]]
|
||||||
|
|
||||||
|
[[4,8],[],[],[7,6,4]]
|
||||||
|
[[],[[5],[[8],[10],7,[9,10]],9],[3],[[9],[[3,0,5]]],[10,[[6,0,3],[2,4,3,0],4,10,10]]]
|
||||||
|
|
||||||
|
[[4,10,[[8],[6,4,8,8,10],1,[10,2],[7,8,9,0]],1],[6,4,3],[7,8,4],[[9,[10,4,8,7,2]]],[3,5]]
|
||||||
|
[[],[[[0,0,5,10],9,10],[[6,7,5]],[[3,6,7,2,2],[9],[7,5],9],[[0,0,10,9,8],5,[3,2]],[]]]
|
||||||
|
|
||||||
|
[[[],[[],8,0]],[[[],[],[]],9],[[7],3,10,4,[3,[4,7,0,2]]],[[[0,9,2,1],[2]]],[[[1,7],6,8,[2,5]],8,7]]
|
||||||
|
[[],[1],[6,[],1,[4,[],[10]],[[10,9,1],[]]],[[[2,1,5,10],[9,9,5,7,9],[9,1]],[[2],[5,9]],[[8],[2,8,2,4,5],4,[3,9,3],9],9]]
|
||||||
|
|
||||||
|
[[7,[4,9,[],[7,6,8,7],3],6,7],[7,9,[[2,3],7,5,[7]],[[6],4,[2,8,5,10],[4,9,10,6]]],[[],10],[5,[5],8,[],[3,[6,1,7,10,1],7,5,[10,8]]],[[[7,7,8],8,8]]]
|
||||||
|
[[7,[10,1,[5,3,9],1,[]]]]
|
||||||
|
|
||||||
|
[[[[8,2,10,7,3],8,[0,7,0]]]]
|
||||||
|
[[4,7],[[2,[],7],4,[10,[4],[5,6],1,1]],[5,[[9,1]]],[[6,2],[2,3,[1,4,1]]],[]]
|
||||||
|
|
||||||
|
[[6,[[],10],[5,3]],[],[6,4,9],[7,[6]],[0,[],[[8,7,8,10,7],[],[10,6,4],[4],0],8,[8,7,1,[10,6,5],[10,1,5]]]]
|
||||||
|
[[3,8],[[3,[1],10]],[[6,2,[],[9,6],5],[[1,8,9,2,9]],[3,[],[7,6,4,7,6]]],[[[3,9,5,0,2]]],[[],7,7]]
|
||||||
|
|
||||||
|
[[10,7],[9,7,2,5,1]]
|
||||||
|
[[],[],[[]],[[7,2,[],[2,10,7],8],4,0,[2,[],[8,8,9],5,[6,1]],[1,4,[6,5,4,1,4],[7,7,9],2]],[[],5]]
|
||||||
|
|
||||||
|
[[[[6,7,10,0,4],[5,3,2,8,4]],[[1],[],[5,4],8,2],0],[1,5,10],[[2]]]
|
||||||
|
[[],[10,1,[[1,3,0],[0,1,7,7],[1,5,10,7,3],[4,6]],4,[]],[9,9,[8,[4,1,7],[4,1,8,9],[7,6,5,10,5]],[0,6,[6]],6]]
|
||||||
|
|
||||||
|
[[[[2,3,3],2,[]]],[[[4,6,7,5],[7,3,3,10],[4,6,10,2,3],[4],7]],[[[1,3,4,0,4],10],[10,[],4,3]],[],[3,[],9,2,8]]
|
||||||
|
[[],[[[9,1,8,4],7]]]
|
||||||
|
|
||||||
|
[[],[3,10,[[1,6,1],[1,2,1],[9],[3,7,9,10]],[[]]],[[[9,3,7,6],[6,8,2,3],10],[8,8,1,5],[6,2,4,[2,8],1]],[[[6,8,9,8],5,5],[[],[0,4,5],[4,5,8,7]]],[]]
|
||||||
|
[[[]],[[1,[2,4,0,4,4]],[2,[],4],[7,[9,5,5],[0,2,0,5]],10,8]]
|
||||||
|
|
||||||
|
[[],[],[],[3,[8,5,[7,2,9,9]],[[2],[4,10]]],[]]
|
||||||
|
[[9,[9,10,8,[4,6,3,0]],7],[[4,[8,4,2,8],5,[0,10,9,4,9],2],[2,10],[4,[10,1]]],[10]]
|
||||||
|
|
||||||
|
[[4,[[10,5],8]],[4,8,7],[[[7],[],5],10],[[],5]]
|
||||||
|
[[[[0,7],[9,8],[]],9,[[6,2],4],1,[]],[1],[[7,4,2,[8,2,3]],8,3,[[1,9,10,7],[2,2,3,2]]],[[[3,1,8],8,[6,1,1,6,5],[1],6],[6,[],10],[[],3],7,10]]
|
||||||
|
|
||||||
|
[[[7,[5,6,3,2,5],[0,6,0,3],[0,4,10,6,8]],4],[],[[],[[10,9],[10,4,9]],[[1,8,6],6,[]]],[5,9],[[],[[],[3,3]]]]
|
||||||
|
[[],[6],[[3,[1],4,[10,0,1,6,3],7],[],9],[0,[[],6,4,2]],[]]
|
||||||
|
|
||||||
|
[[7,[]]]
|
||||||
|
[[5,3,[6],[],[10,[0,7,3,9]]],[[[9,1,5],5,0,1,8]],[[[2,3,10,1],10],10],[[[],5,4,1,8],[0,[5,1,4,9,3],2,10],[],[9]],[2,10,8,6,4]]
|
||||||
|
|
||||||
|
[[[],1,8,[4]]]
|
||||||
|
[[[5,5,[]],[[],[3,2,5,10],[4],[5,5,8,2,6]],6],[[10],[[5,0],[2]],9],[[4],[]]]
|
||||||
|
|
||||||
|
[[[2,6,[9,10]],9,7],[8],[7,6],[8],[8,0,3,0]]
|
||||||
|
[[[],[[],4,[1],6,[5,9,0,0]],9,9,4]]
|
||||||
|
|
||||||
|
[[[],9],[[10,8],6,[[8,0,0,7],[6],3,[5,5,1],10],[[9,3,6],[8,3,0]],[]],[[0,7,1],3,3],[5],[4]]
|
||||||
|
[[[8,[4,6,0,4],2,[8]],[[6,10,6],[2],4],5,9,[3,[3],[10],7]],[6]]
|
||||||
|
|
||||||
|
[[[6,6,[0,5,3,10],10],[3,0,7,[8],[3,9,10,1,7]],8,[6,9,[]],[1]],[],[5],[5,[4,[6,9],2,[8],[]],0]]
|
||||||
|
[[],[],[[6,[],6],[9,8],7,[],[3,[5,9],4]],[[7,[3,7],[4,8,10,9],10],[[],9],8,[5],5]]
|
||||||
|
|
||||||
|
[[[[],6,0,[2,6,7,7]],9],[[7,1,[5,4,5,2,10],[]],7,[4,2,1,0],10],[6,7,[]]]
|
||||||
|
[[1,[[],5,10,[8]],[8,1,[],[1]],[[2,0,1,10,6],[10,7,3,5]]],[[[10,5,5,10],[]]],[0,[[5,7],[],9,6],[5,0,3],[]],[[6,5,0,[0,1,9,3],[9]]],[0,[4,1,3],7]]
|
||||||
|
|
||||||
|
[[[],[1],[],10],[6,9],[10,10],[]]
|
||||||
|
[[9,7,[[0,2],5,[8,1,5]]]]
|
||||||
|
|
||||||
|
[[],[0,[[7,8,4,1],9,0,2]],[[2,7,[],[1,6],[4,6]],[7,[]],0,[[1,0,5]],1],[5,[6,[9,4,2,6,4],10,[7,7,8,8,1]],[7,9,[7]]],[]]
|
||||||
|
[[],[9,3,[[2,8,6,3,9],1,6,[6,8]]]]
|
||||||
|
|
||||||
|
[[[6,6,[7,7,3]],[]],[3,2,0,[3,[8,4]],5],[9,10,7,10],[[9,[0],10,10,[1,9,0]],[[],1,3]]]
|
||||||
|
[[2,4,5],[],[0,[],[[0,2,8,0,7]],[[],[7],[0,2,9]]],[]]
|
||||||
|
|
||||||
|
[[[[]]]]
|
||||||
|
[[[[],[10],[0,9,7,9],5,[]]],[]]
|
||||||
|
|
||||||
|
[[[],[[],10,1,[7,3,0],[4,10]],[]],[[],[10,[7,4,7],[],9,[0,4,3,8]]]]
|
||||||
|
[[],[[[],10,1,2,0],10,[[]]],[[4],[[8,7,10],8,7],0],[[0,[4],[],[0,1,10,3],9]]]
|
||||||
|
|
||||||
|
[[[7,[],[1],[6,4,0]]],[[[7,1,10]],[[1],[1,9,4,6]]],[9]]
|
||||||
|
[[1],[4,5,3,8,[9,4,[0],[4,7,0]]],[9,[4]]]
|
||||||
|
|
||||||
|
[[],[[[10],6],[],[[2,1,9,10]],4,[4,1,10,3,0]],[[],[],0,[[]],[5,[10,5,9,1,1],[9,4,8]]],[],[3]]
|
||||||
|
[[9,[[6]],[],[[],5]],[[[3],10,9],1,[5,[10,1,10,1],[8,2,2,10,7],9,10],0],[8,3,[[0,10,3],6,[8,10,7,0,6]]],[[],2,7]]
|
||||||
|
|
||||||
|
[[7],[9]]
|
||||||
|
[[[[6,2,0,5],9],[[2,4,5],5,[0,6,8],[9],3],[[5,5,8],10,[0,5,2,3],7,[3,0,9,3,7]],7],[8,[[2,1,2,6],2,4],6,[],[2,[7,2,6,9],1]],[8,5,[10,[1,3,4,9],1,3],8],[[3,7,[9,5],[10,5,1],10],[[5,7,5,2,8]],[2,7,[],3,2],[[0,2,0,6],[5,7,9],7,[7,8]],[7]],[0,[[],[],4,10],5,[[9,10,5],3]]]
|
||||||
|
|
||||||
|
[[4,8,[9,[],[0,6,9,0,7]],[[2]],[1,4,8,10]],[[]],[[6,[1,3,2,7],[7,10,4,9,0]],5,3],[[[],[8],[2,7,1,3,4]],[]]]
|
||||||
|
[[],[],[4,9,7,6],[3,10,0,[]],[10]]
|
||||||
|
|
||||||
|
[[],[[],[],8,10]]
|
||||||
|
[[[[0,10,2,6],[3,8,9],6,[3,9,8]]],[[5,0,[2,3,9],[0,5],[4,4,1]],[[],7,[6,3,2,10,2]],5,9,[3]],[[]],[3,[[],7]],[[2,6,7,1],[1],3,[9,9]]]
|
||||||
|
|
||||||
|
[[[],7,[],[6,3,3,[4,5,6,10,8],[6,3,1,2,10]]],[[[],1,[8],[5,0,0],9],[],[[1,2,8,6]],[[4,3,7,1],2,[1,7,3,0]],[6,[7,5,3,6],5,5,3]],[[[],[6,1,7],[3,0,1,0,5]],0,[[0,10],4,[3,7,5,8,1]]],[4]]
|
||||||
|
[[5],[6],[],[5]]
|
||||||
|
|
||||||
|
[[[8,[7],[9,7,5],[4,4,4,0,9],[0,8]]]]
|
||||||
|
[[[[3,2,6,6],[1,4,1,7,0],[],10,[8,6]],[[5,4,2],[],6,[10,6,2,2,7]],7,[[6,4],[],8,[2,7]],8],[],[],[[[],7,6],1]]
|
||||||
|
|
||||||
|
[[6,[1,6,[9,3,7,5],8,[8,2]]]]
|
||||||
|
[[[9,3,[6,10],[],[9,5,1,2]],[[9,8],[6,4,8,9],[6,8,3],[9,7,9,10]],0,[[3,5,6,10],[7,0,7]],0],[6,[[8],[0,7,1],7,[8,1]],[4,4,3],[5,[],6,9],10],[7],[]]
|
||||||
|
|
||||||
|
[[9,[3,3],[10,[8,10,9,9]],6,3],[[[6,2],6,5],[[6]],[1,[3,2,6]]],[9,7,1,5]]
|
||||||
|
[[3],[9,[7],[3],[7,5,7],7],[],[[[],[3,3,0,9],[8]],2,8]]
|
||||||
|
|
||||||
|
[[[[7,1,1],0,4,7,2],[[3,4,9,2],[8,7,5,0,9],5],[9]],[[[3,8,4,2,8]]],[]]
|
||||||
|
[[0,3,[[8,10,9,0,4],5],[]]]
|
||||||
|
|
||||||
|
[[[]],[[]]]
|
||||||
|
[[[[2,6,8,2],2,6,0,8],[10,5,[0,2,1,0],0]],[4,3,[0,4,[3,7,0,0,5]],[[1,3,9],4],0]]
|
||||||
|
|
||||||
|
[[[10],[[9],0,[6],2,0]],[[1,3,[7,3,1]],[8,[6,3,0,1,1]],5],[[7,[1,0],2,[]],5,4,3,4],[9,7,9,7,5]]
|
||||||
|
[[9,0,[9,4]],[[[3]],5,5]]
|
||||||
|
|
||||||
|
[[5,[10,0,[3,1],[0,8]]],[7,[[8,6,8,4,7],[],5,[7,10,8,3,9]],4,6]]
|
||||||
|
[[[[7,6,6],8],[[9,7,10,6,3],8],0],[2,9,7],[[[3,9,8,7],[8,0],5],[[0,8,2],[]],[3,3,[3,4],0,6],[6,[8,5,4,6,2]]],[]]
|
||||||
|
|
||||||
|
[1,0,10,1]
|
||||||
|
[1,0,10,1,0]
|
||||||
|
|
||||||
|
[[9],[2,6],[]]
|
||||||
|
[[4,1,[[9],[8,6,10,5,2],3,[6,5,9,5],[8,0,2]],7,2],[1,[[1],6,[0,7],9],[10,5,4]],[6,9],[[[6],[1,5,5,10],5,[],[10,4,6,6,4]]]]
|
||||||
|
|
||||||
|
[[[6,7,[],[8,3,9,3,7]],0,5,5,2],[4,[],8,[[10,10,3,0],5],[[4],3,10]],[],[7,10]]
|
||||||
|
[[[7,[6]],[2,8,[8,1,4]],[[3,1,7,10],10,2],2,[4]],[8],[[]],[[1,[6,0,3,1,1]],[[5,2,7,3,10],8,[0,1,1,2]],[9,4],0],[[[7,9]]]]
|
||||||
|
|
||||||
|
[[2,[],[],9,3]]
|
||||||
|
[[0,9,4,2],[8,6],[[[8,7,3,1],[],[8],3,[4,2]],4,1,0,[]],[[],[]]]
|
||||||
|
|
||||||
|
[[[2],[]],[[[3,5,2,3],10],[],[9,2,5,2,3],6],[],[[0,4,0,9],[[],[]],3,[8,5,[],[6]],[[],[],6,[7]]],[[],[9,3,1,[],[8,0,7]]]]
|
||||||
|
[[6],[6,[[7,3,5,1]],7,3]]
|
||||||
|
|
||||||
|
[[5,[[10],[0],[3],[2,4,5]]],[[8,[8,10,5,0],0,[1,7,8,1]],[10,[5,6,4,5],3],[0,3,[5,4,5,8],7],[4,[5,6],0,[0,10,7]]],[8,9],[[5,[10,3],3,[]],[7,1,8,[9],8],[],[9,[2,5],[3,5,2,4],[4]]]]
|
||||||
|
[[8,10,4,[[],1,2,8,8],8]]
|
||||||
|
|
||||||
|
[[[2,9],6,[],[5,0,10]]]
|
||||||
|
[[[2],[[8,10,7,0],[7],[10,9,7,6]],8,[[8,10],8],[[2,8,9,3],[3]]],[7,2,8]]
|
||||||
|
|
||||||
|
[[],[],[2,[6]],[[]],[1,3]]
|
||||||
|
[[],[4,4,4,[[],3,[],7,[]]],[6,[]],[[9]],[[]]]
|
||||||
|
|
||||||
|
[[[[4,5,9,3]],1,[],4,[[],[],[],7]],[[[0,6,9,8,7],[],3,[4,8,1],5]],[6,[9,10,6,9],[[9,10,2,1],[8,7,1],[10,10,3]],[[0,4,3]]],[]]
|
||||||
|
[[5,[]]]
|
||||||
|
|
||||||
|
[[4,8]]
|
||||||
|
[[],[],[0,6,[10,[5,10],2,1,[3,3,1]],8]]
|
||||||
|
|
||||||
|
[[7,10,[[2],10,7,[5,0,5],9],10],[4,[[5],[1,5,8,10,5]]],[0,1,[[2,6],[1,8],8,0],[10,[7,1,10,3,1],[],[0,0,6,10]]],[],[7]]
|
||||||
|
[[],[3],[[3,1,1,3],1],[10,9,[],2],[[[9,3],6],[[2,10],7,9,[7,8,7,10,6]],10]]
|
||||||
|
|
||||||
|
[[[0,5]],[[8,9,10,8]],[[[2,9,6],7,0,3],0,[[7,4],[5,7,0,10],[]]],[[3,9,[7,1,2,6],9,7],[[],10]]]
|
||||||
|
[[6,[9,[6,1],[6,3,8]]],[9,[]],[[[3,3,7,4,7]],[]],[[[]],[[],7,[10,3]],10,7],[[],7]]
|
||||||
|
|
||||||
|
[[[[1,3,7],[],1],5,2,[1,[10,3,7]]],[[8,7],9],[[[3,9,0,8,2],[6],0,[7,4,10]],[6,0,3,1,[6,9]]],[10,7,1,10],[0,[[1],9,7,[7,7,5,4],2],[],[[5,1,9],7,7,9]]]
|
||||||
|
[[5],[9,3,[1,10],7],[[6,6,[3],3,[0,2,2,8,7]]],[7]]
|
||||||
|
|
||||||
|
[[[4,[7,6],9,7],1,[],7,6]]
|
||||||
|
[[8,[[5,6],[6,4,3,9]],7,10,[3,[],9,[6,5,4]]]]
|
||||||
|
|
||||||
|
[[4,2,1,[[4],8,[7,4,0,8]],10],[],[[[7,3,5]],[7,5,1,[7,2,4],[6]],[4,[1],1],[7,[10,10,10,6],[9,2,0]],[[5,1,9,3,5],[3,10,4,9,8]]],[[],6,3],[6]]
|
||||||
|
[[],[[],[0]],[[2,5,[1,4],6],1,4,[3,[],[10],[2,7,8,4,2]]],[[10],7],[[[4,10,6,3],7,[],1],2,3,3]]
|
||||||
|
|
||||||
|
[[6,0,7]]
|
||||||
|
[[5,2,[4],[[3,0,8,10],0,[4,8,9]]],[[],[[8,9,7,5,3],4,6],7,10,[[5,6],[2,10,5],[9,5,6,0],1,1]],[2,3,[7,10],9,1],[]]
|
||||||
|
|
||||||
|
[[4,[2,[],7]]]
|
||||||
|
[[[6,9,6,[3,6,7,2,3]],4,[1,2,5],6,4],[9,[1],[8,[7]],2],[[[1,3,6,3,6]],0,[],[]],[0,[[9,10]],5,[2],9],[[[3,1],[10,1],[5,0,9]]]]
|
||||||
|
|
||||||
|
[[5],[2,[[]],9,[[]]],[1,5,[]]]
|
||||||
|
[[[0]],[3,1],[10,6],[]]
|
||||||
|
|
||||||
|
[]
|
||||||
|
[[[7]],[[1,[4,10,9,2]],8,[10,[7],[2,1,1,4],2,10]],[],[[[10,6,4,7],7],[],4,8,9]]
|
||||||
|
|
||||||
|
[[6,[[6,0,10,7,9],0,[5,1,2]],2],[[[3,1,6,1],7,[],5,4],[[10,10,3],0],8],[],[[[6,7,0,1,5],5,5,[3,7,2]],[6],7,3,1],[10]]
|
||||||
|
[[],[[[],[1,2,10,9,5]],[[5,7],[7,4,9,9,0]],10]]
|
||||||
|
|
||||||
|
[[9,4,8,[],8],[[3,[6],0,[3,1,10,9,2]]],[],[8,0,3,4]]
|
||||||
|
[[1,1,0],[3],[[[9,1],5,[7]],7,10,[5,[2,4,2,6],6],[[2,2],[6,0,2,0],[3,4,1,3,0]]],[8,[]]]
|
||||||
|
|
||||||
|
[[9,5],[[[],8,[0,9],[],0]],[[],7],[3],[10,9,6]]
|
||||||
|
[[8,[0,[9,5,0]],[],4,1],[]]
|
||||||
|
|
||||||
|
[9,10,2,8,0]
|
||||||
|
[9,10,2,8]
|
||||||
|
|
||||||
|
[[6,4,[9,5]],[[[10]],[[4,2,2,5],0,[3,2,1,10],5,[10,1]],0,9]]
|
||||||
|
[[7,[8,[0,1],4,0],[7,[5,1,9,4],10]],[[10,[0,7,8,5,9]],[10,6,[3,9]]]]
|
||||||
|
|
||||||
|
[[3,0,1,2]]
|
||||||
|
[[[[5,2]],5,9],[],[[[9,6,5,8],[1],[],[],1]],[[[],[3,5],9,[],8],4,[[9,6,8,9,3],9,10,[0,8,1],[]],8,[[],7,[7,5],8,2]]]
|
||||||
|
|
||||||
|
[[[[4,4]]],[8],[6,2,[8,9],2]]
|
||||||
|
[[],[9,[[],2,3],[6]],[[[10,2,9,0]],8,10,0,10]]
|
||||||
|
|
||||||
|
[[7],[[4,4,5,8,5],[9,[9,9]]],[[[4,4,1,5,6]],10],[[],[[0,0,2,10]],[[6,9,8,5,6]]],[[[],0,[3,7,1,6,6],[0,7,8,6],[9,7]],7,[2,[9,2]]]]
|
||||||
|
[[8,7,[7,[],4]],[1,[[4,0,8,7],3],[7,[7,8,1,2],10,6],8,[[3,7,10,7]]],[2,0]]
|
||||||
|
|
||||||
|
[[[[3,9,2],[7,2,9,10],4,[6],9],9,[[6,0,9,10,5]],[9,[10,5,7],5,6]],[],[9,4]]
|
||||||
|
[[[[8,9,9,5]]],[[[4,8],2]]]
|
||||||
|
|
||||||
|
[[[6,10,4],[],[7,[5],[0,9,1,4,3],8,8],[4,4,7],9],[[[3,7],3,[5,4,7,0],6],2],[[[7,1,6,0,4],[],[4],[9,0],1],[[8,3,9,6],9,[2,7,8]]],[]]
|
||||||
|
[[]]
|
||||||
|
|
||||||
|
[[],[7,6,[],[3,6,10,[9,7],4],[]],[4,9,8,[],2],[]]
|
||||||
|
[[],[4,[9,1,10,9,6],4,0],[[],[[],[10,7]],[[6,5],5,[3,2,6,3]],[2,3,10,10],[]],[9,[2,9]],[[5],10]]
|
||||||
|
|
||||||
|
[[[[2,2,9,8],[5,2,8,5,5],[5,9,5,9],4,2],7,[],[9,[2,7,9,7]],2],[],[0,9,5],[[6],[3,[],[],0,2],5],[]]
|
||||||
|
[[[1,[9,8,8,1],3,10,[7,10,2,7]]],[[],[],[[],[10,10,4],10],10],[8,9,0,4],[],[1]]
|
||||||
|
|
||||||
|
[[[7,[0,6,8],6],[[10,4,5,1,10]],[],4,7],[[[5,9],[4,4],5,2],2,2,[[7,10,3,7,9],10,6],2]]
|
||||||
|
[[],[]]
|
||||||
|
|
||||||
|
[[[5,[6],[7,9,4,0]],[[4,4],[],5,[6]],[7,[5,6,9,9],6],[]]]
|
||||||
|
[[],[],[2,10,[],[[]]],[[8,7,[8],1,1]]]
|
||||||
|
|
||||||
|
[[],[[7,0,[1,10,5,2,1],[2],[]],[[2,9,3,3],[10,9,3]],[[2],8,1]]]
|
||||||
|
[[[[5,8,6,5]],2,[3,8,10,9,0],[[5,9,1,4],[7,7],9],7]]
|
||||||
|
|
||||||
|
[[5,3],[10,5],[]]
|
||||||
|
[[6,10,[],[[8]],[[],0,[]]],[],[],[],[]]
|
||||||
|
|
||||||
|
[[5,[7,[5],[6,3,10],9,3],3],[[[7,0,0,1],9,[1,4],3,[0,5,8,7,7]],1,[2,[1],[3]],4,7],[[1,10,4,1,[10,3,3,8]],3,[[6,5],[1,4]]],[3,[[7],[2,3,3,5,3],[4,2],[8,7,9,1,10]],[[9,10,7]],10],[[[2]],7,5]]
|
||||||
|
[[4,7],[[10,[2,4]],[8,1,9],9],[[4],8,[],9,5],[[5,[1,0,1,1,8]],[[5,2,4],[],[],8],8,[[4,4,6,10,4]]]]
|
||||||
|
|
||||||
|
[[8,1],[[[5],9],9,[]]]
|
||||||
|
[[9,[],3,3],[[[10,3,4,1],6,7,[9]],10,5,2],[[0,3,8],9,4,[8,7],[]],[4,4]]
|
||||||
|
|
||||||
|
[[3],[7]]
|
||||||
|
[[1],[4,3],[6,[1],[[5],3,[]]],[0],[2]]
|
||||||
|
|
||||||
|
[[[9,4,8],[[8,8,10],[4,6],10,10],3,6],[[[1,4],4,[],[8,3],[0,0,5]],[0,[0],4,[1,9,2,6,0],5],[4]],[[2],[0],7,6,[]]]
|
||||||
|
[[[[],[9,4,7],[9,1],5,[3,4,9]],[8]],[1,[],[[0,4]],[6,1,9],2],[],[[6]]]
|
||||||
|
|
||||||
|
[[[[],10,8],[6,[],7,[7,6],[10,8]],[[],8,9]],[]]
|
||||||
|
[[6],[[]]]
|
||||||
|
|
||||||
|
[[],[7,[[0,4],[],5,1],[[8,1,7,0],0,[4,3],5],[3,[],[3,9,3],[0,4,5,2],6]],[[[5,2,0],[8],[3,10,9,3,5],[],[0,5]],5,0,[],4]]
|
||||||
|
[[[[],5],[9,[5,7,8],5,[],[5,2,2,10]]],[[9],[1,5,0]]]
|
||||||
|
|
||||||
|
[[[],[4,0,[1,7],3,7],8],[5,[],3,7,[[8,9]]],[[],[7],[[3],0]]]
|
||||||
|
[[3,8,5,[[9,10,5,5],[0,1],[2]],7],[1,1,9,4],[[[4,8,9,0],[],[],[5]]],[[],[],1,8,5],[]]
|
||||||
|
|
||||||
|
[[5,[1,0,[9]],[[1,8,10,10,1],[],[0],[4,10,9,8,5],7]],[[6,3,2,0],[6],9,[9,7,[1,0,0],5]]]
|
||||||
|
[[10,5,1,4],[6,0,[]]]
|
||||||
|
|
||||||
|
[[[3,9],5,[[0],[6]],[[9,9,3],[],8],5],[],[]]
|
||||||
|
[[8,8,4,[],[[9,9,7,3,8],[4,6,8,7,8],[10],2,7]],[10,0,1,[[3,10],[6,2,10,3]]],[3,6],[],[[],4]]
|
||||||
|
|
||||||
|
[[],[9],[2,9,[[],[5,1,0,2,1],[9,10],0],[[7,3],5,10],2],[[9,[9],3],[4,[10,2,10],[0,2]],1,[2,4,[4,1,7,1,0],[],[1,0,1]],[10,[1,4,5],9]]]
|
||||||
|
[[[[],[9,1,3],[5,0,1,7],7]]]
|
||||||
|
|
||||||
|
[[[[0,5,10],[7,8],[0,5],[7,10,1]]],[[2,10,[3],[5,4],[8,9,0,1,6]],0],[]]
|
||||||
|
[[6,[8,4,4,[10,9,4,2,9]],4,[5,1]],[1,6,5,[],[10,[7,3,10,6],[0,2]]],[4,[2,5],[3,[7,7,2,10,5],3,[0,4]],[2,9,2,[]],[2,[1],1,[6,6,5,5]]],[4,[],10,[[2,7,0,4,8]],[0,2]],[[[8,10],[7,9]],[10,5,[6,5,8,2],0,[10,8,2,9]],8]]
|
||||||
|
|
||||||
|
[[[3,9,[],[4,1,6],6],8,[[3,8,1,3,10]],[]],[5],[],[]]
|
||||||
|
[[3,10,[]],[[9,[1,8],2,[4,3,6],7],3],[0,[[9,0,7],3,9,8,[]],5,[[],[10,5,7]],[[4,3,3,6],10,[3,9,0,6]]],[[2,[4],[5]],10,[6],6,2]]
|
||||||
|
|
||||||
|
[[[[4,0,8],[4,3,8,10]],8,10,[10,0,3]],[[],0,7,5],[2,[[],[1,6,9,2],4,[8,2,6]],6,[6,[10,0]],[[],[4],[5,6]]],[]]
|
||||||
|
[[5,[[]],2,2],[[[10,4,7,9],10,8,[]],9,5],[[[10,10,8],2,[8,7,1,2],8],1]]
|
||||||
|
|
||||||
|
[[5,4,3],[4,[8],1,[[]],[]],[[]],[4,[],[[1,5,5],[]]],[6,6,8,9]]
|
||||||
|
[[[5,[10,7,7,6],5,7],6,6,4,10]]
|
||||||
|
|
||||||
|
[[2,[[]],[6,[0]],[[3,7,5,2,1],0,[9,6]],[]],[[[4,9,6]],3,8]]
|
||||||
|
[[[]],[2],[[[4,6],[6,4,10,7],10,[4,5,10]],7,[4,7,[9,1,3],8]],[[9,5,7,[],9],[8],[],7,[[1,1,7,2]]]]
|
||||||
|
|
||||||
|
[[],[[[7,6,1,0],6,7,7]],[6],[[],6]]
|
||||||
|
[[],[],[[],[[]],[[8,5],9,[2],8,5],4]]
|
||||||
|
|
||||||
|
[[1,2,[9,[7,5,1,0,9],[8,7,2],0,[4,10,10,7]],9],[9,[],[[0,8,10]],10]]
|
||||||
|
[[5,[[10,7,3,0,9],[0,6,4],[9,10,0]]],[1]]
|
||||||
|
|
||||||
|
[[[],3],[[0,[6,10,6,3,10],[3,7,6,0,5],10,1]],[5],[[]],[10,0,[],8]]
|
||||||
|
[[[9,[5,10,6],7,0],8,[6,6,[2,0,9,5,1]],[[],3,[10],7],7],[[[2,3,9],[2,6,9],[10,2],[]],[2,[0,6,9],[8,5,4]],[4,[4,8,6,4],[1,1,1,4,8],10,1],4,[5,1,[]]]]
|
||||||
|
|
||||||
|
[[[],[]],[[[10,4,6]],[[2],4,[1,1,3]],[7,9,[3,3,10,5]]]]
|
||||||
|
[[0,6,0,[10,6],10],[7,10]]
|
||||||
|
|
||||||
|
[[[],[2,[8,3],[3,5,9,9]],[8,[8,9,2],2,[4]]]]
|
||||||
|
[[7,6,[[5,2,8,5,0],[5,2,5,5,7]],4,6],[[9,2,5],[],7],[6]]
|
||||||
|
|
||||||
|
[[5,0]]
|
||||||
|
[[[2,[3,5,6,6],9,[6,8,8,7,2],0],1,2,7,[0,2]],[4],[9,0,4]]
|
||||||
|
|
||||||
|
[[[[4],0,[4,6],5],[],[3,4]],[1,7,[8],6],[[1,0,[],[2,1,7,5,7],7],[6,10],[],6,[8,[9,9,9,5],2,1]],[7,[],5,[]],[7,[]]]
|
||||||
|
[[[4,1,[10,0]]]]
|
||||||
|
|
||||||
|
[[1,[],2,6,[[6,10,2,4]]],[],[4,5,0]]
|
||||||
|
[[[],8,10],[[5,[10,9],0],10,8,3],[[[5],8],0],[]]
|
||||||
|
|
||||||
|
[[0,10],[[[4,6]],[]],[10,0],[],[6]]
|
||||||
|
[[6,0],[[],8],[3,[8,[3,4,10],9,[6,5,10,5,9]],4,[2,[6,3],8],[10,[2,6,2],[0,4],[4],6]],[[[],[8,1]],8,5,8,3],[3,2]]
|
||||||
|
|
||||||
|
[[[],6,[[9,3,0],[2,2,10],9,8,[]]]]
|
||||||
|
[[[5,0],[0,4,8,[7]]],[[[4],2,4,[1],[3,7,0,6,7]]]]
|
||||||
|
|
||||||
|
[[[[7],2],[[8,9]],[],4,10],[[0,[9,0,7]],[[2,9],10]],[]]
|
||||||
|
[[[],4,[0,3,0],5],[7,0],[2,8,[6,[3,8,10,3]],5],[],[[3,[10,9],[1,6]],4,8,[[],7,[2,6,10,9],9,[8,6,3]],1]]
|
||||||
|
|
||||||
|
[[[[0,8,6,9]],0,4],[[8,6,5,4],8],[7,[[],[10,0,9,5,9],0,6]],[10,1,3,[[8,9,9,8],[0,10,7],[2,10,9,2,10],4,2]]]
|
||||||
|
[[3,[]],[1,0,10,4,[[2,1,9,1],[]]],[0,[[],[9,1,1],1,[10,7,7,2,1]],5],[[[8,3,4,8],7,4,8,[7,4,9,1]],[5,[0,6,10],[]],[],8],[[9,0,[10,5],1],6,[5,[1,4,1,0,8],[5,10]],7]]
|
||||||
|
|
||||||
|
[[1],[3,[[],[6],[1,6,2,9,8],[10,3,3,5]]]]
|
||||||
|
[[[3,[4,9,8,5,0]],[[3,2],[],[9,1,3,7,7]],[7,[],[7],4],[]],[2],[6,5,6,[]],[[2,[6],[6,7]],7,8],[5,[[7,6,8,6,9],[]]]]
|
||||||
|
|
||||||
|
[[[10,[],2,3,[]],[[]],[7,[],[5,10,7,1],2],[4,[3,7,2,1,2],[7,8,4,0]],[7]],[[],[[6,3],6,[5,7,7,4],[1,7,3,4,0],6],5,1,9],[[6,[7,0,4,10,8],6,[7,7,10],[1,7]],6,3,10]]
|
||||||
|
[[],[2],[[0,4,[6,6,10,8,4],[7,8,10,1],0],[[9,6,8,0,10],1,[2,5,2,10,1],10,8],3,10]]
|
||||||
|
|
||||||
|
[[],[],[],[[[4,0,10,8,2]]],[[],10,3,2,[[],7]]]
|
||||||
|
[[[[6,6,4,4,4],[1,4],9],[9],[[3,7,0],[10,8,10],6,[6]],7,[]],[]]
|
||||||
|
|
||||||
|
[[[[5,0,4],[9,2,7,0],[4,4],2,6],4,7],[[[0,4,9],[5,9,1,1,5],[]]],[7]]
|
||||||
|
[[[[8,5,9,4,8],4]],[],[[[9,1,4,9],0,2],10],[2,[6,2,9,[3,4,10,2],[5,8]],[[6,5,6,6,9],[3,2,6,3,5]],[[],7,[8,3,8,7,4]]]]
|
||||||
|
|
||||||
|
[[5,[],5],[[5],9,[8,[3,6],[10,5,7],10,2],[],[]]]
|
||||||
|
[[0,[[7,10],[7,2,6,5,2]]],[],[[[7,6],[],0],2,[[2,5,3]],0,[5,[8,7,1,3,1],5]]]
|
||||||
|
|
||||||
|
[[[10,9,[],6]],[5,3],[3,5,10,[[1],[7,5,8,7,4],[4,4,2]]],[[4,[7],1,[10],[3,8,1]],[[],[10,0,10],[7,4,2],[5,6,1,4]],[[10,4,5],[2]],[4,[5,2,5,8],2]]]
|
||||||
|
[[[],[[6,1,9],5,[8,2,8],[5,5]],5],[10,[[10,5,8,10],10],[[3,8,1,6,0],3,8],7],[6,[5,[3,7,3,0],6,0,[0,6]],10,6]]
|
||||||
|
|
||||||
|
[[],[[[7]],7,5],[[[8,3,0],[9,8]],3,3,[[3,1,8,1,9],10]],[[[9,4,4,7],[3,0,7,1],[6,2,9,4],[0,2,3,8],[]],[8,1,[8,6]],0,[],[[10]]],[2]]
|
||||||
|
[[2,[[2,6,10],[],7]],[[9,8,2,[10,10]],3,0,[6,0,1,3],[]],[[],9,10],[[6,10,[0,1,6,8],6,[7,5,10,10]],[[10,4,2,5],9,[4],0,0],[[9,3,5],[],[7],6,[10,0,4,7,6]],[[8,6],10,6],[]]]
|
||||||
|
|
||||||
|
[[[3],[5,9,1,10,[8]],6,4],[[[],8,4,2],1,[10,[1,10,10],10],8],[0,[],[[6,2,1,10],4],7],[0,3,[10,[9,4,4],0,4,[1]]]]
|
||||||
|
[[],[[9,[1],[],[]]],[6],[6,[5,[8,5,5]],[9,9,[6],[8,3,7,5]],[9,[5],4,9,[10,7,8,9,4]],4],[[[4],[9,1,8],7,8,[4,2,10,10,1]],[8,7,[],10]]]
|
||||||
|
|
||||||
|
[[],[8,9,3,5]]
|
||||||
|
[[10,[[5,5,1,6],[],5],8,[6],6],[]]
|
||||||
|
|
||||||
|
[[10,2,[],[[]]],[2,[6,8,[10,4,1,7],3],[4,2,[9,1,3,6]]],[[]],[[2,9,[4,2,10,7],8],[10,[7,1]]]]
|
||||||
|
[[[6,7,[4,0]]],[[[5,7,5,10]]],[10,5,[[5,4,3,5,6]],10,[]]]
|
||||||
|
|
||||||
|
[[10],[],[[[6]]],[],[[6,[7,4,5,4,8],[],[2,0,9,5,3],2],[[8]],[0,10,2,[1,0]]]]
|
||||||
|
[[[1,10,[5,6]],[[10,3,3,1,10],3,2],[[7,4],6],[],[]],[10,[[2,9,2,5],2,[6,6,10,8],2,8]]]
|
||||||
|
|
||||||
|
[[[],[3],[[8,6,5,2,2],8,[9,3,1,1],[0,4,9,10]],4]]
|
||||||
|
[[],[[9],7,10]]
|
||||||
|
|
||||||
|
[[[[7,6,10],6,6],[9],[1],7],[3,9],[7,[4,4]],[1,[4,3],[[5,7,9,4],8,[0,10,5],[4,1,10,6,3],[7]],[[]],[7,10,[4,4,6,5,10],9,[7,0,10,7]]],[[]]]
|
||||||
|
[[],[[[6],3,[]],[[3,6],10],9],[[[3,4,0,3],5,3,9]],[0,10,9],[3]]
|
||||||
|
|
||||||
|
[[5,0,[6]],[[[],2],[[5],2,[5,8,2],[2,8,3,9,1],[7]]],[10,[4,[4,7,3,9,2],7,[6,0,0,7,2],0],[10,[10,4,3,7],1,10]],[3,[[9,10,9],[8,1,4],6,[],5],[8,[6,1],[6,2]],[[5,9],8,5],[[8],[6,9,6],7]]]
|
||||||
|
[[7,8],[[[6,5,8,0,7],[1,2],[4,6,4]],[],[[],8,10]]]
|
||||||
|
|
||||||
|
[[[[10,5],3,[5,2,2,6,3]]]]
|
||||||
|
[[10,[[5,0],4,1,[0],[5,8,0]]],[8,0,10,4],[1,8,[9,[7,8,8],4,[5,0,6,0],0]],[[],6],[6]]
|
||||||
|
|
||||||
|
[[[0,0,5,10,[9,10,0,5,8]]],[0,9,[[],[2,9,5,2],[7,7]]]]
|
||||||
|
[[[10,0,5,4,[]],8,5,8],[[10,4,[7,5,3]],9,4]]
|
||||||
|
|
||||||
|
[[4,5,10],[7,9],[2,[2,[3],[5,5,2]],5,2]]
|
||||||
|
[[10,1,[[5,3,6],1,7,[1],[7,9,8,5]],6,10],[6,5,[5,9]],[],[[6,1],8,3]]
|
||||||
|
|
||||||
|
[[6,[3,4,4],[],[8,[7,6,1,10],7,[4,6,1,4],3]],[10],[[0]],[[8,3,[8,4,4,8],8]]]
|
||||||
|
[[[10],[[5],3],1,4,0],[[1],2]]
|
||||||
|
|
||||||
|
[[5,2],[3,8,[]],[[[5,8]],5,2,9],[[5,1,6,[0,6,10,4,10]]]]
|
||||||
|
[[[[5,2,10,8],3],[[1]]],[0,[0],[3,[10,2,0,2],[]],[10,[8,2,7]],0],[[7,[5,2,0,7,8],[9,6,5,0],10],[[10,5],[4,4,9,6],[],4,6],0,[],9],[0,[[],[10,10],3],5],[[[10,10,3],[],[8,2,3],5,[2,1,9]]]]
|
||||||
|
|
||||||
|
[[4,2],[],[8,9,[],1],[],[]]
|
||||||
|
[[0,[10,[1,10,5],[3,2,6,7],5],[[7,3,10],6,8,[6,8,8,4,2],7],9],[0,2]]
|
||||||
|
|
||||||
|
[[[0,[],8],[[8,7,4],10,8,9],0,[2,6,[3,2,9,7],6]],[0,[0,5,6]],[2],[[[0,4,1,2,9],5,[3]],[[6,10,7,8,9],0,[1,4,6],[9,4,10,9]],[[],1]]]
|
||||||
|
[[3,[]],[[0,3],[8,[4,5,7,10,5]],10,[],[4]]]
|
||||||
|
|
||||||
|
[[[]],[],[[],[]],[],[]]
|
||||||
|
[[[8],[9,[10,4,0,9],2,6]],[0,[6,5,[4,5,10,8,2]],6],[8],[7],[10,[8]]]
|
||||||
|
|
||||||
|
[[],[4,[[4,7,0,5,3],2,[7,6,5,1]],8],[]]
|
||||||
|
[[[[2,2,3,7],0,[6,3],[5]],[8]],[[[10,5,5,10,2],0,8,[5]],[],[[8,10,1,10],1,[4],[1,8,1,8],1],10,[[10]]],[2,6,[[]],3,[8,[0],[0,0,0,9]]]]
|
||||||
|
|
||||||
|
[[5],[[[5,1,1],[1,2,10],5,10],2,[[3],[],3],10,[1]],[]]
|
||||||
|
[[7,5,7],[],[9,[6,4,8,[5,2,10,2],5],4],[],[3]]
|
||||||
|
|
||||||
|
[[8,5,6,10,[8,[10],0,3]],[6],[[[]],[6,5,[0,4,9,1,9],[1,6,2]],[[4,7,2,7],1]]]
|
||||||
|
[[8,[0,8,[8,4,4],[10,5],[10,10,1,2]],10],[1,10,[9,9,[10,1],7,6]]]
|
||||||
|
|
||||||
|
[[[5,7],[4,[0,1,1,2,6]],[5],3],[]]
|
||||||
|
[[4,[4,[6,6]]],[[[],[9,4,4,2,8]]],[[[7]],[3],[],[3]]]
|
||||||
|
|
||||||
|
[[[4,4,[0,3],5],3,6],[[4,[2,9],1,[]],2,0,[]],[6],[8,[[]]]]
|
||||||
|
[[10],[1,[8,[],10],3,9],[],[[5,7],7,8]]
|
||||||
|
|
||||||
|
[[[],3,5,[[3,4,8,2]]],[3],[10,[[2,3],1,9,[],[7,9]],[[5,6],10,3,0,1]]]
|
||||||
|
[[1],[5]]
|
||||||
+148
@@ -0,0 +1,148 @@
|
|||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
502,32 -> 507,32
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
516,32 -> 521,32
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
512,30 -> 517,30
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
520,130 -> 520,133 -> 515,133 -> 515,138 -> 533,138 -> 533,133 -> 525,133 -> 525,130
|
||||||
|
506,34 -> 511,34
|
||||||
|
529,112 -> 529,116 -> 526,116 -> 526,122 -> 541,122 -> 541,116 -> 535,116 -> 535,112
|
||||||
|
498,13 -> 498,15 -> 492,15 -> 492,23 -> 506,23 -> 506,15 -> 501,15 -> 501,13
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
523,63 -> 523,66 -> 515,66 -> 515,71 -> 529,71 -> 529,66 -> 528,66 -> 528,63
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
512,173 -> 517,173
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
498,13 -> 498,15 -> 492,15 -> 492,23 -> 506,23 -> 506,15 -> 501,15 -> 501,13
|
||||||
|
545,94 -> 550,94
|
||||||
|
539,100 -> 544,100
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
529,112 -> 529,116 -> 526,116 -> 526,122 -> 541,122 -> 541,116 -> 535,116 -> 535,112
|
||||||
|
553,100 -> 558,100
|
||||||
|
501,170 -> 506,170
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
498,13 -> 498,15 -> 492,15 -> 492,23 -> 506,23 -> 506,15 -> 501,15 -> 501,13
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
498,13 -> 498,15 -> 492,15 -> 492,23 -> 506,23 -> 506,15 -> 501,15 -> 501,13
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
546,100 -> 551,100
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
542,97 -> 547,97
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
535,97 -> 540,97
|
||||||
|
533,108 -> 533,109 -> 538,109 -> 538,108
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
509,32 -> 514,32
|
||||||
|
513,34 -> 518,34
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
520,130 -> 520,133 -> 515,133 -> 515,138 -> 533,138 -> 533,133 -> 525,133 -> 525,130
|
||||||
|
507,164 -> 512,164
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
557,103 -> 562,103
|
||||||
|
538,94 -> 543,94
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
520,130 -> 520,133 -> 515,133 -> 515,138 -> 533,138 -> 533,133 -> 525,133 -> 525,130
|
||||||
|
520,130 -> 520,133 -> 515,133 -> 515,138 -> 533,138 -> 533,133 -> 525,133 -> 525,130
|
||||||
|
498,13 -> 498,15 -> 492,15 -> 492,23 -> 506,23 -> 506,15 -> 501,15 -> 501,13
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
523,63 -> 523,66 -> 515,66 -> 515,71 -> 529,71 -> 529,66 -> 528,66 -> 528,63
|
||||||
|
501,28 -> 506,28
|
||||||
|
505,173 -> 510,173
|
||||||
|
531,87 -> 531,88 -> 543,88
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
520,130 -> 520,133 -> 515,133 -> 515,138 -> 533,138 -> 533,133 -> 525,133 -> 525,130
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
524,126 -> 524,127 -> 528,127 -> 528,126
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
523,63 -> 523,66 -> 515,66 -> 515,71 -> 529,71 -> 529,66 -> 528,66 -> 528,63
|
||||||
|
508,28 -> 513,28
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
523,63 -> 523,66 -> 515,66 -> 515,71 -> 529,71 -> 529,66 -> 528,66 -> 528,63
|
||||||
|
511,167 -> 516,167
|
||||||
|
549,97 -> 554,97
|
||||||
|
541,91 -> 546,91
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
520,34 -> 525,34
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
505,30 -> 510,30
|
||||||
|
543,103 -> 548,103
|
||||||
|
510,146 -> 515,146
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
498,173 -> 503,173
|
||||||
|
498,13 -> 498,15 -> 492,15 -> 492,23 -> 506,23 -> 506,15 -> 501,15 -> 501,13
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
523,63 -> 523,66 -> 515,66 -> 515,71 -> 529,71 -> 529,66 -> 528,66 -> 528,63
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
498,13 -> 498,15 -> 492,15 -> 492,23 -> 506,23 -> 506,15 -> 501,15 -> 501,13
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
533,108 -> 533,109 -> 538,109 -> 538,108
|
||||||
|
517,146 -> 522,146
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
513,144 -> 518,144
|
||||||
|
515,170 -> 520,170
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
520,130 -> 520,133 -> 515,133 -> 515,138 -> 533,138 -> 533,133 -> 525,133 -> 525,130
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
523,63 -> 523,66 -> 515,66 -> 515,71 -> 529,71 -> 529,66 -> 528,66 -> 528,63
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
519,173 -> 524,173
|
||||||
|
532,100 -> 537,100
|
||||||
|
524,126 -> 524,127 -> 528,127 -> 528,126
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
529,112 -> 529,116 -> 526,116 -> 526,122 -> 541,122 -> 541,116 -> 535,116 -> 535,112
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
521,148 -> 526,148
|
||||||
|
504,167 -> 509,167
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
529,112 -> 529,116 -> 526,116 -> 526,122 -> 541,122 -> 541,116 -> 535,116 -> 535,112
|
||||||
|
520,130 -> 520,133 -> 515,133 -> 515,138 -> 533,138 -> 533,133 -> 525,133 -> 525,130
|
||||||
|
514,148 -> 519,148
|
||||||
|
510,141 -> 515,141
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
533,108 -> 533,109 -> 538,109 -> 538,108
|
||||||
|
524,126 -> 524,127 -> 528,127 -> 528,126
|
||||||
|
550,103 -> 555,103
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
529,103 -> 534,103
|
||||||
|
504,26 -> 509,26
|
||||||
|
529,112 -> 529,116 -> 526,116 -> 526,122 -> 541,122 -> 541,116 -> 535,116 -> 535,112
|
||||||
|
508,170 -> 513,170
|
||||||
|
523,63 -> 523,66 -> 515,66 -> 515,71 -> 529,71 -> 529,66 -> 528,66 -> 528,63
|
||||||
|
499,34 -> 504,34
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
529,112 -> 529,116 -> 526,116 -> 526,122 -> 541,122 -> 541,116 -> 535,116 -> 535,112
|
||||||
|
495,32 -> 500,32
|
||||||
|
507,148 -> 512,148
|
||||||
|
515,60 -> 515,52 -> 515,60 -> 517,60 -> 517,55 -> 517,60 -> 519,60 -> 519,50 -> 519,60 -> 521,60 -> 521,56 -> 521,60 -> 523,60 -> 523,53 -> 523,60 -> 525,60 -> 525,53 -> 525,60
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
531,87 -> 531,88 -> 543,88
|
||||||
|
536,103 -> 541,103
|
||||||
|
501,161 -> 501,152 -> 501,161 -> 503,161 -> 503,157 -> 503,161 -> 505,161 -> 505,155 -> 505,161 -> 507,161 -> 507,154 -> 507,161 -> 509,161 -> 509,155 -> 509,161
|
||||||
|
522,84 -> 522,76 -> 522,84 -> 524,84 -> 524,75 -> 524,84 -> 526,84 -> 526,81 -> 526,84 -> 528,84 -> 528,74 -> 528,84 -> 530,84 -> 530,79 -> 530,84 -> 532,84 -> 532,77 -> 532,84 -> 534,84 -> 534,78 -> 534,84 -> 536,84 -> 536,80 -> 536,84
|
||||||
|
522,47 -> 522,43 -> 522,47 -> 524,47 -> 524,41 -> 524,47 -> 526,47 -> 526,39 -> 526,47 -> 528,47 -> 528,39 -> 528,47
|
||||||
|
498,30 -> 503,30
|
||||||
|
492,34 -> 497,34
|
||||||
|
529,112 -> 529,116 -> 526,116 -> 526,122 -> 541,122 -> 541,116 -> 535,116 -> 535,112
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
Sensor at x=13820, y=3995710: closest beacon is at x=1532002, y=3577287
|
||||||
|
Sensor at x=3286002, y=2959504: closest beacon is at x=3931431, y=2926694
|
||||||
|
Sensor at x=3654160, y=2649422: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=3702414, y=2602790: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=375280, y=2377181: closest beacon is at x=2120140, y=2591883
|
||||||
|
Sensor at x=3875726, y=2708666: closest beacon is at x=3931431, y=2926694
|
||||||
|
Sensor at x=3786107, y=2547075: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=2334266, y=3754737: closest beacon is at x=2707879, y=3424224
|
||||||
|
Sensor at x=1613400, y=1057722: closest beacon is at x=1686376, y=-104303
|
||||||
|
Sensor at x=3305964, y=2380628: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=1744420, y=3927424: closest beacon is at x=1532002, y=3577287
|
||||||
|
Sensor at x=3696849, y=2604845: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=2357787, y=401688: closest beacon is at x=1686376, y=-104303
|
||||||
|
Sensor at x=2127900, y=1984887: closest beacon is at x=2332340, y=2000000
|
||||||
|
Sensor at x=3705551, y=2604421: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=1783014, y=2978242: closest beacon is at x=2120140, y=2591883
|
||||||
|
Sensor at x=2536648, y=2910642: closest beacon is at x=2707879, y=3424224
|
||||||
|
Sensor at x=3999189, y=2989409: closest beacon is at x=3931431, y=2926694
|
||||||
|
Sensor at x=3939169, y=2382534: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=2792378, y=2002602: closest beacon is at x=2332340, y=2000000
|
||||||
|
Sensor at x=3520934, y=3617637: closest beacon is at x=2707879, y=3424224
|
||||||
|
Sensor at x=2614525, y=1628105: closest beacon is at x=2332340, y=2000000
|
||||||
|
Sensor at x=2828931, y=3996545: closest beacon is at x=2707879, y=3424224
|
||||||
|
Sensor at x=2184699, y=2161391: closest beacon is at x=2332340, y=2000000
|
||||||
|
Sensor at x=2272873, y=1816621: closest beacon is at x=2332340, y=2000000
|
||||||
|
Sensor at x=1630899, y=3675405: closest beacon is at x=1532002, y=3577287
|
||||||
|
Sensor at x=3683190, y=2619409: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=180960, y=185390: closest beacon is at x=187063, y=-1440697
|
||||||
|
Sensor at x=1528472, y=3321640: closest beacon is at x=1532002, y=3577287
|
||||||
|
Sensor at x=3993470, y=2905566: closest beacon is at x=3931431, y=2926694
|
||||||
|
Sensor at x=1684313, y=20931: closest beacon is at x=1686376, y=-104303
|
||||||
|
Sensor at x=2547761, y=2464195: closest beacon is at x=2120140, y=2591883
|
||||||
|
Sensor at x=3711518, y=845968: closest beacon is at x=3702627, y=2598480
|
||||||
|
Sensor at x=3925049, y=2897039: closest beacon is at x=3931431, y=2926694
|
||||||
|
Sensor at x=1590740, y=3586256: closest beacon is at x=1532002, y=3577287
|
||||||
|
Sensor at x=1033496, y=3762565: closest beacon is at x=1532002, y=3577287
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
Valve XB has flow rate=0; tunnels lead to valves WZ, LE
|
||||||
|
Valve BM has flow rate=0; tunnels lead to valves PL, RI
|
||||||
|
Valve GC has flow rate=0; tunnels lead to valves HN, IT
|
||||||
|
Valve RM has flow rate=0; tunnels lead to valves ZQ, YL
|
||||||
|
Valve ZM has flow rate=5; tunnels lead to valves SN, KE, UW, MY, GW
|
||||||
|
Valve UH has flow rate=0; tunnels lead to valves HM, HN
|
||||||
|
Valve GW has flow rate=0; tunnels lead to valves LE, ZM
|
||||||
|
Valve HN has flow rate=19; tunnels lead to valves UW, UH, GL, WZ, GC
|
||||||
|
Valve VT has flow rate=0; tunnels lead to valves ZD, PE
|
||||||
|
Valve VI has flow rate=0; tunnels lead to valves JS, AA
|
||||||
|
Valve YL has flow rate=12; tunnels lead to valves PM, MH, RM, CM
|
||||||
|
Valve LA has flow rate=0; tunnels lead to valves SN, IY
|
||||||
|
Valve CM has flow rate=0; tunnels lead to valves YL, UL
|
||||||
|
Valve JI has flow rate=24; tunnels lead to valves UV, WH, XW, OJ
|
||||||
|
Valve ZD has flow rate=25; tunnels lead to valves VB, XW, VT
|
||||||
|
Valve VB has flow rate=0; tunnels lead to valves QX, ZD
|
||||||
|
Valve FO has flow rate=0; tunnels lead to valves WH, PE
|
||||||
|
Valve JS has flow rate=0; tunnels lead to valves VI, IY
|
||||||
|
Valve RI has flow rate=0; tunnels lead to valves PE, BM
|
||||||
|
Valve XD has flow rate=14; tunnel leads to valve CP
|
||||||
|
Valve ES has flow rate=11; tunnels lead to valves GU, WU
|
||||||
|
Valve WZ has flow rate=0; tunnels lead to valves XB, HN
|
||||||
|
Valve HW has flow rate=0; tunnels lead to valves QY, LE
|
||||||
|
Valve KE has flow rate=0; tunnels lead to valves AA, ZM
|
||||||
|
Valve IY has flow rate=22; tunnels lead to valves JS, AB, LA, IT
|
||||||
|
Valve XW has flow rate=0; tunnels lead to valves ZD, JI
|
||||||
|
Valve BE has flow rate=0; tunnels lead to valves AB, LE
|
||||||
|
Valve QY has flow rate=23; tunnels lead to valves AM, HW, MY
|
||||||
|
Valve MH has flow rate=0; tunnels lead to valves YL, AM
|
||||||
|
Valve IT has flow rate=0; tunnels lead to valves GC, IY
|
||||||
|
Valve DA has flow rate=0; tunnels lead to valves QR, CP
|
||||||
|
Valve PM has flow rate=0; tunnels lead to valves LE, YL
|
||||||
|
Valve WU has flow rate=0; tunnels lead to valves SM, ES
|
||||||
|
Valve UL has flow rate=0; tunnels lead to valves CM, QR
|
||||||
|
Valve SM has flow rate=13; tunnel leads to valve WU
|
||||||
|
Valve XC has flow rate=0; tunnels lead to valves ZJ, AA
|
||||||
|
Valve OJ has flow rate=0; tunnels lead to valves GI, JI
|
||||||
|
Valve SN has flow rate=0; tunnels lead to valves LA, ZM
|
||||||
|
Valve WH has flow rate=0; tunnels lead to valves JI, FO
|
||||||
|
Valve UW has flow rate=0; tunnels lead to valves HN, ZM
|
||||||
|
Valve HM has flow rate=0; tunnels lead to valves UH, PE
|
||||||
|
Valve AB has flow rate=0; tunnels lead to valves BE, IY
|
||||||
|
Valve QR has flow rate=8; tunnels lead to valves WW, UL, DA
|
||||||
|
Valve UV has flow rate=0; tunnels lead to valves JI, FF
|
||||||
|
Valve ZQ has flow rate=20; tunnel leads to valve RM
|
||||||
|
Valve ZJ has flow rate=0; tunnels lead to valves PE, XC
|
||||||
|
Valve GL has flow rate=0; tunnels lead to valves HN, PL
|
||||||
|
Valve CP has flow rate=0; tunnels lead to valves DA, XD
|
||||||
|
Valve AM has flow rate=0; tunnels lead to valves QY, MH
|
||||||
|
Valve PL has flow rate=17; tunnels lead to valves GL, YE, BM, FF, QX
|
||||||
|
Valve YE has flow rate=0; tunnels lead to valves PL, AA
|
||||||
|
Valve PE has flow rate=4; tunnels lead to valves FO, RI, ZJ, VT, HM
|
||||||
|
Valve MY has flow rate=0; tunnels lead to valves QY, ZM
|
||||||
|
Valve QX has flow rate=0; tunnels lead to valves VB, PL
|
||||||
|
Valve GI has flow rate=0; tunnels lead to valves OJ, AA
|
||||||
|
Valve WW has flow rate=0; tunnels lead to valves GU, QR
|
||||||
|
Valve FF has flow rate=0; tunnels lead to valves UV, PL
|
||||||
|
Valve LE has flow rate=6; tunnels lead to valves HW, GW, XB, BE, PM
|
||||||
|
Valve GU has flow rate=0; tunnels lead to valves ES, WW
|
||||||
|
Valve AA has flow rate=0; tunnels lead to valves KE, GI, VI, YE, XC
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
><<<<>>>><>>><<><<<<>>>><<>>><>>><<<<>>>><<>>>><<<>>>><<<>>>><<<>>><<<<>><>><<<<>>><><<<><><>>>><<<<><<<<>><<<>>>><<>><><>>>><<<>>><<<>>><<>>>><>>>><>><>>><<>><><<<<><>><<<>>>><<<>>><<<>><>><<<>>><<<<>>>><><<<>>><<<>>><<<<><<<<>>><<<<>>><<<>>><<<<>>><<>>><<><<<>><<<>>><<<<><<<<>>><<<><<>>>><<<>><>>><<>>><<<><<<<>>><<><<<<>>>><<>>>><<>>>><<<<>>><><<<<><>><<<>>>><<<<>><>>>><>><>><>><<<>><<<>>>><<<>><<>><<<<><<<<><<>>>><<<<><<<>>><>><<<>>><<<><<<><<<<><<><<<>>><<<<>>>><<<<><<>><<<<>>><>>><<<<><<<>>>><<><>><<<<>><<<<>>>><<<><<<<><<<<>>><<<><<>>><>>><<<<>>><<>><<<<>>><<<><<<>><<<<>>>><<<<><<><<<<>>>><>>>><<<<>>>><<<>>>><<<><<>>><>>><<<<>><<<<>>><><>><<<>>>><<<<>><<<>><<>><<<>>><<<>>>><<<<>>>><<>>>><<>>>><><<<<>><<<<>>>><<<<>>><<<<>><>><<<>>><>>>><><<>><<>>><<<>>>><>>><<>><<<>><>>><>>><><>><>><<<><<<>>>><>><<<><<<>>><<<<><<>>>><<<><<<>>>><>><<<>>>><<<>>>><>>><><>>>><>><<><<<>>>><<>>>><<<>>><<<<>>><<<>><>>>><<<<>>>><>><<>>><<<<>>>><<<<><>>>><<>><<>>>><>><<<<>>>><<<<>><<<>>>><<>><><>><<<<>><<<>>>><<<>>><<>><><<<>>>><<>><>><<>><>><<<<>><<<>>><<<<>>><<>>>><<>>><<<<>>><>><<><<<>><>>><<<>><<<<>>>><<<>>><<>>><<<>>><<<<>>>><<<<>>><<<>>><<>>>><<>>><<<>>><<><<>>>><<>>>><<><<>>><<><<<>>>><<<<><<<<>><<<>>>><>>><<<<>>><<<<>>>><<>><<<<>>>><<<><<<><<>>>><<<>>>><<<>>>><<<>><<>>><>>><<<<>>><<<<>><<<>>><<<>><<<<>>><<<<><<><>>><<<<>>><<<<>>>><>><<<<>><<<<>>>><<<<><<<>>>><>><<<<><<<<>>>><>><<><<<>>><<>>><<<<>><<<><<<><>><<>>>><<<><<<<><<<>>>><<<<>><<>><<<<>>>><><<<><<<>>>><<>>>><<>><<<<>>>><><><<<<><><<>>><<><<>>><>>><<>><><<><<>>>><<<<><<<>>>><<>><><<>>>><<<<><><<<>>>><<>>><<<><<<>>>><>><<<<>>>><>>><<><>>>><>>>><<<><>>><>>>><<<>><<<>>><<<<>>>><<>>>><<<<>>>><<><>><<<<>><<<<>>><<>>><>>>><<><<>>><>>>><<><<><<><><<<>><>><<<<>>><<<>>>><<<><<<<>><>><>>><<<<><<<>>>><<<>>><><<<<>>><<<<><<<<>>>><>><>>><<<><<>><<<><>>><<<<>><><<<<><>><<>><<>><>><<<<><<<>><>>>><<>><<<<>>><><<<>><<>><<>><>>><>>>><<><>><<<<>>><>>><<>>><<>>>><<>><<<<>>><>><<<>>><<<>>><<<<>>>><<<><<<<>><<><<<><<<>>><<><<>><>><>>><<<>>><<>><<>>><<>><<>><>><<<<>>>><<<<>>><<<>>>><<<<>>><<<>><<<>><<<<>>>><<>><<<<><<<<>><<>>><><<><<<<>>>><><>>>><<<<>>>><<<<>>>><<>><<<<>>>><<<><>><<>>>><<>>>><<<<>>>><<<>>><>><<>>>><<<>>>><<<<>>><<<<>><<<<>>>><<>>><<>>>><>>><>>>><><>><<<<>>>><<<>>>><<<>><<>>><<<<>>><>>>><<>>>><<<><>>><><<>>>><<>>>><<<>>>><<<<><<<<>>>><>>>><>><<<>>><<<>>>><<<>><<<>>><>><<>>><<><><<><<>>>><>>><<<<>><><>><>>><<<<><>>><<<>>><<<><<<<>>><<<>><<<>>><<>>><<<<><<<<><>><><<<<>>><<<>><<>><<<>><<<<>><>><>>>><<>>><<<>><<<>><<<<>><><<<<>>><<<>>>><<<<>>><<>><>><<>>><><<>>><<<>>><<<>><<>>>><<<<>><<<<>>>><<<><<><<<<>><<<<>><<<>>>><>><<<><>>>><<>>>><<><<<>>>><<<<>><<<>>>><<>>><>><<<<>>>><<<<>>><>>>><<<<><<><<>><>><>>><<<><<<<><<<<>><<<>>><<<<>><<><<<<>>>><<<>>>><<<>>>><<<<>>><<><<>><<><<<<>>>><<<><<<<>>>><<>>><<<<>><>>>><<<<>><<<>>>><<><<<<>>>><<<>><>>>><><<<>><<<><<<>>><>>>><>>><<<<><<<<>>><<>>><<<>>><<<<><<<<>>>><<>>><<<>><<>>><><<<>>>><<><>>><<>><<<>>>><<<><>><<<>>><<>>>><<<>>>><>><<><>><<>>>><<<>>>><<<<>>>><<<>>><<<>><<<<><<<<>><><<><<<>><>>><<<<>>><<<<>><<<>>><<>><<<<><<<><<<><<<>>><<<<>>><<<<>><<>>><<>><<<<>>>><<>>>><<>>>><<>><>>><>>>><<>>>><<<>>><<<<>>><>>><>>>><<<>><<>>><<>>>><<>>>><<<>>><<>>><<<><<<>><>>>><<<>><>>><<<>>><>>>><>><<>>><<<<>>><<<<>><>>><<<<>>><<<<><<<>>><><>>><<<>>><>><>>>><<>>>><<<>><<>>><<>><<<<>><<<<><>>><<>><<<<>>><<<>>><<>>>><>>>><<<><>>>><<><><>>><<>>>><<<>>>><><>><<<<>><<<>>>><<<<><<<<>>>><<<<>><>>>><<<>>>><<><<>>>><<<<>>>><<<<>>><>><>>>><>>>><>><<>>>><>>>><<>>><<<<>>>><<>>><><<>>>><<>><<<<><<><>>>><<<<>><<><<><<>><<<><<<>><<<<>>><<<<>><<>><>>><<<<>>>><<<<>>>><<<<>>><><<<<><<<<><><<<<><<<<>>>><<<<>>>><><>>><<<<><<<<><<<><><<<<>><><<<><<<<>><>>><><><<<><>>><<><<>><<<>><<<>>>><<<<>>><<>><<<<><>>><>>><<>>>><<<<>>><<<>>>><<<>>>><<<>><<<>><<<<>>><<<<>><>>><<<<><>>>><<<>><>>><<>>><<<<>><<><<<>><>>><<<>><<<<>>><<<>>>><>>><><<<><<<>>>><<>>><<><>>>><>>>><<<<>>><><><>>>><<<<>><<<<>>><<>>><<<><<<>>>><<><<<>><<<>>>><<<<>>>><>>><<<>>><><<<>><<<<>><<<>>>><>><<><><<>><<<>><<<>>><<<<>>>><<<><<<<>><<<<>>>><<<<>>>><<><<<<>>><<<<>><<<<>><<<>><<<<>>><<>>>><<>>><>><<>>>><>>><>>><<<><>>>><<<>>><<<<><<<<>>><<><><>>>><<>>>><<>>>><<<<>>>><<><<><<<>>><<<>>>><<><<<><<>>><<<><<<>>>><<<<>>><<>>>><<>><><<<><<>><<>>><<<<>><>><<<>><<<<>><<<<><<>>><<><<<<>>>><<<>><<<<>><<>>>><>>>><>>><>>>><<<>>><<<>>>><<>>>><>><>><<<>><<<>>><<>>><<<<>>><<<<>>><<>>>><>>><>><<<<>>>><<>>>><<>>>><<<<>>>><>>>><><>>><<>>>><<<<><<>>>><<<<>><<<<>>>><<>><<<<><<<<>>><<<<>><<>>>><<<>>>><<<><>><<<><<>>><<<<>><<<>>><><<<<>><<<<>><>>><<<<>>><<<<>>>><>>>><<>>>><<>>><>>>><<<<>>><<>><<<><<><<<>>>><<<>>>><<<<><<>>><>><<<<><<<>>><>><><<<><<>>>><>>>><>><<>>><<>>>><<>>>><<<<>><<>><><<>>><<>><<>><<>>><>><<<<>>>><<>>>><<<<>>><<>><><<<><>><<<>><>>><>><<>>><><>>><<>>>><<<>>><<<<>>><<<>><<>><<<<>>><<<><<<>><<<<><<>><>><<<<>><<>>>><<<>><<<>>>><<<<>>>><<<<>><<>>><<<>>><<<>>>><<<<>>><<<<>>>><>><<<<>>>><<>>><><<>>>><<<<>>>><<<<>>>><>><<>><<<<><<<<>>><><>>><<<<>>><<><>>>><<<<><<<>>>><>>>><<<>>>><<<>>>><<>>><<>>><<<<><<<>><>>><<<><<<>>><Line truncated
|
||||||
+2025
File diff suppressed because it is too large.
Load diff
+1000
@@ -0,0 +1,1000 @@
|
|||||||
|
24-91,80-92
|
||||||
|
28-93,5-94
|
||||||
|
30-81,33-82
|
||||||
|
28-97,59-72
|
||||||
|
65-66,54-70
|
||||||
|
35-35,5-36
|
||||||
|
3-5,4-91
|
||||||
|
73-97,20-72
|
||||||
|
53-77,2-54
|
||||||
|
47-96,48-95
|
||||||
|
7-75,8-75
|
||||||
|
66-89,67-86
|
||||||
|
23-25,24-95
|
||||||
|
97-98,5-98
|
||||||
|
58-61,13-57
|
||||||
|
53-62,52-52
|
||||||
|
5-93,92-93
|
||||||
|
52-61,34-61
|
||||||
|
83-85,82-92
|
||||||
|
90-90,46-91
|
||||||
|
35-95,94-98
|
||||||
|
89-91,72-90
|
||||||
|
3-98,81-97
|
||||||
|
26-26,27-96
|
||||||
|
41-54,53-55
|
||||||
|
9-43,8-54
|
||||||
|
14-14,14-86
|
||||||
|
36-50,50-50
|
||||||
|
79-84,78-78
|
||||||
|
44-69,70-73
|
||||||
|
6-51,5-5
|
||||||
|
40-40,39-73
|
||||||
|
10-65,9-11
|
||||||
|
1-2,4-99
|
||||||
|
8-36,5-5
|
||||||
|
72-72,25-71
|
||||||
|
66-66,67-96
|
||||||
|
69-79,62-68
|
||||||
|
46-57,5-56
|
||||||
|
97-98,39-98
|
||||||
|
98-99,4-97
|
||||||
|
9-94,10-84
|
||||||
|
3-15,6-14
|
||||||
|
9-10,11-80
|
||||||
|
9-9,9-69
|
||||||
|
60-79,78-82
|
||||||
|
50-70,70-90
|
||||||
|
12-12,13-64
|
||||||
|
8-92,3-8
|
||||||
|
29-79,30-78
|
||||||
|
96-97,5-97
|
||||||
|
13-75,59-63
|
||||||
|
45-78,45-79
|
||||||
|
38-70,38-69
|
||||||
|
13-33,19-25
|
||||||
|
79-87,47-88
|
||||||
|
9-67,8-67
|
||||||
|
51-59,58-60
|
||||||
|
28-61,28-62
|
||||||
|
7-90,33-87
|
||||||
|
5-5,5-33
|
||||||
|
78-85,43-84
|
||||||
|
18-94,18-95
|
||||||
|
42-42,42-81
|
||||||
|
12-93,11-92
|
||||||
|
16-64,17-64
|
||||||
|
2-99,1-98
|
||||||
|
32-68,31-69
|
||||||
|
14-73,15-15
|
||||||
|
43-55,43-81
|
||||||
|
13-65,66-66
|
||||||
|
79-85,79-91
|
||||||
|
81-84,52-80
|
||||||
|
21-68,22-67
|
||||||
|
32-80,33-80
|
||||||
|
17-76,83-83
|
||||||
|
11-65,39-65
|
||||||
|
32-85,33-84
|
||||||
|
25-58,26-57
|
||||||
|
14-28,8-15
|
||||||
|
64-87,20-86
|
||||||
|
62-99,29-61
|
||||||
|
26-40,27-47
|
||||||
|
9-76,9-83
|
||||||
|
42-90,43-89
|
||||||
|
5-97,5-93
|
||||||
|
6-16,15-87
|
||||||
|
45-91,9-91
|
||||||
|
34-34,35-85
|
||||||
|
21-56,21-21
|
||||||
|
38-79,47-80
|
||||||
|
79-98,36-96
|
||||||
|
25-99,73-99
|
||||||
|
4-51,12-50
|
||||||
|
9-10,14-50
|
||||||
|
65-89,26-48
|
||||||
|
17-19,18-18
|
||||||
|
39-60,34-75
|
||||||
|
61-76,61-61
|
||||||
|
38-90,37-37
|
||||||
|
36-67,68-68
|
||||||
|
6-19,10-20
|
||||||
|
3-91,3-97
|
||||||
|
35-93,35-94
|
||||||
|
63-89,59-62
|
||||||
|
46-76,66-76
|
||||||
|
31-63,31-64
|
||||||
|
17-44,33-37
|
||||||
|
35-43,35-68
|
||||||
|
11-13,12-90
|
||||||
|
39-83,40-63
|
||||||
|
41-99,24-86
|
||||||
|
41-76,41-56
|
||||||
|
9-62,10-62
|
||||||
|
3-92,92-92
|
||||||
|
36-41,36-46
|
||||||
|
6-21,5-26
|
||||||
|
7-98,5-97
|
||||||
|
24-95,9-35
|
||||||
|
4-82,3-81
|
||||||
|
45-74,7-35
|
||||||
|
7-74,59-75
|
||||||
|
62-68,32-61
|
||||||
|
45-66,44-83
|
||||||
|
36-94,36-37
|
||||||
|
57-76,57-77
|
||||||
|
34-71,71-72
|
||||||
|
95-95,95-95
|
||||||
|
58-75,57-79
|
||||||
|
48-75,40-53
|
||||||
|
21-94,21-31
|
||||||
|
55-55,3-56
|
||||||
|
48-80,3-80
|
||||||
|
10-81,9-81
|
||||||
|
13-66,6-7
|
||||||
|
1-91,90-92
|
||||||
|
4-5,4-83
|
||||||
|
22-76,20-45
|
||||||
|
4-13,3-3
|
||||||
|
10-22,6-6
|
||||||
|
18-91,18-90
|
||||||
|
50-53,51-52
|
||||||
|
23-33,21-24
|
||||||
|
1-49,1-48
|
||||||
|
8-40,8-39
|
||||||
|
11-97,2-96
|
||||||
|
79-81,55-75
|
||||||
|
82-95,81-81
|
||||||
|
9-10,10-68
|
||||||
|
59-59,58-58
|
||||||
|
2-99,2-2
|
||||||
|
22-36,21-22
|
||||||
|
49-77,49-50
|
||||||
|
7-21,7-7
|
||||||
|
65-98,66-72
|
||||||
|
1-43,39-40
|
||||||
|
25-60,25-25
|
||||||
|
12-79,38-80
|
||||||
|
89-90,26-90
|
||||||
|
52-72,53-53
|
||||||
|
15-96,97-99
|
||||||
|
4-8,4-72
|
||||||
|
2-73,72-72
|
||||||
|
11-35,15-35
|
||||||
|
99-99,1-98
|
||||||
|
72-83,8-88
|
||||||
|
29-35,1-3
|
||||||
|
32-72,15-33
|
||||||
|
50-86,51-51
|
||||||
|
27-65,59-87
|
||||||
|
11-11,11-52
|
||||||
|
16-87,17-87
|
||||||
|
60-62,61-61
|
||||||
|
50-90,81-92
|
||||||
|
86-86,43-86
|
||||||
|
42-82,11-82
|
||||||
|
93-94,3-94
|
||||||
|
22-91,90-92
|
||||||
|
14-91,13-75
|
||||||
|
11-28,14-19
|
||||||
|
76-85,75-77
|
||||||
|
7-98,6-98
|
||||||
|
25-40,2-41
|
||||||
|
4-96,12-90
|
||||||
|
61-75,1-62
|
||||||
|
17-97,16-17
|
||||||
|
38-93,38-52
|
||||||
|
16-34,17-39
|
||||||
|
61-78,29-79
|
||||||
|
7-91,90-90
|
||||||
|
30-59,20-60
|
||||||
|
5-98,4-98
|
||||||
|
55-55,55-99
|
||||||
|
1-95,1-94
|
||||||
|
15-87,14-14
|
||||||
|
56-92,23-55
|
||||||
|
9-97,46-58
|
||||||
|
9-93,8-94
|
||||||
|
4-10,16-96
|
||||||
|
52-53,24-53
|
||||||
|
11-59,10-59
|
||||||
|
61-76,53-65
|
||||||
|
26-45,45-46
|
||||||
|
4-38,38-92
|
||||||
|
46-46,46-87
|
||||||
|
41-61,40-95
|
||||||
|
7-17,2-17
|
||||||
|
26-27,27-33
|
||||||
|
58-92,58-90
|
||||||
|
13-96,13-98
|
||||||
|
76-76,1-77
|
||||||
|
12-97,12-96
|
||||||
|
30-30,29-79
|
||||||
|
38-86,38-86
|
||||||
|
6-94,93-93
|
||||||
|
5-9,11-55
|
||||||
|
52-52,51-51
|
||||||
|
29-88,29-29
|
||||||
|
22-65,2-22
|
||||||
|
51-60,57-77
|
||||||
|
16-78,4-77
|
||||||
|
99-99,40-98
|
||||||
|
90-90,71-91
|
||||||
|
16-86,16-87
|
||||||
|
37-92,37-86
|
||||||
|
42-79,48-56
|
||||||
|
25-47,24-49
|
||||||
|
32-35,33-36
|
||||||
|
64-75,5-53
|
||||||
|
18-53,32-54
|
||||||
|
59-74,64-75
|
||||||
|
22-76,21-76
|
||||||
|
3-90,3-90
|
||||||
|
98-98,15-99
|
||||||
|
4-17,17-77
|
||||||
|
97-97,7-97
|
||||||
|
94-95,13-95
|
||||||
|
19-56,4-56
|
||||||
|
8-12,12-95
|
||||||
|
9-75,9-21
|
||||||
|
1-45,25-43
|
||||||
|
65-82,65-66
|
||||||
|
27-63,27-27
|
||||||
|
97-99,5-96
|
||||||
|
15-85,14-15
|
||||||
|
24-75,24-74
|
||||||
|
34-81,34-82
|
||||||
|
29-97,18-96
|
||||||
|
13-80,13-17
|
||||||
|
7-93,8-93
|
||||||
|
81-82,16-82
|
||||||
|
16-59,60-98
|
||||||
|
88-93,22-88
|
||||||
|
91-93,41-92
|
||||||
|
16-57,16-85
|
||||||
|
19-46,15-20
|
||||||
|
16-52,16-72
|
||||||
|
7-7,8-61
|
||||||
|
80-86,80-82
|
||||||
|
65-75,1-88
|
||||||
|
7-78,1-77
|
||||||
|
5-94,4-94
|
||||||
|
59-88,60-87
|
||||||
|
69-73,69-70
|
||||||
|
16-16,17-52
|
||||||
|
50-91,51-91
|
||||||
|
39-57,38-40
|
||||||
|
12-73,72-74
|
||||||
|
2-4,10-66
|
||||||
|
36-38,36-71
|
||||||
|
23-80,63-98
|
||||||
|
85-91,40-84
|
||||||
|
47-48,6-48
|
||||||
|
1-3,3-97
|
||||||
|
33-33,33-34
|
||||||
|
16-18,17-61
|
||||||
|
81-83,1-82
|
||||||
|
53-82,15-54
|
||||||
|
54-84,63-84
|
||||||
|
1-98,97-97
|
||||||
|
3-77,4-61
|
||||||
|
34-79,35-54
|
||||||
|
24-24,25-82
|
||||||
|
6-99,4-6
|
||||||
|
29-49,30-49
|
||||||
|
1-2,1-90
|
||||||
|
1-37,1-1
|
||||||
|
3-4,8-62
|
||||||
|
10-85,11-86
|
||||||
|
57-59,54-63
|
||||||
|
3-93,1-93
|
||||||
|
58-59,9-59
|
||||||
|
37-38,25-38
|
||||||
|
32-96,31-96
|
||||||
|
2-91,23-90
|
||||||
|
31-70,37-47
|
||||||
|
18-77,67-76
|
||||||
|
58-91,66-97
|
||||||
|
21-44,45-45
|
||||||
|
60-61,61-78
|
||||||
|
12-12,11-55
|
||||||
|
43-65,15-66
|
||||||
|
21-70,20-21
|
||||||
|
10-10,10-88
|
||||||
|
11-71,12-72
|
||||||
|
75-75,50-76
|
||||||
|
29-29,11-28
|
||||||
|
4-81,1-98
|
||||||
|
36-54,37-53
|
||||||
|
8-92,91-93
|
||||||
|
37-76,37-77
|
||||||
|
74-99,75-99
|
||||||
|
3-98,12-97
|
||||||
|
19-83,20-83
|
||||||
|
97-99,2-96
|
||||||
|
45-45,45-95
|
||||||
|
3-87,2-86
|
||||||
|
66-74,50-65
|
||||||
|
12-12,12-77
|
||||||
|
1-93,5-85
|
||||||
|
40-52,43-82
|
||||||
|
5-69,9-70
|
||||||
|
2-11,10-31
|
||||||
|
31-74,31-99
|
||||||
|
40-96,41-64
|
||||||
|
12-38,11-13
|
||||||
|
18-55,18-88
|
||||||
|
54-84,53-54
|
||||||
|
10-95,5-94
|
||||||
|
32-70,63-71
|
||||||
|
20-84,8-47
|
||||||
|
61-87,86-87
|
||||||
|
16-31,4-16
|
||||||
|
1-97,1-96
|
||||||
|
1-5,6-28
|
||||||
|
73-73,38-72
|
||||||
|
23-50,22-22
|
||||||
|
27-93,27-36
|
||||||
|
99-99,6-99
|
||||||
|
99-99,1-99
|
||||||
|
99-99,34-75
|
||||||
|
7-24,18-24
|
||||||
|
5-43,9-18
|
||||||
|
3-6,5-62
|
||||||
|
35-67,17-66
|
||||||
|
16-45,8-44
|
||||||
|
2-90,2-91
|
||||||
|
48-97,96-97
|
||||||
|
35-74,7-73
|
||||||
|
25-86,85-85
|
||||||
|
13-78,13-89
|
||||||
|
2-79,79-79
|
||||||
|
5-98,1-98
|
||||||
|
66-66,64-68
|
||||||
|
15-85,20-86
|
||||||
|
25-41,42-73
|
||||||
|
18-30,29-29
|
||||||
|
16-20,16-75
|
||||||
|
4-6,5-89
|
||||||
|
7-56,8-57
|
||||||
|
11-64,11-65
|
||||||
|
7-7,9-86
|
||||||
|
6-68,6-72
|
||||||
|
4-92,4-91
|
||||||
|
26-28,25-65
|
||||||
|
2-57,1-58
|
||||||
|
96-98,22-95
|
||||||
|
2-82,82-82
|
||||||
|
96-98,95-97
|
||||||
|
11-91,90-90
|
||||||
|
8-87,7-8
|
||||||
|
64-92,76-93
|
||||||
|
2-4,4-30
|
||||||
|
53-92,49-61
|
||||||
|
17-50,18-51
|
||||||
|
8-64,7-64
|
||||||
|
35-60,5-36
|
||||||
|
1-6,6-85
|
||||||
|
7-62,62-62
|
||||||
|
38-42,50-54
|
||||||
|
3-3,3-60
|
||||||
|
39-48,50-86
|
||||||
|
1-97,16-89
|
||||||
|
44-72,73-84
|
||||||
|
14-68,16-68
|
||||||
|
7-55,8-8
|
||||||
|
13-79,19-79
|
||||||
|
31-94,95-97
|
||||||
|
30-63,19-31
|
||||||
|
15-83,52-83
|
||||||
|
27-27,27-83
|
||||||
|
72-72,3-71
|
||||||
|
35-99,1-98
|
||||||
|
29-80,29-88
|
||||||
|
40-71,20-70
|
||||||
|
61-93,60-94
|
||||||
|
3-93,1-93
|
||||||
|
4-4,5-99
|
||||||
|
22-69,10-26
|
||||||
|
42-74,42-75
|
||||||
|
18-39,19-38
|
||||||
|
37-43,43-92
|
||||||
|
29-31,16-30
|
||||||
|
7-95,7-7
|
||||||
|
72-73,72-72
|
||||||
|
9-90,91-98
|
||||||
|
7-51,8-47
|
||||||
|
28-88,89-94
|
||||||
|
3-94,4-94
|
||||||
|
20-41,37-51
|
||||||
|
19-34,4-34
|
||||||
|
13-63,64-68
|
||||||
|
5-98,5-90
|
||||||
|
24-93,24-73
|
||||||
|
26-56,11-56
|
||||||
|
2-75,33-76
|
||||||
|
1-99,2-96
|
||||||
|
44-55,54-56
|
||||||
|
64-99,64-80
|
||||||
|
41-64,41-64
|
||||||
|
15-80,17-75
|
||||||
|
57-59,58-90
|
||||||
|
5-12,7-58
|
||||||
|
16-50,17-17
|
||||||
|
41-48,40-47
|
||||||
|
31-32,31-92
|
||||||
|
1-91,1-37
|
||||||
|
53-67,49-77
|
||||||
|
3-75,2-79
|
||||||
|
55-76,47-60
|
||||||
|
42-42,42-58
|
||||||
|
20-42,20-41
|
||||||
|
94-98,51-97
|
||||||
|
1-44,1-45
|
||||||
|
19-50,2-51
|
||||||
|
28-82,29-94
|
||||||
|
18-97,18-18
|
||||||
|
41-89,14-41
|
||||||
|
3-36,5-35
|
||||||
|
64-85,31-86
|
||||||
|
72-96,95-96
|
||||||
|
11-18,18-87
|
||||||
|
19-63,62-62
|
||||||
|
16-17,16-94
|
||||||
|
97-97,1-98
|
||||||
|
22-95,23-96
|
||||||
|
16-16,17-35
|
||||||
|
25-96,43-96
|
||||||
|
50-87,50-50
|
||||||
|
3-92,3-89
|
||||||
|
20-78,20-20
|
||||||
|
53-53,54-89
|
||||||
|
5-43,8-44
|
||||||
|
39-85,38-38
|
||||||
|
47-76,46-77
|
||||||
|
35-78,77-79
|
||||||
|
28-47,27-29
|
||||||
|
39-39,36-40
|
||||||
|
87-98,76-78
|
||||||
|
30-35,30-63
|
||||||
|
39-53,21-30
|
||||||
|
30-30,30-93
|
||||||
|
65-97,19-96
|
||||||
|
74-77,73-98
|
||||||
|
21-95,6-22
|
||||||
|
36-89,47-88
|
||||||
|
99-99,8-98
|
||||||
|
22-68,25-69
|
||||||
|
38-90,38-42
|
||||||
|
39-88,17-39
|
||||||
|
79-85,78-84
|
||||||
|
11-74,7-7
|
||||||
|
38-45,38-45
|
||||||
|
57-90,56-58
|
||||||
|
1-2,3-83
|
||||||
|
2-48,7-49
|
||||||
|
30-95,30-96
|
||||||
|
71-96,71-79
|
||||||
|
4-89,96-99
|
||||||
|
44-93,44-99
|
||||||
|
16-16,15-98
|
||||||
|
7-95,10-91
|
||||||
|
12-15,23-41
|
||||||
|
39-62,38-92
|
||||||
|
5-10,7-12
|
||||||
|
51-91,14-52
|
||||||
|
12-12,12-76
|
||||||
|
54-58,56-59
|
||||||
|
9-9,10-56
|
||||||
|
11-42,49-70
|
||||||
|
14-76,19-77
|
||||||
|
24-33,27-33
|
||||||
|
23-98,23-88
|
||||||
|
35-78,51-85
|
||||||
|
1-1,3-86
|
||||||
|
1-2,2-94
|
||||||
|
30-36,22-58
|
||||||
|
48-48,47-51
|
||||||
|
7-82,83-99
|
||||||
|
31-77,31-31
|
||||||
|
4-6,9-97
|
||||||
|
63-85,10-86
|
||||||
|
30-80,28-81
|
||||||
|
1-1,1-98
|
||||||
|
7-97,18-89
|
||||||
|
52-89,21-88
|
||||||
|
9-69,14-70
|
||||||
|
71-72,34-72
|
||||||
|
55-61,10-97
|
||||||
|
59-88,55-55
|
||||||
|
31-54,31-53
|
||||||
|
26-35,45-98
|
||||||
|
36-79,6-99
|
||||||
|
2-3,2-41
|
||||||
|
6-85,6-84
|
||||||
|
9-97,1-95
|
||||||
|
16-45,43-46
|
||||||
|
5-81,4-80
|
||||||
|
4-91,90-92
|
||||||
|
44-86,30-87
|
||||||
|
72-74,53-73
|
||||||
|
20-20,15-15
|
||||||
|
40-62,40-40
|
||||||
|
28-99,34-62
|
||||||
|
4-89,4-94
|
||||||
|
42-58,46-59
|
||||||
|
43-72,42-81
|
||||||
|
81-83,22-82
|
||||||
|
29-43,10-53
|
||||||
|
47-55,46-70
|
||||||
|
10-84,4-5
|
||||||
|
10-93,11-94
|
||||||
|
38-74,74-74
|
||||||
|
14-48,13-14
|
||||||
|
11-91,10-10
|
||||||
|
9-11,10-10
|
||||||
|
7-60,6-42
|
||||||
|
3-93,92-92
|
||||||
|
14-69,14-68
|
||||||
|
32-45,41-46
|
||||||
|
2-99,3-99
|
||||||
|
16-83,15-83
|
||||||
|
39-44,39-40
|
||||||
|
2-76,75-77
|
||||||
|
91-92,20-82
|
||||||
|
19-50,24-51
|
||||||
|
31-77,9-78
|
||||||
|
3-99,70-99
|
||||||
|
35-36,36-65
|
||||||
|
6-24,7-68
|
||||||
|
64-91,64-92
|
||||||
|
95-96,95-96
|
||||||
|
44-58,2-57
|
||||||
|
61-61,44-62
|
||||||
|
11-98,11-55
|
||||||
|
38-47,20-46
|
||||||
|
8-15,8-97
|
||||||
|
29-53,27-29
|
||||||
|
84-95,59-89
|
||||||
|
61-62,61-85
|
||||||
|
19-77,20-46
|
||||||
|
88-92,92-92
|
||||||
|
2-99,98-99
|
||||||
|
10-79,10-10
|
||||||
|
6-91,20-88
|
||||||
|
14-74,10-10
|
||||||
|
13-34,12-35
|
||||||
|
27-87,86-86
|
||||||
|
1-1,1-86
|
||||||
|
28-31,27-79
|
||||||
|
38-80,21-73
|
||||||
|
23-64,22-24
|
||||||
|
38-94,93-95
|
||||||
|
96-98,10-95
|
||||||
|
50-51,49-50
|
||||||
|
74-88,81-89
|
||||||
|
27-62,24-28
|
||||||
|
49-49,48-92
|
||||||
|
3-5,5-8
|
||||||
|
47-87,47-76
|
||||||
|
66-86,50-67
|
||||||
|
78-96,77-77
|
||||||
|
3-91,2-92
|
||||||
|
88-91,5-87
|
||||||
|
47-88,49-88
|
||||||
|
56-80,55-79
|
||||||
|
96-96,2-96
|
||||||
|
19-38,30-39
|
||||||
|
6-93,93-93
|
||||||
|
36-98,36-36
|
||||||
|
37-37,14-37
|
||||||
|
17-17,18-67
|
||||||
|
10-83,66-88
|
||||||
|
25-89,28-88
|
||||||
|
47-99,1-97
|
||||||
|
87-87,18-86
|
||||||
|
55-60,55-55
|
||||||
|
15-15,23-61
|
||||||
|
33-67,32-77
|
||||||
|
37-42,38-42
|
||||||
|
41-41,23-40
|
||||||
|
54-66,53-68
|
||||||
|
57-98,53-76
|
||||||
|
14-92,14-93
|
||||||
|
12-96,12-13
|
||||||
|
43-43,14-42
|
||||||
|
23-91,45-54
|
||||||
|
36-59,58-58
|
||||||
|
6-6,7-90
|
||||||
|
31-38,37-39
|
||||||
|
8-94,7-94
|
||||||
|
94-94,87-94
|
||||||
|
35-78,36-91
|
||||||
|
37-90,68-75
|
||||||
|
93-93,9-92
|
||||||
|
39-80,35-84
|
||||||
|
16-89,16-82
|
||||||
|
1-86,2-37
|
||||||
|
22-75,31-97
|
||||||
|
1-97,96-98
|
||||||
|
70-82,66-81
|
||||||
|
8-94,93-94
|
||||||
|
5-94,5-5
|
||||||
|
4-75,5-74
|
||||||
|
65-65,44-80
|
||||||
|
33-97,96-97
|
||||||
|
4-58,48-59
|
||||||
|
5-99,5-5
|
||||||
|
62-70,49-69
|
||||||
|
37-42,36-41
|
||||||
|
1-98,1-99
|
||||||
|
91-92,5-92
|
||||||
|
80-89,1-80
|
||||||
|
15-92,74-93
|
||||||
|
26-93,25-25
|
||||||
|
43-46,41-45
|
||||||
|
14-14,15-75
|
||||||
|
29-29,30-99
|
||||||
|
64-98,64-97
|
||||||
|
14-86,87-99
|
||||||
|
5-6,5-27
|
||||||
|
50-75,34-75
|
||||||
|
9-24,23-94
|
||||||
|
77-78,76-77
|
||||||
|
11-27,2-43
|
||||||
|
98-99,58-99
|
||||||
|
8-87,8-9
|
||||||
|
35-35,35-38
|
||||||
|
22-85,2-23
|
||||||
|
39-84,49-70
|
||||||
|
7-15,15-77
|
||||||
|
98-98,7-97
|
||||||
|
42-47,15-41
|
||||||
|
27-34,27-27
|
||||||
|
37-37,38-91
|
||||||
|
33-81,33-80
|
||||||
|
30-51,11-52
|
||||||
|
79-80,76-80
|
||||||
|
59-98,13-77
|
||||||
|
52-55,33-53
|
||||||
|
3-67,68-68
|
||||||
|
3-72,72-83
|
||||||
|
20-43,24-51
|
||||||
|
75-89,29-76
|
||||||
|
31-56,55-56
|
||||||
|
25-50,24-49
|
||||||
|
93-99,98-98
|
||||||
|
2-76,2-75
|
||||||
|
8-80,8-81
|
||||||
|
16-18,45-60
|
||||||
|
1-1,2-96
|
||||||
|
55-82,54-93
|
||||||
|
60-89,83-88
|
||||||
|
55-88,11-66
|
||||||
|
2-99,98-98
|
||||||
|
83-85,11-84
|
||||||
|
54-69,12-55
|
||||||
|
10-10,10-74
|
||||||
|
11-21,16-22
|
||||||
|
50-71,68-75
|
||||||
|
28-99,11-78
|
||||||
|
41-51,39-87
|
||||||
|
10-11,16-92
|
||||||
|
72-72,13-72
|
||||||
|
92-92,2-91
|
||||||
|
27-46,45-47
|
||||||
|
13-47,9-46
|
||||||
|
1-99,2-18
|
||||||
|
21-96,21-95
|
||||||
|
5-5,5-61
|
||||||
|
66-66,59-66
|
||||||
|
30-82,30-77
|
||||||
|
19-19,20-58
|
||||||
|
82-89,2-99
|
||||||
|
15-15,15-99
|
||||||
|
10-10,11-51
|
||||||
|
47-97,47-92
|
||||||
|
18-20,19-56
|
||||||
|
7-11,20-82
|
||||||
|
24-73,24-70
|
||||||
|
45-45,46-50
|
||||||
|
13-91,65-74
|
||||||
|
19-82,19-77
|
||||||
|
26-98,2-58
|
||||||
|
87-88,17-87
|
||||||
|
44-51,22-51
|
||||||
|
3-95,11-86
|
||||||
|
5-49,15-50
|
||||||
|
14-77,13-77
|
||||||
|
98-99,1-99
|
||||||
|
15-60,14-65
|
||||||
|
4-8,8-21
|
||||||
|
39-86,85-97
|
||||||
|
25-92,24-24
|
||||||
|
29-29,29-78
|
||||||
|
9-63,8-8
|
||||||
|
76-76,14-55
|
||||||
|
15-88,16-84
|
||||||
|
9-89,90-94
|
||||||
|
4-89,3-90
|
||||||
|
4-33,32-64
|
||||||
|
4-98,2-98
|
||||||
|
78-86,20-81
|
||||||
|
63-89,62-88
|
||||||
|
8-56,7-97
|
||||||
|
25-44,25-45
|
||||||
|
3-32,4-8
|
||||||
|
53-86,53-87
|
||||||
|
5-85,3-95
|
||||||
|
18-24,8-94
|
||||||
|
93-98,92-94
|
||||||
|
39-53,54-69
|
||||||
|
28-73,17-72
|
||||||
|
3-93,4-9
|
||||||
|
8-46,8-16
|
||||||
|
3-3,2-78
|
||||||
|
13-22,23-26
|
||||||
|
71-72,47-72
|
||||||
|
3-8,7-20
|
||||||
|
6-73,1-6
|
||||||
|
31-99,33-91
|
||||||
|
90-99,89-89
|
||||||
|
9-81,7-7
|
||||||
|
58-59,58-63
|
||||||
|
64-83,83-83
|
||||||
|
4-5,4-5
|
||||||
|
54-92,19-86
|
||||||
|
7-8,8-63
|
||||||
|
31-48,48-80
|
||||||
|
22-86,8-22
|
||||||
|
76-91,73-76
|
||||||
|
62-78,9-79
|
||||||
|
16-93,19-94
|
||||||
|
5-95,5-93
|
||||||
|
13-80,14-81
|
||||||
|
6-80,79-79
|
||||||
|
78-84,77-79
|
||||||
|
40-83,78-84
|
||||||
|
11-68,5-6
|
||||||
|
81-81,23-82
|
||||||
|
1-27,29-29
|
||||||
|
50-60,51-53
|
||||||
|
44-49,44-45
|
||||||
|
52-62,51-98
|
||||||
|
1-98,1-99
|
||||||
|
39-97,98-99
|
||||||
|
25-52,15-92
|
||||||
|
34-99,34-34
|
||||||
|
10-35,5-69
|
||||||
|
11-11,12-69
|
||||||
|
47-53,53-53
|
||||||
|
92-94,7-93
|
||||||
|
8-8,8-81
|
||||||
|
28-85,28-84
|
||||||
|
39-88,33-34
|
||||||
|
66-83,65-86
|
||||||
|
45-94,45-61
|
||||||
|
36-60,14-36
|
||||||
|
10-40,11-90
|
||||||
|
23-75,24-51
|
||||||
|
61-63,7-62
|
||||||
|
68-83,82-82
|
||||||
|
55-60,55-73
|
||||||
|
9-44,2-44
|
||||||
|
11-95,95-97
|
||||||
|
10-62,9-65
|
||||||
|
81-81,82-98
|
||||||
|
6-56,6-57
|
||||||
|
17-50,34-50
|
||||||
|
4-34,34-34
|
||||||
|
20-98,19-21
|
||||||
|
25-39,25-58
|
||||||
|
40-79,8-80
|
||||||
|
14-57,14-58
|
||||||
|
94-95,67-95
|
||||||
|
17-24,15-24
|
||||||
|
16-18,17-89
|
||||||
|
6-58,5-57
|
||||||
|
6-99,6-37
|
||||||
|
3-3,3-17
|
||||||
|
46-74,47-66
|
||||||
|
16-38,17-17
|
||||||
|
22-97,13-23
|
||||||
|
99-99,38-99
|
||||||
|
52-65,62-62
|
||||||
|
22-24,17-23
|
||||||
|
60-98,1-97
|
||||||
|
3-71,7-21
|
||||||
|
10-94,10-95
|
||||||
|
38-90,38-89
|
||||||
|
24-45,23-62
|
||||||
|
12-14,13-95
|
||||||
|
37-87,38-53
|
||||||
|
14-45,13-45
|
||||||
|
77-77,27-77
|
||||||
|
25-83,17-25
|
||||||
|
21-94,9-99
|
||||||
|
73-73,49-73
|
||||||
|
50-82,49-64
|
||||||
|
7-95,95-95
|
||||||
|
64-86,63-87
|
||||||
|
33-85,2-50
|
||||||
|
33-87,34-53
|
||||||
|
13-31,30-31
|
||||||
|
62-63,63-91
|
||||||
|
9-91,91-92
|
||||||
|
16-72,15-72
|
||||||
|
32-40,39-40
|
||||||
|
10-98,10-93
|
||||||
|
1-3,2-18
|
||||||
|
12-62,12-43
|
||||||
|
35-68,34-69
|
||||||
|
50-52,32-51
|
||||||
|
4-37,4-35
|
||||||
|
6-94,65-96
|
||||||
|
63-88,44-62
|
||||||
|
17-49,9-49
|
||||||
|
20-49,20-48
|
||||||
|
7-91,6-91
|
||||||
|
33-63,34-63
|
||||||
|
62-63,63-89
|
||||||
|
9-62,10-62
|
||||||
|
31-31,32-38
|
||||||
|
77-87,15-87
|
||||||
|
34-89,42-89
|
||||||
|
1-2,3-79
|
||||||
|
59-65,58-87
|
||||||
|
4-57,2-56
|
||||||
|
34-54,13-34
|
||||||
|
41-95,5-54
|
||||||
|
28-76,77-86
|
||||||
|
13-13,12-42
|
||||||
|
12-97,12-96
|
||||||
|
20-27,26-50
|
||||||
|
70-84,70-72
|
||||||
|
47-75,48-69
|
||||||
|
5-75,75-75
|
||||||
|
25-80,22-79
|
||||||
|
28-78,79-79
|
||||||
|
89-89,11-93
|
||||||
|
39-74,75-75
|
||||||
|
20-88,20-87
|
||||||
|
79-80,37-78
|
||||||
|
7-17,16-18
|
||||||
|
31-68,31-68
|
||||||
|
18-36,18-18
|
||||||
|
73-96,35-73
|
||||||
|
28-98,27-29
|
||||||
|
26-75,19-74
|
||||||
|
2-4,3-48
|
||||||
|
2-3,4-79
|
||||||
|
4-93,92-92
|
||||||
|
58-89,70-89
|
||||||
|
1-99,2-68
|
||||||
|
57-78,56-56
|
||||||
|
10-46,10-39
|
||||||
|
6-61,6-60
|
||||||
|
51-90,50-90
|
||||||
|
27-90,27-28
|
||||||
|
45-45,1-44
|
||||||
|
18-31,13-31
|
||||||
|
25-51,18-52
|
||||||
|
7-28,4-29
|
||||||
|
93-93,6-93
|
||||||
|
9-50,8-51
|
||||||
|
92-94,1-93
|
||||||
|
29-91,30-30
|
||||||
|
25-75,24-75
|
||||||
|
55-55,15-55
|
||||||
|
70-73,62-71
|
||||||
|
8-84,8-42
|
||||||
|
50-76,46-57
|
||||||
|
45-80,44-79
|
||||||
|
6-86,7-87
|
||||||
|
8-83,7-82
|
||||||
|
4-30,8-31
|
||||||
|
57-95,58-96
|
||||||
|
49-50,50-79
|
||||||
|
90-92,89-95
|
||||||
|
24-24,25-98
|
||||||
|
60-75,69-75
|
||||||
|
9-83,20-69
|
||||||
|
32-33,32-36
|
||||||
|
3-3,2-98
|
||||||
|
1-84,83-85
|
||||||
|
69-99,99-99
|
||||||
|
92-97,87-92
|
||||||
|
71-96,72-97
|
||||||
|
49-49,49-66
|
||||||
|
18-18,35-75
|
||||||
|
7-94,7-7
|
||||||
|
3-48,45-92
|
||||||
|
47-86,86-86
|
||||||
|
10-42,7-66
|
||||||
|
11-85,12-96
|
||||||
|
39-77,17-39
|
||||||
|
14-24,3-23
|
||||||
|
23-23,23-23
|
||||||
|
66-66,54-67
|
||||||
|
29-29,30-71
|
||||||
|
20-89,56-90
|
||||||
|
41-56,40-57
|
||||||
|
1-99,3-97
|
||||||
|
4-92,4-98
|
||||||
|
7-39,38-38
|
||||||
|
69-71,68-73
|
||||||
|
95-97,13-96
|
||||||
|
55-84,54-75
|
||||||
|
61-79,64-88
|
||||||
|
97-98,3-98
|
||||||
|
9-42,6-41
|
||||||
|
36-86,35-36
|
||||||
|
8-91,9-86
|
||||||
|
16-45,58-79
|
||||||
|
43-43,11-44
|
||||||
|
8-74,9-73
|
||||||
|
2-78,3-78
|
||||||
|
76-86,83-94
|
||||||
|
1-96,2-97
|
||||||
|
49-79,49-78
|
||||||
|
1-1,3-76
|
||||||
|
74-89,21-90
|
||||||
|
7-97,1-2
|
||||||
|
38-73,73-73
|
||||||
|
24-76,29-77
|
||||||
|
4-43,2-2
|
||||||
|
19-20,20-96
|
||||||
|
56-77,51-77
|
||||||
|
10-82,10-65
|
||||||
|
58-71,17-94
|
||||||
|
20-74,74-87
|
||||||
|
28-84,28-83
|
||||||
|
5-81,87-89
|
||||||
|
9-40,9-24
|
||||||
|
38-80,39-81
|
||||||
|
36-36,36-37
|
||||||
|
76-76,33-76
|
||||||
|
62-62,1-62
|
||||||
|
11-27,21-25
|
||||||
|
13-59,44-59
|
||||||
|
36-89,36-37
|
||||||
|
53-70,45-69
|
||||||
|
5-42,41-41
|
||||||
|
49-49,9-50
|
||||||
|
35-59,12-35
|
||||||
|
32-63,18-63
|
||||||
|
38-69,37-71
|
||||||
|
70-97,96-96
|
||||||
|
52-80,53-75
|
||||||
|
43-43,44-94
|
||||||
|
49-83,52-84
|
||||||
|
11-76,10-98
|
||||||
|
4-91,90-92
|
||||||
|
26-54,26-30
|
||||||
|
57-86,57-58
|
||||||
|
3-97,96-96
|
||||||
|
1-1,3-98
|
||||||
|
24-36,36-67
|
||||||
|
8-64,3-64
|
||||||
|
39-98,14-98
|
||||||
|
59-62,59-63
|
||||||
|
30-42,30-31
|
||||||
|
3-87,2-4
|
||||||
|
6-79,7-80
|
||||||
|
7-66,67-80
|
||||||
|
30-48,18-47
|
||||||
|
91-96,82-95
|
||||||
|
4-78,4-5
|
||||||
|
67-68,24-68
|
||||||
|
7-7,8-59
|
||||||
|
1-83,5-79
|
||||||
|
50-67,34-66
|
||||||
|
27-74,26-73
|
||||||
|
7-94,94-97
|
||||||
|
2-27,3-18
|
||||||
|
13-55,56-56
|
||||||
|
3-3,4-40
|
||||||
|
52-66,52-52
|
||||||
|
40-40,39-81
|
||||||
|
3-54,1-47
|
||||||
+511
@@ -0,0 +1,511 @@
|
|||||||
|
[B] [N] [H]
|
||||||
|
[V] [P] [T] [V] [P]
|
||||||
|
[W] [C] [T] [S] [H] [N]
|
||||||
|
[T] [J] [Z] [M] [N] [F] [L]
|
||||||
|
[Q] [W] [N] [J] [T] [Q] [R] [B]
|
||||||
|
[N] [B] [Q] [R] [V] [F] [D] [F] [M]
|
||||||
|
[H] [W] [S] [J] [P] [W] [L] [P] [S]
|
||||||
|
[D] [D] [T] [F] [G] [B] [B] [H] [Z]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 7 from 4 to 2
|
||||||
|
move 10 from 2 to 7
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 8 from 6 to 4
|
||||||
|
move 7 from 1 to 8
|
||||||
|
move 6 from 8 to 1
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 8 from 7 to 3
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 5 from 3 to 2
|
||||||
|
move 5 from 2 to 1
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 5 from 8 to 7
|
||||||
|
move 12 from 7 to 4
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 9 from 1 to 7
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 15 from 7 to 2
|
||||||
|
move 4 from 7 to 9
|
||||||
|
move 6 from 9 to 2
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 8 from 2 to 5
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 9 from 5 to 9
|
||||||
|
move 7 from 4 to 2
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 6 from 9 to 2
|
||||||
|
move 3 from 9 to 7
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 7 from 2 to 6
|
||||||
|
move 7 from 4 to 1
|
||||||
|
move 3 from 1 to 8
|
||||||
|
move 2 from 1 to 8
|
||||||
|
move 4 from 8 to 2
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 19 from 2 to 7
|
||||||
|
move 8 from 4 to 7
|
||||||
|
move 18 from 7 to 1
|
||||||
|
move 11 from 7 to 4
|
||||||
|
move 15 from 1 to 7
|
||||||
|
move 9 from 4 to 3
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 9 from 4 to 5
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 8 from 6 to 5
|
||||||
|
move 3 from 2 to 5
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 4 from 4 to 3
|
||||||
|
move 8 from 5 to 1
|
||||||
|
move 13 from 1 to 6
|
||||||
|
move 12 from 7 to 1
|
||||||
|
move 12 from 6 to 3
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 3 from 1 to 9
|
||||||
|
move 12 from 3 to 8
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 5 from 5 to 1
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 10 from 8 to 9
|
||||||
|
move 13 from 9 to 2
|
||||||
|
move 10 from 3 to 4
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 13 from 2 to 5
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 7 from 1 to 4
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 10 from 5 to 8
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 4 from 1 to 4
|
||||||
|
move 12 from 4 to 2
|
||||||
|
move 10 from 5 to 3
|
||||||
|
move 6 from 2 to 1
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 3 from 4 to 8
|
||||||
|
move 6 from 1 to 7
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 12 from 8 to 2
|
||||||
|
move 3 from 4 to 9
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 8 from 2 to 6
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 12 from 2 to 3
|
||||||
|
move 4 from 6 to 8
|
||||||
|
move 10 from 8 to 3
|
||||||
|
move 14 from 3 to 8
|
||||||
|
move 5 from 5 to 8
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 5 from 3 to 5
|
||||||
|
move 4 from 7 to 2
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 4 from 5 to 1
|
||||||
|
move 21 from 8 to 6
|
||||||
|
move 7 from 3 to 2
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 4 from 8 to 9
|
||||||
|
move 16 from 6 to 1
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 5 from 9 to 2
|
||||||
|
move 7 from 1 to 7
|
||||||
|
move 10 from 1 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 6 from 6 to 5
|
||||||
|
move 6 from 1 to 4
|
||||||
|
move 4 from 7 to 9
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 5 from 7 to 6
|
||||||
|
move 3 from 6 to 8
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 6 from 4 to 8
|
||||||
|
move 4 from 8 to 3
|
||||||
|
move 4 from 8 to 4
|
||||||
|
move 17 from 2 to 1
|
||||||
|
move 8 from 3 to 4
|
||||||
|
move 5 from 4 to 3
|
||||||
|
move 10 from 1 to 5
|
||||||
|
move 11 from 3 to 5
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 3 from 6 to 4
|
||||||
|
move 9 from 4 to 9
|
||||||
|
move 7 from 1 to 3
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 7 from 5 to 4
|
||||||
|
move 18 from 5 to 1
|
||||||
|
move 13 from 1 to 6
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 5 from 1 to 6
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 6 from 3 to 8
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 10 from 8 to 7
|
||||||
|
move 16 from 6 to 7
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 5 from 4 to 9
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 7 from 9 to 8
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 4 from 8 to 9
|
||||||
|
move 7 from 9 to 7
|
||||||
|
move 13 from 9 to 5
|
||||||
|
move 10 from 5 to 1
|
||||||
|
move 3 from 8 to 4
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 3 from 5 to 6
|
||||||
|
move 3 from 9 to 7
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 4 from 6 to 3
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 30 from 7 to 3
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 6 from 7 to 3
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 18 from 3 to 4
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 14 from 4 to 6
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 15 from 6 to 4
|
||||||
|
move 20 from 3 to 1
|
||||||
|
move 5 from 4 to 9
|
||||||
|
move 5 from 4 to 2
|
||||||
|
move 15 from 1 to 7
|
||||||
|
move 11 from 7 to 9
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 10 from 4 to 3
|
||||||
|
move 15 from 9 to 3
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 29 from 3 to 6
|
||||||
|
move 3 from 1 to 6
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 4 from 6 to 1
|
||||||
|
move 20 from 6 to 2
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 3 from 6 to 2
|
||||||
|
move 4 from 6 to 3
|
||||||
|
move 4 from 3 to 1
|
||||||
|
move 4 from 1 to 4
|
||||||
|
move 3 from 4 to 8
|
||||||
|
move 6 from 3 to 4
|
||||||
|
move 6 from 2 to 6
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 3 from 6 to 8
|
||||||
|
move 6 from 9 to 3
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 3 from 4 to 5
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 4 from 8 to 7
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 4 from 7 to 8
|
||||||
|
move 4 from 4 to 3
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 4 from 8 to 6
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 4 from 6 to 3
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 4 from 4 to 5
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 21 from 3 to 5
|
||||||
|
move 3 from 6 to 1
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 4 from 2 to 6
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 10 from 2 to 4
|
||||||
|
move 4 from 1 to 2
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 7 from 4 to 9
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 6 from 2 to 8
|
||||||
|
move 3 from 9 to 1
|
||||||
|
move 8 from 4 to 3
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 21 from 5 to 7
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 14 from 7 to 1
|
||||||
|
move 2 from 4 to 1
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 11 from 2 to 9
|
||||||
|
move 8 from 9 to 6
|
||||||
|
move 4 from 7 to 1
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 3 from 7 to 5
|
||||||
|
move 6 from 1 to 7
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 4 from 6 to 5
|
||||||
|
move 6 from 7 to 6
|
||||||
|
move 3 from 9 to 1
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 11 from 5 to 1
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 9 from 6 to 4
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 14 from 1 to 5
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 10 from 1 to 5
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 8 from 3 to 8
|
||||||
|
move 16 from 5 to 7
|
||||||
|
move 2 from 1 to 9
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 6 from 7 to 4
|
||||||
|
move 3 from 5 to 8
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 7 from 1 to 7
|
||||||
|
move 14 from 4 to 3
|
||||||
|
move 9 from 7 to 8
|
||||||
|
move 2 from 4 to 1
|
||||||
|
move 9 from 8 to 4
|
||||||
|
move 7 from 8 to 2
|
||||||
|
move 6 from 1 to 8
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 9 from 4 to 9
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 8 from 6 to 3
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 8 from 9 to 8
|
||||||
|
move 6 from 2 to 9
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 7 from 8 to 6
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 8 from 7 to 8
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 9 from 3 to 5
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 11 from 8 to 1
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 4 from 6 to 4
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 7 from 8 to 9
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 18 from 3 to 2
|
||||||
|
move 17 from 2 to 7
|
||||||
|
move 6 from 5 to 4
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 4 from 4 to 6
|
||||||
|
move 4 from 6 to 9
|
||||||
|
move 15 from 7 to 9
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 28 from 9 to 2
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 4 from 6 to 9
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 8 from 9 to 5
|
||||||
|
move 13 from 5 to 3
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 8 from 3 to 7
|
||||||
|
move 28 from 2 to 5
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 4 from 7 to 5
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 21 from 5 to 4
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 5 from 7 to 6
|
||||||
|
move 10 from 4 to 8
|
||||||
|
move 6 from 5 to 4
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 15 from 4 to 5
|
||||||
|
move 10 from 4 to 7
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 7 from 5 to 1
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 10 from 7 to 9
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 9 from 9 to 2
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 9 from 8 to 7
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 5 from 5 to 4
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 5 from 4 to 3
|
||||||
|
move 3 from 5 to 9
|
||||||
|
move 6 from 7 to 3
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 5 from 9 to 7
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 4 from 1 to 4
|
||||||
|
move 6 from 2 to 7
|
||||||
|
move 17 from 7 to 5
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 10 from 7 to 2
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 3 from 4 to 6
|
||||||
|
move 7 from 5 to 8
|
||||||
|
move 7 from 2 to 8
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 12 from 8 to 3
|
||||||
|
move 17 from 3 to 2
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 3 from 9 to 1
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 6 from 8 to 1
|
||||||
|
move 17 from 2 to 3
|
||||||
|
move 13 from 3 to 2
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 7 to 2
|
||||||
|
move 8 from 6 to 2
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 9 from 1 to 3
|
||||||
|
move 13 from 2 to 9
|
||||||
|
move 6 from 1 to 4
|
||||||
|
move 6 from 4 to 5
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 2 from 1 to 8
|
||||||
|
move 8 from 5 to 7
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 9 from 3 to 1
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 6 from 7 to 3
|
||||||
|
move 4 from 2 to 7
|
||||||
|
move 14 from 1 to 6
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 6 from 2 to 1
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 9 from 6 to 3
|
||||||
|
move 11 from 9 to 5
|
||||||
|
move 9 from 7 to 6
|
||||||
|
move 6 from 6 to 2
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 5 from 9 to 4
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 9 from 2 to 7
|
||||||
|
move 10 from 5 to 8
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
cmpmbppqmqsqzzrrswrrnqrnqqjzjvzzqvzvjvnnlclrrjhrrrnggmgwwdhhfttmmjrjzrzrhrbrgbrbsbjbcjjvpjjcvjvttfwffjtffqqqldqllhthhljhllfffbfbzbczzznmznnrrtgrgppdcppdfpfjjrggpjgjwgjwgghdggzzshzhrhttmhhdqhqsqgglhljjbggjhggfsfvfggrmggwwbwvvwssqtqzqlqvlqqvtthjhjrjssclscsszhzbztbbdhdbbqfbqqvdqdjjjspsqslsnlljnljjhttdtbdttjpjggtfftlldpdzzqhzqqcwwvggmgmppmhpmpddgjjbzbmzmllndldblbwbswsbbmzzwnnpdndzznmnjnjmnnzwwrqwrqrvqvqmmbmhmzzdqqfnqqgnqqfppmnnqzzvvcfclcrrzfzrzttchttshsphshddrgdggvwgvwwjjzbbprrgwrrcttwbwpwfffqppwnpwpqwwwbmwwjrjprrrsfrfdfrddvdzvzqzgzmgmpgpmmpspdssdlsldsdwssgzgddttqpphllvbvccjzjppffsjsbbvnbvbttgwtgtftzzlhzzjvzvsvtsttfrfrsswpwnwccqtqrqqrhqhjhccpfpgpjgpprnprrscctddqmdqqncqctqqrpqrprwpwnwnrnccmfmdfmfdfnfdnnphhbhttsszgssvhhprprnrsrrvggdllvfvrvbrbsrbrpphhqbbhllpttjmttrstszzwllbsbzzgmzgzbzcbcbjcbbjdjpjtttwggqhhpzpzszqqzhqqhrhlrrrvnrnqrqgrqggzccnnjrrcmmzvmmvtmtltvvlzlmmbnmmbbclljnjhhbjbhbjbbfcbfcfbbqwwftfhttwvwhhwfwcffwvwmmwtwftfjttwdtwdtwttqnttmdtdjtdjjlzjzhjhwwnbbmdmhhjmhmjjwmmpsmmhrrfnnqrqjrrpmpjpzpbzpztppswsmsnnlnppscsgcgsccsfcctbtcctvcvhvjhhccppbrbcrbrmbmvmllnmllgfgmgdmmslmlrmllhttgrrsttlmmnrrrlqqsjjddzzsbsdbbrjbjvbbfwwwglljplpglltlztzvtzzmbzbmbmcchlchcnhccbhhhzrrglgmgwwwwrddvmmvdvvpjpnpspmpsmpsscrrphpdhdllrsspcspsqslsspbbmcbmmdhdwhwpphfhmmfhmhjmjrrhtrtffsddwsddwccvncczlzjzdjzddszdsstgtbthhjhddwppvhvvvwrvwrrpspjpvjjsmsccszzgpzzmjzmzvmvrmmgbglgppbfppvvqffgdgtgpgdgnghhbhgbbpbdbrrjrtjtggvzzvttwbwlbwbttrbttvdttpctcrtrccddfrrmqqjrqqsvqsqzsslnlggmrggnllvdvbvmbmsmwmfmvvdwvwbbnddvfvzzjppbpgpvgppblbzznsscwssqppgbbfwwfmfzzqqgnnjnffvbfvbbfllbhlltvtnvnbnsnddcjcbjbbjpbbhhjghhqjjlttnmmhwmhwwddlppsjppgtthllsclcvvlfvvvlzvlvcccrhrrvqrvvzrvzrrmqqbtbnnwssvhvtttnsttrnnghgdggmgdmmnbnhbhdbddvppvhvlvttzmttljlflvfvpfpwffqbffjllnvlltslsttrvrdrmddtwdwmmlplhlnlffmzzrssvsgsffzjfjcffrcrppzfzbbtltjljtjftfmmmrjmjqmjqmjqmjqjsqqhzzhdhrrcwwbcltfjdgmhvmqmmsclsdgmdqzcvzznwgtdbzgvlpzvdqrvwpmndtzmdpznnplmbvvmffdpbjztvzpwffvqbwmvbmtwjrdpngrftvgznmtzwzmsrvpgpzjcdwvnqplfgncgcdtjbhcqztgqpdhwlmrjbzhcfhnzqmpzzghzpfzbgwmlqztnbdnntgdcfssgzqndhfwdtrbpzbmqjgjflmcllscjnnnrzzsjhnwptjlbhpcwwhsvqqlvjzghnwvzmwtbjgwfgmpdfcjfswvqzwdbnvlwfbmdcjvgjcdhjfbjccsjqrgdrhrjnhgpvvfjqvfwqpgmgfsbsnlrfnbtpzljmzrjmjlldgbvvwbnpqgsnzzmswtwgshdlwhsttdjlhnnlgbprwltbppttctttftrmbjccvwtljqffrcpwnwjgcwjnhmphfsnbfdnfbvzqqlwbnjjdvplrjbflcrwjtrngwzznzhsmnwzfbpjrdmjlwzvrvrblrscjlrmswjpbrtjjbsgzwjnfwwgmnbbppqfnlmfsbpwbdnjmrcvqdhhvrrvmghlbbpfsqzsnbjvrvthnrhlttsnlbgvsdvsmncdglrgpsqjqthnlrhnzpnnjgvrnmdnrtjbmlppfppnmgjhtbzpztdmclgbqjzsgfjllplpnnmjhgpcfcpcmbnwjsdmfmrqvqvjfsrnqhbrzdvwcsmmjvqpjnzbgrhwcwggvvjzbrswplgvbbqhdlqptzjvzcznspjbpvfmgbcfjbgmztmqtlzmzzzpmcdmmvhvnphpcfwcmwqwwqvmwpwhhnspmhrdmjblzhhlphwldfclsfjbzhjglvllldnmtjtwqtztfcvjdngslhnsmmlwlpzdbrrthtwfpjfvfljddplfgnhcnwwmmpgwwspnsprsvprccwvvljwbqwrzqjmwfrnnjbrfsrglnrwdfnsswqwsbpplgnfnvvvhqwmtgsdwmvnzmbjpbscdtcrmsllljwlntjzpwqvvnznmfddtgrmqbdsczhtvjdwrwvjccrqnjlnqbvqhhvnmqmrmnqllcjzcjgzwctrntjsnhrwmcqzrwzzqgqlmbqczlgtmtwlztclhwcjsgbdlfrppwrpbnpgsjfhprvzjwnpdwsjwmdcbmljclcgcnsqcpzgvrrbnnhjhblgnpcbzbcdmgjmpmpcwwdngmggmfqcjcwrzblsfmrslbblhdlwjqrrgtnvcfsccbdgnjcztrblrwbrvdzcnnshwzzvgcqwpqmjzhzlllbtzmcqpnwwqqlcjtrrzfmdpmpblmwztwqdgbmtfggjwnmffzvszgdmhfvflthzmwqgqvgmldzpbwbdvrjldhbnzsthqsczttbbthzgzmmrcmzmzmjfrhbtmsbqrbnsnzzfpvwlwpszdptljqphrdznhbwbfdfhsrqnmlqdcdgbrbsmgwwbbjsmwhzgmqtmfbndzlmlvmrrvrmqbjqbhhqtvvgbhbmsrtljwmtnhtpwjvlrgqljvgpsfrwgdfbcwlmvfdrrlgwvvzvcftwpjhcplgwvqbzftjfbmmcpvrrsvbnwqdhtlsfcjzlrmwvgvgwpbffsrrpdpssqhqrqdglnwcqznzlqqvjzpsdnpwfqtfjqhqwvlfpwrqqmntcnnbfprlwrfdwstvbpjmjdbcdffmwvqbsdnvcgrtccvcfzpwjscmrtbbjjnmlcztbldfnwbqcpqlshthrcbdrfldcmhtgwrgqhnnglbzgdgglzjbgjtdvgzgrspjtbhpmzvpplgjpjbthmjtwqqzsslnfrtmpznbqvmccqccrtdvrssmdgrptsjglvrmlcwfllptczvpgwbdfbrnpzdzmpfjwdhqlsqlzlzrwcsmhcmjhhfhfvcdrzhsmqbwcfshslsnswpslbjnrzqllwbnddhrngmjqtnvhrjpcpmggvgqbwtwcmbvhnwggdrzfgmhhvpqzbvlghsvgmhngwdsrwlzffbpzqmfzvbhbjvqlcswhctpcqnptrvlwblnvpfbzsjnsdjnhqbzddsnthhcfbcvmqgfmvztlcwjbmdtgvgwqbqgdrvbgbnbcnqwzfzqpsgbvtwlphgvqlzshndcbffzcbllgzrzrnhdvqnvtndhcdslqbbhcdftlmnltmsmgfcgvmpbsljdbthjtqlfbmczznwcvfcsnftsnpzcwfqbfhjpswzfzfswfgtzplppsglsdncblddsmftmfdmmnsjjgg
|
||||||
+1032
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,99 @@
|
|||||||
|
201111211202111301212201403141040230323033312212134523125000140404300230341330300221220012110101011
|
||||||
|
011220103113221111202122124010033421404432343233535151335133353340034134034332440001110102010010220
|
||||||
|
122121120300202230411332402004044235424325455343231124521355323541403402031010313440121321321322221
|
||||||
|
200021211323122312440342411331012332252341254144425451345233324423152201041200212200331121111210011
|
||||||
|
022213121203213301221100041021415245132424534145512125411151335224315551123141404223410032032000022
|
||||||
|
101131310332214402243114310442325141344331525541232153453225442351235123130234413214313330121121101
|
||||||
|
101102011001014411302320032155533351421345311554341111544153414344211242545240114004311012303003230
|
||||||
|
101023122212322231421422241433315213542415532226334465642351151321144451152132311230002433230001110
|
||||||
|
101102012000130221414322332331245251153242654525425363234533655232423135443124134230202313201000123
|
||||||
|
113023100223214000232555442143243135556634652423636245645335623323351235221252344243002420033131123
|
||||||
|
021023012400222133115232154155255455226363244263663662564362455342612241224452135301204334403311211
|
||||||
|
011011120014313211333124154235235522553465256455435352362343343356452125515224121432404101240133203
|
||||||
|
011310103034221123212123555245622666563625344356454344325522453265262433154414231333142413311331323
|
||||||
|
303301320412010454251154421242542562366466364652264364325544554624545256254413534434331434344310311
|
||||||
|
211332131030004243315521542363644424356453643345544752562524552255353324654134525543231434112230100
|
||||||
|
002102403432244535421254566353326346446265345654366646566543552562536326635315453214125414141214102
|
||||||
|
331140031313041444123423526426422252527375577546753455777737547626364645566461554234123523430311313
|
||||||
|
330401323101512253253516526653653542734767336644345445665364743533364355534236521342413154132413122
|
||||||
|
330411204212311445244535522655343573747374364345564574375763553465534526662642244443311121403103124
|
||||||
|
023332003431144254543626226245566455744465356337347475347374637637653442626233624414255134423423042
|
||||||
|
244210400021232153266652252325756653575474576355747475663555354556777566436342344532415443212134234
|
||||||
|
243022342335541213565253544236755753776564447733743446775775654547533666422423326624134345443023202
|
||||||
|
400214112533143341263455565263566576767643378645664845674353474533736575624522664521123334133420203
|
||||||
|
314412035353435253634446462463763443376476847467648547566465453356757464475343435464134531133123324
|
||||||
|
210413325433315134452365563547564744658868746684566644877466576346553654766362254362221413424430422
|
||||||
|
440400434542543525543663633667763537556667668747746756785587458767563547637623326226661151144334010
|
||||||
|
203031334152125642466635547657766584664687848767577545486757587488654373354446324524564152231113112
|
||||||
|
241001452244343336664255646743677756848545865758665674685886656454447657464556245442364333553250131
|
||||||
|
014023224515325454455574567445744885857785756585855854887668646555746475564455722536445351532451133
|
||||||
|
240034522142434662453346666663547675448567854897757695674874464454475574464737776424553231541143102
|
||||||
|
202432344512662423437374345345446848546655697769865799957684557848684543374647545532223321334341333
|
||||||
|
123325111441445225523673536445447568774877677796777678697975965546774547536673437544656344512135444
|
||||||
|
310254211535525232233446556788846647746897588857688579889788855477655648566666635426236522424112342
|
||||||
|
034313254213653456477557533774786647669769587699976668986696667747555648883667447465462526444143342
|
||||||
|
143141533334542466354344755484874754698685556789559989587957999587645467546553365742323424612353420
|
||||||
|
023355513126235334753777564744657489776767789956675687857787669856547584455737646446352333233414322
|
||||||
|
223531421366552557666573477756875578695968796778976887859959556598778688876655735777332545512434212
|
||||||
|
324553233365452565557437476777687565788999986896686778796755558896856684686773556344634525262453452
|
||||||
|
213242455253625376773454787557859959899988899999978889797885876979769647857487767764545335245255213
|
||||||
|
153212131552226337374543645684765767796896876966989866686867979876788867784675754744525622655431425
|
||||||
|
043231154325334367553646774578457959887979898666866967789799775569887978674668454463732263426513135
|
||||||
|
335542344226645477333775676444769565755967887779666696689698896656597875884556557743462633443124152
|
||||||
|
335323556552426765767775874764689686976988996666779796996969887796587577847457535454643262525413534
|
||||||
|
031342356243536356663654658854697858887697788666879779897996867856867654685767655656766443625531132
|
||||||
|
335345116666525747477647458845785958767699688899778878776776988777668657478884857465753336533142152
|
||||||
|
431315146645532647447566887678656986686996889897797878877768979656986556466744563333546332255135135
|
||||||
|
345455244545432335674458658587555587989897879999798888988976986779787768754855836367363664566413353
|
||||||
|
512151454564534653477764765466595799679979878789789879998767887865797755765458674344355656253343334
|
||||||
|
223351266325633575663774564489796879687898688978997788798999779796767956656764647364636656442223522
|
||||||
|
453333263535357446366584455459557799968998879988898977978787696768578657875454473547567326532334111
|
||||||
|
522431356454444356554374544846975859978878977879979897898976787967789578746656874774547443245541214
|
||||||
|
524451243233255555453685476745875568898798878799987879899778979895889689545784464464664644546653534
|
||||||
|
351343243662255667567757864679695778779676778997998897779866887675677768667848643753754363345434313
|
||||||
|
422125253344236737334386654576687898997799677887987777887686867895579866465457665345774366464351334
|
||||||
|
421312154235324535653777678786976887577869769887898799897698686878966689468464555357752255363554413
|
||||||
|
134231353356532647544747466746997955968966989988799777786898667996595997676454734577542423644111423
|
||||||
|
254152156456563434474788846574786769698798686897989989968667786695865858667776755455566654264132134
|
||||||
|
325554124554345334573567875686789766777879789968978788797868997657598864755765764646452636426312235
|
||||||
|
054421142246245654657458647846877765696688798786967788769769989568865887586878654537663362654432212
|
||||||
|
313445116364256444775744655676857696698998799776867668888686999587568854476648764345346236246232241
|
||||||
|
143114554233652245375455887678668996669686996999796887877777686757966588885786556444465552442533324
|
||||||
|
251331534446564265464364486744686986675876988887767766688896987878765756544754746565355566534235144
|
||||||
|
043312335432626344536643484678579666899596766779666899678676979556965588747766665377565544465543531
|
||||||
|
242445211324566636637644588748444588767957766968968978786788586989657745475556775355542555362121442
|
||||||
|
243253334442556446446767754567476657566957796656988796979699968699856846446535677455225423345132114
|
||||||
|
431231245536522344674653635685865849787997986689665576586668667768645854645567336572252526524445114
|
||||||
|
431352413545636624334373564776844687557987796967657766857786797968874766656443453336264564435235253
|
||||||
|
320554134146445446354475753477858558775599755977987865757897668588588666485457344365453335234122310
|
||||||
|
333244132156433233245637373688448784459857795676588655998585696485786865554473364636554335355224153
|
||||||
|
113345451542245623453737457745456844757575897756758966757557585554868888643374344325656234154414322
|
||||||
|
444045515145356432335647545655765786587886758778866688968984877775888576477747477332355221552413204
|
||||||
|
111132223523345626324747765577376687656748476986565687576768448558884573773436752362454612221523223
|
||||||
|
022004333435234546566255554533348546676766478456868467444674448586545655467537436553554433123421120
|
||||||
|
333231125332152663266433667535537778555667876464765456758647764446877656465367323254523253352510413
|
||||||
|
122420553331452433333353464676537646864677748867574756565588454444657764464332235454635225432522004
|
||||||
|
120442052444321222226423365375645435468656658447866466574856466886677654746522644365264535531343440
|
||||||
|
421404315233111265423463525657764565658784687768567656464684688763534555373553346542234345145442244
|
||||||
|
331231242152133344456244633655545655745345664668565885467456447677744435752654334432232553354400240
|
||||||
|
203040023155425242246555225235473556554656638646764676455766756555576576336522336454124215215404311
|
||||||
|
020211430251454452662234222644467675755747776474545447746753537773655567623542436262213453434423110
|
||||||
|
121222320253353333233652252225333343646436546477634345533376676557363636362664225322253234514301234
|
||||||
|
131331122021145511555626563643364773337345554777664437674344775376757362452454652245212143131222333
|
||||||
|
333033033132243135213222343542265476344656453763774355443644566737723253264252451243142121312244244
|
||||||
|
002204430244435144434515354453332632665637375363445456667774576662453443646454532431524140202312242
|
||||||
|
121314024424022223215424644426642356264655357667436346735353466356245254264535315425323522230030301
|
||||||
|
021012030013043135124451434556465446663353754754774574457663344656553456246613524313152023413220330
|
||||||
|
323211122442404125421353336334324324563564625653556556652432462453235325362525324531133444231304313
|
||||||
|
221212242244240214314234323556334553353656452662622464552256465443444565421332134313540102100220131
|
||||||
|
003121311143322334241133533143446663652225433332652353542523664466644655215235421122322101243201202
|
||||||
|
302132313044423014553344334444135543546462343625633335635554425246463354552555544450021401441212013
|
||||||
|
211320002042341321404351332421424422345645623225243263532425463422453534224512413420003024103010003
|
||||||
|
121321233203044310220544225434555523322652465244626362265436622244421244514121221412000233313302001
|
||||||
|
033330113222134212123014455534453323452146635634333522662322621122442141151325121244124021100331010
|
||||||
|
003211203200004004334013134312421412135211541122652523655533352215155345414442033214440410020130131
|
||||||
|
000310132331000133341101412343222324131145425545545422415232421245514432554132410203120223330322031
|
||||||
|
010222121001201110014203011212115523421525414334222144411533424243442552424243301203331330320011211
|
||||||
|
202210333132013102411304342331452231412212555243242135532222244343234442033031110220213320300213112
|
||||||
|
021110333231201113044040042034211335553321154444412432243122252145522223420412102042311030021122200
|
||||||
|
212222233011232310420321434331332422434543133323345512355241515513414041433311311240302022331021120
|
||||||
+2000
File diff suppressed because it is too large.
Load diff
+12
-7
@@ -1,4 +1,5 @@
|
|||||||
let part1 lines =
|
let part1 () =
|
||||||
|
let lines = Utils.lines_of_input 1 in
|
||||||
let rec most_calories most current lines =
|
let rec most_calories most current lines =
|
||||||
match lines with
|
match lines with
|
||||||
| [] -> most
|
| [] -> most
|
||||||
@@ -10,7 +11,8 @@ let part1 lines =
|
|||||||
most_calories 0 0 lines
|
most_calories 0 0 lines
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let part2 lines =
|
let part2 () =
|
||||||
|
let lines = Utils.lines_of_input 1 in
|
||||||
let accum_calories elves calories =
|
let accum_calories elves calories =
|
||||||
match elves, calories with
|
match elves, calories with
|
||||||
| elves, "" -> 0 :: elves
|
| elves, "" -> 0 :: elves
|
||||||
@@ -23,9 +25,12 @@ let part2 lines =
|
|||||||
| _ -> failwith "wtf"
|
| _ -> failwith "wtf"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let print () =
|
let%expect_test "Day 1.1" =
|
||||||
let lines = Utils.lines_of_input 1 in
|
Printf.printf "%d" @@ part1 ();
|
||||||
Printf.(
|
[%expect {| 75622 |}]
|
||||||
printf "Day 1.1: %d\n" @@ part1 lines;
|
;;
|
||||||
printf "Day 1.2: %d\n" @@ part2 lines)
|
|
||||||
|
let%expect_test "Day 1.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 213159 |}]
|
||||||
;;
|
;;
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let parse_lines () =
|
||||||
|
let lines = Utils.lines_of_input 10 in
|
||||||
|
let _, state_history =
|
||||||
|
List.fold_flat_map
|
||||||
|
(fun (cycle, reg) instruction ->
|
||||||
|
match String.split ~by:" " instruction with
|
||||||
|
| [ "noop" ] -> (cycle + 1, reg), [ cycle + 1, reg ]
|
||||||
|
| [ "addx"; num ] ->
|
||||||
|
let num = int_of_string num in
|
||||||
|
(cycle + 2, reg + num), [ cycle + 1, reg; cycle + 2, reg ]
|
||||||
|
| _ -> failwith @@ Printf.sprintf "failed to parse '%s'" instruction)
|
||||||
|
(0, 1)
|
||||||
|
lines
|
||||||
|
in
|
||||||
|
state_history
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part1 () =
|
||||||
|
let history = parse_lines () in
|
||||||
|
history
|
||||||
|
|> List.find_all (fun (cycle, _) ->
|
||||||
|
match cycle with
|
||||||
|
| 20 | 60 | 100 | 140 | 180 | 220 -> true
|
||||||
|
| _ -> false)
|
||||||
|
|> List.fold_left (fun acc (cycle, reg) -> acc + (cycle * reg)) 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part2 () =
|
||||||
|
let screen_width = 40 in
|
||||||
|
let history = parse_lines () in
|
||||||
|
history
|
||||||
|
|> List.map (fun (cycle, reg) ->
|
||||||
|
let column = Int.(cycle mod screen_width) in
|
||||||
|
let sprite_dist = abs @@ (reg + 1 - column) in
|
||||||
|
if sprite_dist <= 1 then '#' else ' ')
|
||||||
|
|> List.chunks 40
|
||||||
|
|> List.map String.of_list
|
||||||
|
|> List.iter Fun.(print_string %> print_newline)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 10.1" =
|
||||||
|
Printf.printf "%d" @@ part1 ();
|
||||||
|
[%expect {| 14760 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 10.2" =
|
||||||
|
part2 ();
|
||||||
|
[%expect {|
|
||||||
|
#### #### ## #### ### # # ### #####
|
||||||
|
# # # # # # # # # # # # #
|
||||||
|
### ### # ### # # # # # # ### #
|
||||||
|
# # # ## # ### # # ### #
|
||||||
|
# # # # # # # # # # # #
|
||||||
|
#### # ### #### # # ## # # #### |}]
|
||||||
|
;;
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
type monkey =
|
||||||
|
{ mutable items : int list
|
||||||
|
; mutable inspected : int
|
||||||
|
; operation : int -> int
|
||||||
|
; test : int -> int
|
||||||
|
; test_num : int
|
||||||
|
}
|
||||||
|
|
||||||
|
let parse_monkeys () =
|
||||||
|
let lines = Utils.lines_of_input 11 in
|
||||||
|
let rec parse lines monkeys =
|
||||||
|
let lines = List.drop_while (String.equal "") lines in
|
||||||
|
let lines, rest = List.take_drop_while Fun.(String.equal "" %> not) lines in
|
||||||
|
let lines = List.map Fun.(String.trim %> String.split ~by:" ") lines in
|
||||||
|
match lines with
|
||||||
|
| [ [ "Monkey"; _ ]
|
||||||
|
; "Starting" :: "items:" :: items
|
||||||
|
; [ "Operation:"; "new"; "="; "old"; op; op_num ]
|
||||||
|
; [ "Test:"; "divisible"; "by"; test_num ]
|
||||||
|
; [ "If"; "true:"; "throw"; "to"; "monkey"; if_true ]
|
||||||
|
; [ "If"; "false:"; "throw"; "to"; "monkey"; if_false ]
|
||||||
|
] ->
|
||||||
|
let items =
|
||||||
|
List.map Fun.(String.replace ~which:`All ~sub:"," ~by:"" %> int_of_string) items
|
||||||
|
in
|
||||||
|
let op = if String.equal op "+" then ( + ) else ( * ) in
|
||||||
|
let operation =
|
||||||
|
match op_num with
|
||||||
|
| "old" -> fun old -> op old old
|
||||||
|
| num -> fun old -> op old @@ int_of_string num
|
||||||
|
in
|
||||||
|
let test_num = int_of_string test_num in
|
||||||
|
let if_true = int_of_string if_true in
|
||||||
|
let if_false = int_of_string if_false in
|
||||||
|
let test score = if Int.(score mod test_num) = 0 then if_true else if_false in
|
||||||
|
let monkey = { items; operation; test; test_num; inspected = 0 } in
|
||||||
|
parse rest (monkey :: monkeys)
|
||||||
|
| _ -> monkeys
|
||||||
|
in
|
||||||
|
Array.of_list @@ List.rev @@ parse lines []
|
||||||
|
;;
|
||||||
|
|
||||||
|
let throw item monkey = monkey.items <- List.append [ item ] monkey.items
|
||||||
|
|
||||||
|
let round monkies ~manageable =
|
||||||
|
let divisor = Array.fold_left (fun acc monkey -> acc * monkey.test_num) 1 monkies in
|
||||||
|
let destress score = if manageable then score / 3 else Int.(score mod divisor) in
|
||||||
|
monkies
|
||||||
|
|> Array.iter (fun monkey ->
|
||||||
|
monkey.items
|
||||||
|
|> List.iter (fun item ->
|
||||||
|
let item = destress @@ monkey.operation item in
|
||||||
|
let throw_to = monkey.test item in
|
||||||
|
throw item monkies.(throw_to));
|
||||||
|
monkey.inspected <- monkey.inspected + List.length monkey.items;
|
||||||
|
monkey.items <- [])
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve rounds ~manageable =
|
||||||
|
let monkies = parse_monkeys () in
|
||||||
|
for _ = 1 to rounds do
|
||||||
|
round monkies ~manageable
|
||||||
|
done;
|
||||||
|
monkies
|
||||||
|
|> Array.to_list
|
||||||
|
|> List.map (fun monkey -> monkey.inspected)
|
||||||
|
|> List.sort Int.compare
|
||||||
|
|> List.rev
|
||||||
|
|> List.take 2
|
||||||
|
|> List.reduce ( * )
|
||||||
|
|> Option.get_exn_or "aoc goofed up the input"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part1 () = solve 20 ~manageable:true
|
||||||
|
let part2 () = solve 10_000 ~manageable:false
|
||||||
|
|
||||||
|
let%expect_test "Day 11.1" =
|
||||||
|
Printf.printf "%d" @@ part1 ();
|
||||||
|
[%expect {| 56350 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 11.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 13954061248 |}]
|
||||||
|
;;
|
||||||
+100
@@ -0,0 +1,100 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
type node =
|
||||||
|
{ char : char
|
||||||
|
; mutable visited : bool
|
||||||
|
; mutable distance : int
|
||||||
|
}
|
||||||
|
[@@deriving show]
|
||||||
|
|
||||||
|
let parse_grid start_anywhere =
|
||||||
|
let start_nodes = ref [] in
|
||||||
|
let end_node = ref @@ Vec2.origin in
|
||||||
|
let grid =
|
||||||
|
Utils.lines_of_input 12
|
||||||
|
|> Grid.of_lines (fun char -> { char; visited = false; distance = Int.max_int })
|
||||||
|
in
|
||||||
|
Grid.iter grid (fun pos ->
|
||||||
|
let node = Grid.at_e grid pos in
|
||||||
|
match node.char with
|
||||||
|
| 'E' -> end_node := pos
|
||||||
|
| 'S' -> start_nodes := pos :: !start_nodes
|
||||||
|
| 'a' when start_anywhere -> start_nodes := pos :: !start_nodes
|
||||||
|
| _ -> ());
|
||||||
|
grid, !end_node, !start_nodes
|
||||||
|
;;
|
||||||
|
|
||||||
|
let reachable f t =
|
||||||
|
let height c =
|
||||||
|
match c with
|
||||||
|
| 'S' -> 'a'
|
||||||
|
| 'E' -> 'z'
|
||||||
|
| c -> c
|
||||||
|
in
|
||||||
|
Char.compare (height f) (height t) >= -1
|
||||||
|
;;
|
||||||
|
|
||||||
|
let get_neighbors grid node_pos =
|
||||||
|
let node = Grid.at_e grid node_pos in
|
||||||
|
Vec2.directions
|
||||||
|
|> Iter.of_list
|
||||||
|
|> Iter.filter_map (fun dir ->
|
||||||
|
let neighbor_pos = Vec2.(node_pos + dir) in
|
||||||
|
match Grid.at grid neighbor_pos with
|
||||||
|
| Some neighbor when reachable node.char neighbor.char -> Some neighbor_pos
|
||||||
|
| _ -> None)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let path_distance grid goal start_nodes =
|
||||||
|
let set_info position (dist, visited) =
|
||||||
|
let node = Grid.at_e grid position in
|
||||||
|
node.distance <- dist;
|
||||||
|
node.visited <- visited
|
||||||
|
in
|
||||||
|
let get_info position =
|
||||||
|
let { char = _; distance; visited } = Grid.at_e grid position in
|
||||||
|
distance, visited
|
||||||
|
in
|
||||||
|
Utils.djikstra
|
||||||
|
~set_info
|
||||||
|
~get_info
|
||||||
|
~eq:Vec2.( = )
|
||||||
|
~get_weight:(fun _ _ -> 1)
|
||||||
|
~get_neighbors:(get_neighbors grid)
|
||||||
|
~goal
|
||||||
|
~start_nodes
|
||||||
|
|> Option.get_exn_or "couldn't find"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 12.1" =
|
||||||
|
let grid, goal, start_nodes = parse_grid false in
|
||||||
|
Printf.printf "%i" @@ path_distance grid (Some goal) start_nodes;
|
||||||
|
[%expect {| 497 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 12.2" =
|
||||||
|
let grid, goal, start_nodes = parse_grid true in
|
||||||
|
Printf.printf "%i" @@ path_distance grid (Some goal) start_nodes;
|
||||||
|
[%expect {| 492 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 12 test" =
|
||||||
|
let grid, goal, start_nodes = parse_grid false in
|
||||||
|
let _ = path_distance grid None start_nodes in
|
||||||
|
let print_dist_to pos =
|
||||||
|
let node = Option.get_exn_or "invalid pos!" grid.Grid.%(pos) in
|
||||||
|
Printf.printf "%s %c %i\n" (Vec2.show pos) node.char node.distance
|
||||||
|
in
|
||||||
|
print_dist_to goal;
|
||||||
|
print_dist_to Vec2.(goal + right);
|
||||||
|
print_dist_to Vec2.(goal + down);
|
||||||
|
print_dist_to Vec2.(of_tuple (121, 23));
|
||||||
|
print_dist_to Vec2.(origin + right);
|
||||||
|
[%expect
|
||||||
|
{|
|
||||||
|
(149, 20) E 497
|
||||||
|
(150, 20) z 498
|
||||||
|
(149, 21) y 496
|
||||||
|
(121, 23) a 138
|
||||||
|
(1, 0) b 21 |}]
|
||||||
|
;;
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
module Packet = struct
|
||||||
|
type t =
|
||||||
|
| I of int
|
||||||
|
| L of t list
|
||||||
|
[@@deriving show { with_path = false }]
|
||||||
|
|
||||||
|
let of_str line =
|
||||||
|
let open Utils.Parse in
|
||||||
|
let int = int >>= fun i -> return @@ I i in
|
||||||
|
let packet =
|
||||||
|
fix (fun packet ->
|
||||||
|
let lb, delimited, rb = char '[', sep_by (char ','), char ']' in
|
||||||
|
let list = lb *> delimited packet <* rb >>= fun p -> return @@ L p <?> "list" in
|
||||||
|
choice [ int; list ])
|
||||||
|
<?> "packet"
|
||||||
|
in
|
||||||
|
Result.get_or_failwith @@ parse_string ~consume:All packet line
|
||||||
|
;;
|
||||||
|
|
||||||
|
let rec compare a b =
|
||||||
|
match a, b with
|
||||||
|
| I a, I b -> Int.compare a b
|
||||||
|
| L a, L b -> List.compare compare a b
|
||||||
|
| (I _ as a), (L _ as b) -> compare (L [ a ]) b
|
||||||
|
| (L _ as a), (I _ as b) -> compare a (L [ b ])
|
||||||
|
;;
|
||||||
|
end
|
||||||
|
|
||||||
|
let%expect_test "Day 13.1" =
|
||||||
|
Utils.lines_of_input 13
|
||||||
|
|> List.filter Fun.(not % String.is_empty)
|
||||||
|
|> List.map Packet.of_str
|
||||||
|
|> List.chunks 2
|
||||||
|
|> List.mapi (fun i packets ->
|
||||||
|
match packets with
|
||||||
|
| [ a; b ] when Packet.compare a b < 0 -> i + 1
|
||||||
|
| _ -> 0)
|
||||||
|
|> List.reduce_exn ( + )
|
||||||
|
|> print_int;
|
||||||
|
[%expect {| 6272 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 13.2" =
|
||||||
|
Utils.lines_of_input 13
|
||||||
|
|> List.filter Fun.(not % String.is_empty)
|
||||||
|
|> List.map (fun line -> false, Packet.of_str line)
|
||||||
|
|> List.append [ true, Packet.of_str "[[2]]"; true, Packet.of_str "[[6]]" ]
|
||||||
|
|> List.sort (fun (_, a) (_, b) -> Packet.compare a b)
|
||||||
|
|> List.mapi (fun i (is_divider, _) -> if is_divider then i + 1 else 1)
|
||||||
|
|> List.reduce_exn ( * )
|
||||||
|
|> print_int;
|
||||||
|
[%expect {| 22288 |}]
|
||||||
|
;;
|
||||||
+190
@@ -0,0 +1,190 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
type tile =
|
||||||
|
| Empty
|
||||||
|
| Rock
|
||||||
|
| Sand
|
||||||
|
| Start
|
||||||
|
| Path_D
|
||||||
|
| Path_L
|
||||||
|
| Path_R
|
||||||
|
|
||||||
|
let char_of_tile _ = function
|
||||||
|
| Empty -> '-'
|
||||||
|
| Rock -> '#'
|
||||||
|
| Sand -> 'o'
|
||||||
|
| Start -> 'v'
|
||||||
|
| Path_D -> '|'
|
||||||
|
| Path_L -> '/'
|
||||||
|
| Path_R -> '\\'
|
||||||
|
;;
|
||||||
|
|
||||||
|
let is_sand = function
|
||||||
|
| Sand -> true
|
||||||
|
| _ -> false
|
||||||
|
;;
|
||||||
|
|
||||||
|
let parse_line line =
|
||||||
|
let open Utils.Parse in
|
||||||
|
let vec = Vec2.of_tuple <$> both int (char ',' *> int) in
|
||||||
|
let vec_list = sep_by (string " -> ") vec in
|
||||||
|
Result.get_or_failwith @@ parse_string ~consume:All vec_list line
|
||||||
|
;;
|
||||||
|
|
||||||
|
let draw_rocks grid points =
|
||||||
|
let open Grid in
|
||||||
|
let _ =
|
||||||
|
points
|
||||||
|
|> List.reduce (fun a b ->
|
||||||
|
iter_region grid a b (fun pos -> grid.%(pos) <- Rock);
|
||||||
|
b)
|
||||||
|
in
|
||||||
|
()
|
||||||
|
;;
|
||||||
|
|
||||||
|
let parse_grid lines start =
|
||||||
|
let points = Iter.map Fun.(parse_line %> Iter.of_list) lines in
|
||||||
|
let Vec2.{ x = lx; y = ly }, Vec2.{ x = hx; y = hy } =
|
||||||
|
points |> Iter.flatten |> Iter.cons start |> Vec2.find_bounds 0
|
||||||
|
in
|
||||||
|
let pad_floor = 1 in
|
||||||
|
let pad_x = 2 in
|
||||||
|
let height = 1 + hy - ly + pad_floor in
|
||||||
|
let lx = min lx (start.x - height) in
|
||||||
|
let hx = max hx (start.x + height) in
|
||||||
|
let width = 1 + hx - lx + (pad_x * 2) in
|
||||||
|
let extra = Vec2.of_tuple (lx - pad_x, ly) in
|
||||||
|
let start = Vec2.(start - extra) in
|
||||||
|
let open Grid in
|
||||||
|
let grid = init ~width ~height (fun _ -> Empty) in
|
||||||
|
grid.%(start) <- Start;
|
||||||
|
Iter.iter
|
||||||
|
Fun.(Iter.map (fun point -> Vec2.(point - extra)) %> Iter.to_list %> draw_rocks grid)
|
||||||
|
points;
|
||||||
|
grid, start
|
||||||
|
;;
|
||||||
|
|
||||||
|
type is_done =
|
||||||
|
| Continue
|
||||||
|
| Done
|
||||||
|
|
||||||
|
let rec drop_sand_abyss draw_path grid start =
|
||||||
|
let d = Vec2.(start + down) in
|
||||||
|
let l = Vec2.(d + left) in
|
||||||
|
let r = Vec2.(d + right) in
|
||||||
|
let open Grid in
|
||||||
|
match grid.%(l), grid.%(d), grid.%(r) with
|
||||||
|
| _, None, _ -> Done
|
||||||
|
| _, Some Empty, _ ->
|
||||||
|
if draw_path then grid.%(d) <- Path_D;
|
||||||
|
drop_sand_abyss draw_path grid d
|
||||||
|
| Some Empty, _, _ ->
|
||||||
|
if draw_path then grid.%(l) <- Path_L;
|
||||||
|
drop_sand_abyss draw_path grid l
|
||||||
|
| _, _, Some Empty ->
|
||||||
|
if draw_path then grid.%(r) <- Path_R;
|
||||||
|
drop_sand_abyss draw_path grid r
|
||||||
|
| _, _, _ ->
|
||||||
|
(match grid.%(start) with
|
||||||
|
| Some Empty ->
|
||||||
|
grid.%(start) <- Sand;
|
||||||
|
Continue
|
||||||
|
| _ -> failwith "oh no!")
|
||||||
|
;;
|
||||||
|
|
||||||
|
let rec drop_sand_floor grid start =
|
||||||
|
let d = Vec2.(start + down) in
|
||||||
|
let l = Vec2.(d + left) in
|
||||||
|
let r = Vec2.(d + right) in
|
||||||
|
let open Grid in
|
||||||
|
match grid.%(l), grid.%(d), grid.%(r) with
|
||||||
|
| _, Some Empty, _ -> drop_sand_floor grid d
|
||||||
|
| Some Empty, _, _ -> drop_sand_floor grid l
|
||||||
|
| _, _, Some Empty -> drop_sand_floor grid r
|
||||||
|
| _, _, _ ->
|
||||||
|
(match grid.%(start) with
|
||||||
|
| Some Empty ->
|
||||||
|
grid.%(start) <- Sand;
|
||||||
|
Continue
|
||||||
|
| Some Start ->
|
||||||
|
grid.%(start) <- Sand;
|
||||||
|
Done
|
||||||
|
| _ -> failwith "oh no!")
|
||||||
|
;;
|
||||||
|
|
||||||
|
let rec drop_all_sand drop grid start =
|
||||||
|
match drop grid start with
|
||||||
|
| Continue -> drop_all_sand drop grid start
|
||||||
|
| Done -> ()
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 14.1 example" =
|
||||||
|
let lines =
|
||||||
|
Iter.of_list [ "498,4 -> 498,6 -> 496,6"; "503,4 -> 502,4 -> 502,9 -> 494,9" ]
|
||||||
|
in
|
||||||
|
let start = Vec2.of_tuple (500, 0) in
|
||||||
|
let grid, start = parse_grid lines start in
|
||||||
|
drop_all_sand (drop_sand_abyss false) grid start;
|
||||||
|
let _ = drop_sand_abyss true grid start in
|
||||||
|
let count = Grid.count grid is_sand in
|
||||||
|
Printf.printf "%i grains\n%s" count @@ Grid.draw grid char_of_tile;
|
||||||
|
[%expect
|
||||||
|
{|
|
||||||
|
24 grains
|
||||||
|
-------------v-------------
|
||||||
|
-------------|-------------
|
||||||
|
------------/o-------------
|
||||||
|
-----------/ooo------------
|
||||||
|
----------/#ooo##----------
|
||||||
|
---------/o#ooo#-----------
|
||||||
|
--------/###ooo#-----------
|
||||||
|
--------|--oooo#-----------
|
||||||
|
-------/o-ooooo#-----------
|
||||||
|
------/#########-----------
|
||||||
|
------|-------------------- |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 14.2 example" =
|
||||||
|
let lines =
|
||||||
|
Iter.of_list [ "498,4 -> 498,6 -> 496,6"; "503,4 -> 502,4 -> 502,9 -> 494,9" ]
|
||||||
|
in
|
||||||
|
let start = Vec2.of_tuple (500, 0) in
|
||||||
|
let grid, start = parse_grid lines start in
|
||||||
|
drop_all_sand drop_sand_floor grid start;
|
||||||
|
let count = Grid.count grid is_sand in
|
||||||
|
Printf.printf "%i grains\n%s" count @@ Grid.draw grid char_of_tile;
|
||||||
|
[%expect
|
||||||
|
{|
|
||||||
|
93 grains
|
||||||
|
-------------o-------------
|
||||||
|
------------ooo------------
|
||||||
|
-----------ooooo-----------
|
||||||
|
----------ooooooo----------
|
||||||
|
---------oo#ooo##o---------
|
||||||
|
--------ooo#ooo#ooo--------
|
||||||
|
-------oo###ooo#oooo-------
|
||||||
|
------oooo-oooo#ooooo------
|
||||||
|
-----oooooooooo#oooooo-----
|
||||||
|
----ooo#########ooooooo----
|
||||||
|
---ooooo-------ooooooooo--- |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 14.1" =
|
||||||
|
let lines = Iter.of_list @@ Utils.lines_of_input 14 in
|
||||||
|
let start = Vec2.of_tuple (500, 0) in
|
||||||
|
let grid, start = parse_grid lines start in
|
||||||
|
drop_all_sand (drop_sand_abyss false) grid start;
|
||||||
|
let count = Grid.count grid is_sand in
|
||||||
|
Printf.printf "%i" count;
|
||||||
|
[%expect {| 683 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 14.2" =
|
||||||
|
let lines = Iter.of_list @@ Utils.lines_of_input 14 in
|
||||||
|
let start = Vec2.of_tuple (500, 0) in
|
||||||
|
let grid, start = parse_grid lines start in
|
||||||
|
drop_all_sand drop_sand_floor grid start;
|
||||||
|
let count = Grid.count grid is_sand in
|
||||||
|
Printf.printf "%i" count;
|
||||||
|
[%expect {| 28821 |}]
|
||||||
|
;;
|
||||||
+167
@@ -0,0 +1,167 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let example_lines =
|
||||||
|
[ "Sensor at x=2, y=18: closest beacon is at x=-2, y=15"
|
||||||
|
; "Sensor at x=9, y=16: closest beacon is at x=10, y=16"
|
||||||
|
; "Sensor at x=13, y=2: closest beacon is at x=15, y=3"
|
||||||
|
; "Sensor at x=12, y=14: closest beacon is at x=10, y=16"
|
||||||
|
; "Sensor at x=10, y=20: closest beacon is at x=10, y=16"
|
||||||
|
; "Sensor at x=14, y=17: closest beacon is at x=10, y=16"
|
||||||
|
; "Sensor at x=8, y=7: closest beacon is at x=2, y=10"
|
||||||
|
; "Sensor at x=2, y=0: closest beacon is at x=2, y=10"
|
||||||
|
; "Sensor at x=0, y=11: closest beacon is at x=2, y=10"
|
||||||
|
; "Sensor at x=20, y=14: closest beacon is at x=25, y=17"
|
||||||
|
; "Sensor at x=17, y=20: closest beacon is at x=21, y=22"
|
||||||
|
; "Sensor at x=16, y=7: closest beacon is at x=15, y=3"
|
||||||
|
; "Sensor at x=14, y=3: closest beacon is at x=15, y=3"
|
||||||
|
; "Sensor at x=20, y=1: closest beacon is at x=15, y=3"
|
||||||
|
]
|
||||||
|
;;
|
||||||
|
|
||||||
|
type sensor =
|
||||||
|
{ pos : Vec2.t
|
||||||
|
; beacon : Vec2.t
|
||||||
|
; dist : int
|
||||||
|
}
|
||||||
|
[@@deriving show { with_path = false }]
|
||||||
|
|
||||||
|
let taxicab_dist a b =
|
||||||
|
let x, y = Vec2.(abs (a - b) |> to_tuple) in
|
||||||
|
x + y
|
||||||
|
;;
|
||||||
|
|
||||||
|
let parse_sensor line =
|
||||||
|
match List.map int_of_string Re.(matches (Pcre.regexp {|-?\d+|}) line) with
|
||||||
|
| [ sx; sy; bx; by ] ->
|
||||||
|
let pos, beacon = Vec2.(of_tuple (sx, sy), of_tuple (bx, by)) in
|
||||||
|
{ pos; beacon; dist = taxicab_dist pos beacon }
|
||||||
|
| _ -> failwith "parse error"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let could_be_beacon sensors ignore_known pos =
|
||||||
|
sensors
|
||||||
|
|> Iter.fold_while
|
||||||
|
(fun _ s ->
|
||||||
|
let d = taxicab_dist pos s.pos in
|
||||||
|
if d <= s.dist && (ignore_known || not Vec2.(pos = s.beacon))
|
||||||
|
then false, `Stop
|
||||||
|
else true, `Continue)
|
||||||
|
true
|
||||||
|
;;
|
||||||
|
|
||||||
|
(*{[
|
||||||
|
equation for line
|
||||||
|
y = m*x + c
|
||||||
|
|
||||||
|
beacon range boundaries are made up of four lines:
|
||||||
|
slope 1 passing thru bx + dist + 1, by
|
||||||
|
slope 1 passing thru bx - dist - 1, by
|
||||||
|
slope -1 passing thru bx + dist + 1, by
|
||||||
|
slope -1 passing thru bx - dist - 1, by
|
||||||
|
|
||||||
|
to find the constant given a slope, plug a point into
|
||||||
|
c = y - m*x
|
||||||
|
|
||||||
|
constants are stored separately for boundaries with positive and negative
|
||||||
|
slope so that they can be handled separately
|
||||||
|
p1 = y - bx - dist - 1
|
||||||
|
p2 = y - bx + dist + 1
|
||||||
|
n1 = y + bx + dist + 1
|
||||||
|
n2 = y + bx - dist - 1
|
||||||
|
]}*)
|
||||||
|
let get_consts sensors extra =
|
||||||
|
sensors
|
||||||
|
|> Iter.fold
|
||||||
|
(fun (p_slope_consts, n_slope_consts) { pos; beacon = _; dist } ->
|
||||||
|
let p1 = pos.y - pos.x + dist + extra in
|
||||||
|
let p2 = pos.y - pos.x - dist - extra in
|
||||||
|
let n1 = pos.y + pos.x + dist + extra in
|
||||||
|
let n2 = pos.y + pos.x - dist - extra in
|
||||||
|
Iter.(
|
||||||
|
( append p_slope_consts (of_list [ p1; p2 ])
|
||||||
|
, append n_slope_consts (of_list [ n1; n2 ]) )))
|
||||||
|
(Iter.empty, Iter.empty)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve_part_1 lines scan_y =
|
||||||
|
let sensors = lines |> Iter.of_list |> Iter.map parse_sensor in
|
||||||
|
let p_slope_consts, n_slope_consts = get_consts sensors 0 in
|
||||||
|
(*{[
|
||||||
|
for a known y to intersect with a positive slope boundary:
|
||||||
|
y = x + p
|
||||||
|
x = y - p
|
||||||
|
|
||||||
|
and for a negative slope boundary:
|
||||||
|
y = -x + n
|
||||||
|
x = n - y
|
||||||
|
]}*)
|
||||||
|
let intersection_xs =
|
||||||
|
Iter.append
|
||||||
|
(Iter.map (fun p -> scan_y - p) p_slope_consts)
|
||||||
|
(Iter.map (fun n -> n - scan_y) n_slope_consts)
|
||||||
|
|> Iter.sort_uniq ~cmp:Int.compare
|
||||||
|
in
|
||||||
|
let check x = could_be_beacon sensors false @@ Vec2.of_tuple (x, scan_y) in
|
||||||
|
let rec count_not_beacons count xs =
|
||||||
|
match xs with
|
||||||
|
| x :: next :: rest ->
|
||||||
|
(* if there is a region [x+1, next), the value of check
|
||||||
|
is the same for each point within it. intersection points
|
||||||
|
must be checked separately from the regions between them *)
|
||||||
|
let intersection = if check x then 0 else 1 in
|
||||||
|
let region = if x + 1 < next && check (x + 1) then 0 else next - (x + 1) in
|
||||||
|
count_not_beacons (count + intersection + region) (next :: rest)
|
||||||
|
| _ -> count
|
||||||
|
in
|
||||||
|
count_not_beacons 0 @@ Iter.to_list intersection_xs
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 15.1 example" =
|
||||||
|
Printf.printf "%i\n" @@ solve_part_1 example_lines 10;
|
||||||
|
[%expect {| 26 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 15.1" =
|
||||||
|
Printf.printf "%i\n" @@ solve_part_1 (Utils.lines_of_input 15) 2000000;
|
||||||
|
[%expect {| 5525990 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve_part_2 lines range mult =
|
||||||
|
let sensors = lines |> Iter.of_list |> Iter.map parse_sensor in
|
||||||
|
let in_bounds = Vec2.(in_bounds origin @@ of_tuple (range, range)) in
|
||||||
|
let p_slope_consts, n_slope_consts = get_consts sensors 1 in
|
||||||
|
(*{[
|
||||||
|
boundaries only itersect if they have opposite slope.
|
||||||
|
to find the intersection, set equations to be equal and solve.
|
||||||
|
y = x + p
|
||||||
|
y = -x + n // set equal
|
||||||
|
x + p = -x + n // add x and subtract p
|
||||||
|
2x = n - p // divide 2
|
||||||
|
-> x = (n - p)/2 // substitute x into original
|
||||||
|
y = (n - p)/2 + p // multiply 2
|
||||||
|
2y = n + p // div 2
|
||||||
|
-> y = (n + p)/2
|
||||||
|
]}*)
|
||||||
|
let point =
|
||||||
|
Iter.product p_slope_consts n_slope_consts
|
||||||
|
|> Iter.fold_while
|
||||||
|
(fun _ (p, n) ->
|
||||||
|
let i = Vec2.of_tuple ((n - p) / 2, (n + p) / 2) in
|
||||||
|
if in_bounds i && could_be_beacon sensors true i
|
||||||
|
then Some i, `Stop
|
||||||
|
else None, `Continue)
|
||||||
|
None
|
||||||
|
|> Option.get_exn_or "no distress beacon found :("
|
||||||
|
in
|
||||||
|
(mult * point.x) + point.y
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 15.2 example" =
|
||||||
|
Printf.printf "%i\n" @@ solve_part_2 example_lines 20 4000000;
|
||||||
|
[%expect {| 56000011 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 15.2" =
|
||||||
|
Printf.printf "%i\n" @@ solve_part_2 (Utils.lines_of_input 15) 4000000 4000000;
|
||||||
|
[%expect {| 11756174628223 |}]
|
||||||
|
;;
|
||||||
+141
@@ -0,0 +1,141 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let example_lines =
|
||||||
|
String.lines
|
||||||
|
{|Valve AA has flow rate=0; tunnels lead to valves DD, II, BB
|
||||||
|
Valve BB has flow rate=13; tunnels lead to valves CC, AA
|
||||||
|
Valve CC has flow rate=2; tunnels lead to valves DD, BB
|
||||||
|
Valve DD has flow rate=20; tunnels lead to valves CC, AA, EE
|
||||||
|
Valve EE has flow rate=3; tunnels lead to valves FF, DD
|
||||||
|
Valve FF has flow rate=0; tunnels lead to valves EE, GG
|
||||||
|
Valve GG has flow rate=0; tunnels lead to valves FF, HH
|
||||||
|
Valve HH has flow rate=22; tunnel leads to valve GG
|
||||||
|
Valve II has flow rate=0; tunnels lead to valves AA, JJ
|
||||||
|
Valve JJ has flow rate=21; tunnel leads to valve II
|
||||||
|
|}
|
||||||
|
;;
|
||||||
|
|
||||||
|
type valve =
|
||||||
|
{ flow : int
|
||||||
|
; mask : int
|
||||||
|
}
|
||||||
|
|
||||||
|
let parse_valves lines =
|
||||||
|
let rooms = Hashtbl.create 100 in
|
||||||
|
lines
|
||||||
|
|> List.iter (fun line ->
|
||||||
|
let int_matches = List.map int_of_string Re.(matches (Pcre.regexp {|\d+|}) line) in
|
||||||
|
let valve_matches = Re.(matches (Pcre.regexp {|[A-Z]{2}|}) line) in
|
||||||
|
match int_matches, valve_matches with
|
||||||
|
| [ flow ], name :: tunnels -> Hashtbl.add rooms name (flow, tunnels)
|
||||||
|
| _ -> failwith "parse error");
|
||||||
|
let valves =
|
||||||
|
Hashtbl.to_list rooms
|
||||||
|
|> List.filter (fun (_, (flow, _)) -> flow > 0)
|
||||||
|
|> List.mapi (fun i (name, (flow, _)) ->
|
||||||
|
let mask = Int.(1 lsl i) in
|
||||||
|
name, { flow; mask })
|
||||||
|
in
|
||||||
|
let distances = Hashtbl.create 100 in
|
||||||
|
valves
|
||||||
|
|> List.map (fun (valve, _) -> valve)
|
||||||
|
|> List.cons "AA"
|
||||||
|
|> List.iter (fun from ->
|
||||||
|
let dist_of =
|
||||||
|
Fun.(
|
||||||
|
Utils.djikstra_hash
|
||||||
|
~get_weight:(fun _ _ -> 1)
|
||||||
|
~get_neighbors:(fun room ->
|
||||||
|
match Hashtbl.get rooms room with
|
||||||
|
| Some (_, tunnels) -> Iter.of_list tunnels
|
||||||
|
| None -> failwith "sad")
|
||||||
|
~start_nodes:[ from ]
|
||||||
|
()
|
||||||
|
%> Option.get_exn_or "big sad")
|
||||||
|
in
|
||||||
|
valves
|
||||||
|
|> List.remove_assoc ~eq:String.equal from
|
||||||
|
|> List.iter (fun (valve, _) ->
|
||||||
|
Hashtbl.replace distances (from, valve) (dist_of valve)));
|
||||||
|
let get_dist f t =
|
||||||
|
match Hashtbl.get distances (f, t) with
|
||||||
|
| Some dist -> dist
|
||||||
|
| None -> failwith @@ Printf.sprintf "cant find distance %s -> %s" f t
|
||||||
|
in
|
||||||
|
valves, get_dist
|
||||||
|
;;
|
||||||
|
|
||||||
|
let traverse
|
||||||
|
get_dist
|
||||||
|
(valves : (string * valve) list)
|
||||||
|
?(current = "AA")
|
||||||
|
?(released = 0)
|
||||||
|
?(opened = 0)
|
||||||
|
time
|
||||||
|
=
|
||||||
|
let states = Hashtbl.create 1000 in
|
||||||
|
let rec traverse' current time released opened =
|
||||||
|
Hashtbl.update
|
||||||
|
states
|
||||||
|
~f:(fun _ current ->
|
||||||
|
match current with
|
||||||
|
| Some r when r >= released -> Some r
|
||||||
|
| _ -> Some released)
|
||||||
|
~k:opened;
|
||||||
|
valves
|
||||||
|
|> List.iter (fun (name, { flow; mask }) ->
|
||||||
|
if Int.(mask land opened) = 0
|
||||||
|
then (
|
||||||
|
let dist = get_dist current name in
|
||||||
|
let time' = time - (dist + 1) in
|
||||||
|
if time' > 0
|
||||||
|
then (
|
||||||
|
let released' = released + (flow * time') in
|
||||||
|
let opened' = Int.(mask lor opened) in
|
||||||
|
traverse' name time' released' opened')))
|
||||||
|
in
|
||||||
|
traverse' current time released opened;
|
||||||
|
states
|
||||||
|
|> Iter.of_hashtbl
|
||||||
|
|> Iter.sort ~cmp:(fun (_, a_score) (_, b_score) -> b_score - a_score)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve_part_1 lines =
|
||||||
|
let valves, get_dist = parse_valves lines in
|
||||||
|
let states = traverse get_dist valves 30 in
|
||||||
|
match states |> Iter.take 1 |> Iter.to_list with
|
||||||
|
| [ (_, score) ] -> score
|
||||||
|
| _ -> failwith "no traversals ?"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 16.1 example" =
|
||||||
|
Printf.printf "%i\n" @@ solve_part_1 example_lines;
|
||||||
|
[%expect {| 1651 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 16.1" =
|
||||||
|
Printf.printf "%i\n" @@ solve_part_1 @@ Utils.lines_of_input 16;
|
||||||
|
[%expect {| 2265 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve_part_2 lines =
|
||||||
|
let valves, get_dist = parse_valves @@ lines in
|
||||||
|
let states = traverse get_dist valves 26 in
|
||||||
|
states
|
||||||
|
|> Iter.filter_map (fun (a_set, a_score) ->
|
||||||
|
match Iter.find_pred (fun (b_set, _) -> Int.(a_set land b_set) = 0) states with
|
||||||
|
| Some (_, b_score) -> Some (a_score + b_score)
|
||||||
|
| None -> None)
|
||||||
|
|> Iter.fold Int.max 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 16.2 example" =
|
||||||
|
Printf.printf "%i\n" @@ solve_part_2 example_lines;
|
||||||
|
[%expect {| 1707 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
(* god damn bitmasks are fast, 30x speedup from StrSet! down to 50ms now *)
|
||||||
|
let%expect_test "Day 16.2" =
|
||||||
|
Printf.printf "%i\n" @@ solve_part_2 @@ Utils.lines_of_input 16;
|
||||||
|
[%expect {| 2811 |}]
|
||||||
|
;;
|
||||||
+201
@@ -0,0 +1,201 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let cave_width = 7
|
||||||
|
let example_lines = [ ">>><<><>><<<>><>>><<<>>><<<><<<>><>><<>>" ]
|
||||||
|
|
||||||
|
let dir_of_char = function
|
||||||
|
| '<' -> Vec2.left
|
||||||
|
| '>' -> Vec2.right
|
||||||
|
| _ -> failwith "oof"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let next_stream_idx stream idx = (idx + 1) mod Array.length stream
|
||||||
|
|
||||||
|
(*[{
|
||||||
|
#
|
||||||
|
# # #
|
||||||
|
### # # ##
|
||||||
|
#### # ### # ##
|
||||||
|
|
||||||
|
row plus angle col square
|
||||||
|
|
||||||
|
}]*)
|
||||||
|
type shape =
|
||||||
|
| Row
|
||||||
|
| Plus
|
||||||
|
| Angle
|
||||||
|
| Col
|
||||||
|
| Square
|
||||||
|
|
||||||
|
let get_shape idx = [| Row; Plus; Angle; Col; Square |].(idx mod 5)
|
||||||
|
|
||||||
|
let shape_points shape pos =
|
||||||
|
let points =
|
||||||
|
match shape with
|
||||||
|
| Row -> [ 0, 0; 1, 0; 2, 0; 3, 0 ]
|
||||||
|
| Plus -> [ 0, 1; 1, 0; 1, 1; 1, 2; 2, 1 ]
|
||||||
|
| Angle -> [ 0, 0; 1, 0; 2, 0; 2, 1; 2, 2 ]
|
||||||
|
| Col -> [ 0, 0; 0, 1; 0, 2; 0, 3 ]
|
||||||
|
| Square -> [ 0, 0; 1, 0; 0, 1; 1, 1 ]
|
||||||
|
in
|
||||||
|
points |> List.map (fun point -> Vec2.(pos + of_tuple point))
|
||||||
|
;;
|
||||||
|
|
||||||
|
type loop_key =
|
||||||
|
{ rock : shape
|
||||||
|
; stream_idx : int
|
||||||
|
; normalized_topo : int array
|
||||||
|
}
|
||||||
|
|
||||||
|
type loop =
|
||||||
|
{ rock_idx : int
|
||||||
|
; height : int
|
||||||
|
}
|
||||||
|
|
||||||
|
type cave =
|
||||||
|
{ grid : char Grid.t
|
||||||
|
; mutable grid_topo : int array
|
||||||
|
; mutable grid_height : int
|
||||||
|
; total_rocks : int
|
||||||
|
; mutable rocks : int
|
||||||
|
; mutable stream_idx : int
|
||||||
|
; loop_cache : (loop_key, loop) Hashtbl.t
|
||||||
|
; mutable height : int
|
||||||
|
}
|
||||||
|
|
||||||
|
let init_cave max_height total_rocks =
|
||||||
|
let grid = Grid.init ~width:7 ~height:max_height (Fun.const '.') in
|
||||||
|
{ grid
|
||||||
|
; height = -1
|
||||||
|
; grid_height = -1
|
||||||
|
; rocks = 0
|
||||||
|
; stream_idx = 0
|
||||||
|
; grid_topo = Array.init cave_width (Fun.const 0)
|
||||||
|
; loop_cache = Hashtbl.create max_height
|
||||||
|
; total_rocks
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
|
||||||
|
let draw_cave cave = Grid.draw cave.grid ~rev_y:true (fun _ contents -> contents)
|
||||||
|
|
||||||
|
let place_shape cave shape pos =
|
||||||
|
shape_points shape pos
|
||||||
|
|> List.iter (fun point ->
|
||||||
|
let delta = point.Vec2.y - cave.grid_height in
|
||||||
|
if delta > 0
|
||||||
|
then (
|
||||||
|
cave.height <- cave.height + delta;
|
||||||
|
cave.grid_height <- cave.grid_height + delta);
|
||||||
|
cave.grid_topo.(point.x) <- max point.y cave.grid_topo.(point.x);
|
||||||
|
Grid.set_e cave.grid point '#')
|
||||||
|
;;
|
||||||
|
|
||||||
|
let can_place_shape cave shape pos =
|
||||||
|
shape_points shape pos
|
||||||
|
|> List.fold_while
|
||||||
|
(fun _ point ->
|
||||||
|
match cave.grid.Grid.%(point) with
|
||||||
|
| Some '.' -> true, `Continue
|
||||||
|
| _ -> false, `Stop)
|
||||||
|
false
|
||||||
|
;;
|
||||||
|
|
||||||
|
let drop_shape cave stream =
|
||||||
|
let shape = get_shape cave.rocks in
|
||||||
|
let rec drop pos =
|
||||||
|
let stream_pos = Vec2.(pos + stream.(cave.stream_idx)) in
|
||||||
|
cave.stream_idx <- next_stream_idx stream cave.stream_idx;
|
||||||
|
let pos = if can_place_shape cave shape stream_pos then stream_pos else pos in
|
||||||
|
let drop_pos = Vec2.(pos + Vec2.up) in
|
||||||
|
if can_place_shape cave shape drop_pos
|
||||||
|
then drop drop_pos
|
||||||
|
else place_shape cave shape pos
|
||||||
|
in
|
||||||
|
cave.rocks <- cave.rocks + 1;
|
||||||
|
drop Vec2.{ x = 2; y = Int.(cave.grid_height + 4) }
|
||||||
|
;;
|
||||||
|
|
||||||
|
let normalize_topo topo =
|
||||||
|
let min = Array.min_exn Int.compare topo in
|
||||||
|
Array.map (fun x -> x - min) topo
|
||||||
|
;;
|
||||||
|
|
||||||
|
let rec drop_shapes cave stream =
|
||||||
|
let loop_key =
|
||||||
|
{ rock = get_shape cave.rocks
|
||||||
|
; stream_idx = cave.stream_idx
|
||||||
|
; normalized_topo = normalize_topo cave.grid_topo
|
||||||
|
}
|
||||||
|
in
|
||||||
|
let remaining_rocks cave = cave.total_rocks - cave.rocks in
|
||||||
|
let loop_rocks loop = cave.rocks - loop.rock_idx in
|
||||||
|
let loop_fits loop = loop_rocks loop < remaining_rocks cave in
|
||||||
|
match Hashtbl.get cave.loop_cache loop_key with
|
||||||
|
| Some loop when loop_fits loop ->
|
||||||
|
let loop_height = cave.height - loop.height in
|
||||||
|
cave.height <- cave.height + loop_height;
|
||||||
|
cave.rocks <- cave.rocks + loop_rocks loop;
|
||||||
|
drop_shapes cave stream
|
||||||
|
| _ when remaining_rocks cave > 0 ->
|
||||||
|
let loop = { height = cave.height; rock_idx = cave.rocks } in
|
||||||
|
Hashtbl.add cave.loop_cache loop_key loop;
|
||||||
|
drop_shape cave stream;
|
||||||
|
drop_shapes cave stream
|
||||||
|
| _ -> ()
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve remaining_rocks lines =
|
||||||
|
let stream = lines |> List.hd |> Iter.of_str |> Iter.map dir_of_char |> Iter.to_array in
|
||||||
|
let cave = init_cave 100_000 remaining_rocks in
|
||||||
|
drop_shapes cave stream;
|
||||||
|
cave.height + 1
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 17.1 Example" =
|
||||||
|
Printf.printf "height: %i\n" @@ solve 2022 example_lines;
|
||||||
|
[%expect {| height: 3068 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 17.1" =
|
||||||
|
Printf.printf "height: %i\n" @@ solve 2022 (Utils.lines_of_input 17);
|
||||||
|
[%expect {| height: 3227 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 17.2 Example" =
|
||||||
|
Printf.printf "height: %i\n" @@ solve 1_000_000_000_000 example_lines;
|
||||||
|
[%expect {| height: 1514285714288 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 17.2" =
|
||||||
|
Printf.printf "height: %i\n" @@ solve 1_000_000_000_000 (Utils.lines_of_input 17);
|
||||||
|
[%expect {| height: 1597714285698 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Smol tower" =
|
||||||
|
let stream =
|
||||||
|
example_lines |> List.hd |> Iter.of_str |> Iter.map dir_of_char |> Iter.to_array
|
||||||
|
in
|
||||||
|
let cave = init_cave 18 8 in
|
||||||
|
drop_shapes cave stream;
|
||||||
|
Printf.printf "%s" @@ draw_cave cave;
|
||||||
|
[%expect
|
||||||
|
{|
|
||||||
|
.......
|
||||||
|
.......
|
||||||
|
.......
|
||||||
|
.....#.
|
||||||
|
.....#.
|
||||||
|
..####.
|
||||||
|
.###...
|
||||||
|
..#....
|
||||||
|
.####..
|
||||||
|
....##.
|
||||||
|
....##.
|
||||||
|
....#..
|
||||||
|
..#.#..
|
||||||
|
..#.#..
|
||||||
|
#####..
|
||||||
|
..###..
|
||||||
|
...#...
|
||||||
|
..####. |}]
|
||||||
|
;;
|
||||||
+121
@@ -0,0 +1,121 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let example_lines =
|
||||||
|
String.lines
|
||||||
|
{|2,2,2
|
||||||
|
1,2,2
|
||||||
|
3,2,2
|
||||||
|
2,1,2
|
||||||
|
2,3,2
|
||||||
|
2,2,1
|
||||||
|
2,2,3
|
||||||
|
2,2,4
|
||||||
|
2,2,6
|
||||||
|
1,2,5
|
||||||
|
3,2,5
|
||||||
|
2,1,5
|
||||||
|
2,3,5|}
|
||||||
|
;;
|
||||||
|
|
||||||
|
module Vec3 = struct
|
||||||
|
type t = int * int * int [@@deriving show, eq, ord, hash]
|
||||||
|
|
||||||
|
let directions = [ 1, 0, 0; -1, 0, 0; 0, 1, 0; 0, -1, 0; 0, 0, 1; 0, 0, -1 ]
|
||||||
|
let ( + ) (x1, y1, z1) (x2, y2, z2) = x1 + x2, y1 + y2, z1 + z2
|
||||||
|
let ( - ) (x1, y1, z1) (x2, y2, z2) = x1 - x2, y1 - y2, z1 - z2
|
||||||
|
let ( = ) = equal
|
||||||
|
|
||||||
|
let iter_region (ax, ay, az) (bx, by, bz) callback =
|
||||||
|
for z = az to bz do
|
||||||
|
for y = ay to by do
|
||||||
|
for x = ax to bx do
|
||||||
|
let p = x, y, z in
|
||||||
|
callback p
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
let in_bounds (lx, ly, lz) (hx, hy, hz) (x, y, z) =
|
||||||
|
not (x < lx || x > hx || y < ly || y > hy || z < lz || z > hz)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let find_bounds points =
|
||||||
|
let first = Iter.head_exn points in
|
||||||
|
let padding = 1, 1, 1 in
|
||||||
|
let min, max =
|
||||||
|
points
|
||||||
|
|> Iter.drop 1
|
||||||
|
|> Iter.fold
|
||||||
|
(fun ((lx, ly, lz), (hx, hy, hz)) (x, y, z) ->
|
||||||
|
(min lx x, min ly y, min lz z), (max hx x, max hy y, max hz z))
|
||||||
|
(first, first)
|
||||||
|
in
|
||||||
|
min - padding, max + padding
|
||||||
|
;;
|
||||||
|
end
|
||||||
|
|
||||||
|
module Vec3Set = Set.Make (Vec3)
|
||||||
|
|
||||||
|
let parse_points lines =
|
||||||
|
lines
|
||||||
|
|> List.map (fun line ->
|
||||||
|
match List.map Int.of_string_exn Re.(matches (Pcre.regexp {|\d+|}) line) with
|
||||||
|
| [ x; y; z ] -> x, y, z
|
||||||
|
| _ -> failwith "oopzi doopers")
|
||||||
|
|> Vec3Set.of_list
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve_part_1 lines =
|
||||||
|
let points = parse_points lines in
|
||||||
|
let min, max = Vec3.find_bounds @@ Vec3Set.to_iter points in
|
||||||
|
let surface_area = ref 0 in
|
||||||
|
Vec3.iter_region min max (fun point ->
|
||||||
|
if not @@ Vec3Set.mem point points
|
||||||
|
then
|
||||||
|
Vec3.directions
|
||||||
|
|> List.iter (fun dir ->
|
||||||
|
let n = Vec3.(point + dir) in
|
||||||
|
if Vec3Set.mem n points then incr surface_area));
|
||||||
|
!surface_area
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 18.1 example" =
|
||||||
|
Format.printf "%i" @@ solve_part_1 example_lines;
|
||||||
|
[%expect {| 64 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 18.1" =
|
||||||
|
Format.printf "%i" @@ solve_part_1 @@ Utils.lines_of_input 18;
|
||||||
|
[%expect {| 3662 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve_part_2 lines =
|
||||||
|
let points = parse_points lines in
|
||||||
|
let min, max = Vec3.find_bounds @@ Vec3Set.to_iter points in
|
||||||
|
let in_bounds = Vec3.in_bounds min max in
|
||||||
|
let surface_area = ref 0 in
|
||||||
|
let directions_iter = Iter.of_list Vec3.directions in
|
||||||
|
let get_neighbors point =
|
||||||
|
directions_iter
|
||||||
|
|> Iter.map Vec3.(fun dir -> point + dir)
|
||||||
|
|> Iter.filter (fun neighbor ->
|
||||||
|
let in_droplet = Vec3Set.mem neighbor points in
|
||||||
|
if in_droplet then incr surface_area;
|
||||||
|
(not in_droplet) && in_bounds neighbor)
|
||||||
|
in
|
||||||
|
let _ignore =
|
||||||
|
Utils.djikstra_hash ~get_weight:(fun _ _ -> 1) ~get_neighbors ~start_nodes:[ min ] ()
|
||||||
|
in
|
||||||
|
!surface_area
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 18.2 example" =
|
||||||
|
Format.printf "%i" @@ solve_part_2 example_lines;
|
||||||
|
[%expect {| 58 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 18.2" =
|
||||||
|
Format.printf "%i" @@ solve_part_2 @@ Utils.lines_of_input 18;
|
||||||
|
[%expect {| 2060 |}]
|
||||||
|
;;
|
||||||
+12
-7
@@ -52,7 +52,8 @@ let match_outcome = function
|
|||||||
| _, _ -> Lose
|
| _, _ -> Lose
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let part1 lines =
|
let part1 () =
|
||||||
|
let lines = Utils.lines_of_input 2 in
|
||||||
let parse_line line =
|
let parse_line line =
|
||||||
match Re.Pcre.(split ~rex:(regexp {|\s+|}) line) with
|
match Re.Pcre.(split ~rex:(regexp {|\s+|}) line) with
|
||||||
| them :: me :: _ -> parse_move them, parse_move me
|
| them :: me :: _ -> parse_move them, parse_move me
|
||||||
@@ -66,7 +67,8 @@ let part1 lines =
|
|||||||
lines
|
lines
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let part2 lines =
|
let part2 () =
|
||||||
|
let lines = Utils.lines_of_input 2 in
|
||||||
let parse_line =
|
let parse_line =
|
||||||
function%pcre
|
function%pcre
|
||||||
| {|(?<them>\w)\s*(?<outcome>\w)|} -> parse_move them, parse_outcome outcome
|
| {|(?<them>\w)\s*(?<outcome>\w)|} -> parse_move them, parse_outcome outcome
|
||||||
@@ -86,9 +88,12 @@ let part2 lines =
|
|||||||
lines
|
lines
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let print () =
|
let%expect_test "Day 2.1" =
|
||||||
let lines = Utils.lines_of_input 2 in
|
Printf.printf "%d" @@ part1 ();
|
||||||
Printf.(
|
[%expect {| 11841 |}]
|
||||||
printf "Day 2.1: %d\n" @@ part1 lines;
|
;;
|
||||||
printf "Day 2.2: %d\n" @@ part2 lines)
|
|
||||||
|
let%expect_test "Day 2.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 13022 |}]
|
||||||
;;
|
;;
|
||||||
+20
-21
@@ -10,22 +10,17 @@ let priority char =
|
|||||||
| _ -> failwith @@ Printf.sprintf "'%c' is not a valid item" char
|
| _ -> failwith @@ Printf.sprintf "'%c' is not a valid item" char
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
let part1 () =
|
||||||
let parse_line line =
|
let lines = Utils.lines_of_input 3 in
|
||||||
let half_len = String.length line / 2 in
|
|
||||||
let first_half = String.sub line 0 half_len in
|
|
||||||
let second_half = String.sub line half_len half_len in
|
|
||||||
set_of_string first_half, set_of_string second_half
|
|
||||||
;;
|
|
||||||
|
|
||||||
let part1 lines =
|
|
||||||
List.fold_left
|
List.fold_left
|
||||||
(fun acc line ->
|
(fun acc line ->
|
||||||
let first, second = parse_line line in
|
let half_len = String.length line / 2 in
|
||||||
|
let first, second = Pair.map_same set_of_string (String.take_drop half_len line) in
|
||||||
let item =
|
let item =
|
||||||
match CharSet.elements @@ CharSet.inter first second with
|
match CharSet.elements @@ CharSet.inter first second with
|
||||||
| [ item ] -> item
|
| [ item ] -> item
|
||||||
| _ -> failwith "sad"
|
| _ ->
|
||||||
|
failwith "first and second half of each line should only have 1 intersection"
|
||||||
in
|
in
|
||||||
acc + priority item)
|
acc + priority item)
|
||||||
0
|
0
|
||||||
@@ -33,26 +28,30 @@ let part1 lines =
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
(*
|
(*
|
||||||
x thank you https://doc.sherlocode.com/ for helping me find Containers and its
|
shout out https://doc.sherlocode.com/ for helping me find Containers and its
|
||||||
x List.chunks and List.reduce functions
|
List.chunks and List.reduce functions
|
||||||
x*)
|
*)
|
||||||
let part2 lines =
|
let part2 () =
|
||||||
|
let lines = Utils.lines_of_input 3 in
|
||||||
let groups = List.chunks 3 (List.map set_of_string lines) in
|
let groups = List.chunks 3 (List.map set_of_string lines) in
|
||||||
List.fold_left
|
List.fold_left
|
||||||
(fun acc group ->
|
(fun acc group ->
|
||||||
let item =
|
let item =
|
||||||
match CharSet.elements @@ List.reduce_exn CharSet.inter group with
|
match CharSet.elements @@ List.reduce_exn CharSet.inter group with
|
||||||
| [ item ] -> item
|
| [ item ] -> item
|
||||||
| _ -> failwith "sad"
|
| _ -> failwith "each group of 3 lines should only have 1 intersection"
|
||||||
in
|
in
|
||||||
acc + priority item)
|
acc + priority item)
|
||||||
0
|
0
|
||||||
groups
|
groups
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let print () =
|
let%expect_test "Day 3.1" =
|
||||||
let lines = Utils.lines_of_input 3 in
|
Printf.printf "%d" @@ part1 ();
|
||||||
Printf.(
|
[%expect {| 7446 |}]
|
||||||
printf "Day 3.1: %d\n" @@ part1 lines;
|
;;
|
||||||
printf "Day 3.2: %d\n" @@ part2 lines)
|
|
||||||
|
let%expect_test "Day 3.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 2646 |}]
|
||||||
;;
|
;;
|
||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let lines = Utils.lines_of_input 4
|
||||||
|
|
||||||
|
let parse_line =
|
||||||
|
function%pcre
|
||||||
|
| {|(?<a>\d+)-(?<b>\d+),(?<c>\d+)-(?<d>\d+)|} ->
|
||||||
|
(int_of_string a, int_of_string b), (int_of_string c, int_of_string d)
|
||||||
|
| line -> failwith @@ Printf.sprintf "cannot parse line '%s'" line
|
||||||
|
;;
|
||||||
|
|
||||||
|
let count_overlaps is_overlapping =
|
||||||
|
lines
|
||||||
|
|> List.fold_left
|
||||||
|
(fun acc line ->
|
||||||
|
match is_overlapping @@ parse_line line with
|
||||||
|
| true -> acc + 1
|
||||||
|
| false -> acc)
|
||||||
|
0
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part1 () =
|
||||||
|
count_overlaps (fun pairs ->
|
||||||
|
match pairs with
|
||||||
|
| (l1, r1), (l2, r2) when (l1 <= l2 && r1 >= r2) || (l2 <= l1 && r2 >= r1) -> true
|
||||||
|
| _ -> false)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part2 () =
|
||||||
|
count_overlaps (fun pairs ->
|
||||||
|
match pairs with
|
||||||
|
| (l1, r1), (l2, r2) when r1 < l2 || r2 < l1 -> false
|
||||||
|
| _ -> true)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 4.1" =
|
||||||
|
Printf.printf "%d" @@ part1 ();
|
||||||
|
[%expect {| 547 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 4.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 843 |}]
|
||||||
|
;;
|
||||||
+84
@@ -0,0 +1,84 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let crane_drop stacks index boxes = stacks.(index) <- boxes @ stacks.(index)
|
||||||
|
|
||||||
|
let crane_lift stacks index count =
|
||||||
|
let stack = stacks.(index) in
|
||||||
|
let boxes, rest = List.take_drop count stack in
|
||||||
|
stacks.(index) <- rest;
|
||||||
|
boxes
|
||||||
|
;;
|
||||||
|
|
||||||
|
let crane_move1 stacks (count, lift, drop) =
|
||||||
|
List.iter
|
||||||
|
(fun _ ->
|
||||||
|
let box = crane_lift stacks lift 1 in
|
||||||
|
crane_drop stacks drop box)
|
||||||
|
List.Infix.(0 --^ count)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let crane_move stacks (count, lift, drop) =
|
||||||
|
let boxes = crane_lift stacks lift count in
|
||||||
|
crane_drop stacks drop boxes
|
||||||
|
;;
|
||||||
|
|
||||||
|
let init_stacks lines =
|
||||||
|
let stacks = Array.init 10 (fun _ -> []) in
|
||||||
|
let rec parse_line index line =
|
||||||
|
let chunk, rest = String.take_drop 4 line in
|
||||||
|
match%pcre chunk with
|
||||||
|
| {|(?<letter>\w)|} ->
|
||||||
|
crane_drop stacks index [ letter ];
|
||||||
|
parse_line (index + 1) rest
|
||||||
|
| {| |} -> parse_line (index + 1) rest
|
||||||
|
| _ -> ()
|
||||||
|
in
|
||||||
|
List.iter (parse_line 1) (List.rev lines);
|
||||||
|
stacks
|
||||||
|
;;
|
||||||
|
|
||||||
|
let move_stacks stacks lines crane_move =
|
||||||
|
let parse_line =
|
||||||
|
function%pcre
|
||||||
|
| {|move (?<count>\d+) from (?<lift>\d+) to (?<drop>\d+)|} ->
|
||||||
|
int_of_string count, int_of_string lift, int_of_string drop
|
||||||
|
| line -> failwith @@ Printf.sprintf "could not parse line '%s'" line
|
||||||
|
in
|
||||||
|
List.iter
|
||||||
|
(fun line ->
|
||||||
|
let instructions = parse_line line in
|
||||||
|
crane_move stacks instructions)
|
||||||
|
lines
|
||||||
|
;;
|
||||||
|
|
||||||
|
let parse_input lines =
|
||||||
|
let init_lines, lines = List.take_drop_while (String.starts_with ~prefix:"[") lines in
|
||||||
|
let move_lines = List.drop_while Fun.(not % String.starts_with ~prefix:"move") lines in
|
||||||
|
init_lines, move_lines
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve crane_move =
|
||||||
|
let init_lines, move_lines = parse_input @@ Utils.lines_of_input 5 in
|
||||||
|
let stacks = init_stacks init_lines in
|
||||||
|
let () = move_stacks stacks move_lines crane_move in
|
||||||
|
Array.fold_left
|
||||||
|
(fun acc stack ->
|
||||||
|
match stack with
|
||||||
|
| top :: _ -> acc ^ top
|
||||||
|
| [] -> acc)
|
||||||
|
""
|
||||||
|
stacks
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part1 () = solve crane_move1
|
||||||
|
let part2 () = solve crane_move
|
||||||
|
|
||||||
|
let%expect_test "Day 5.1" =
|
||||||
|
Printf.printf "%s" @@ part1 ();
|
||||||
|
[%expect {| PSNRGBTFT |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 5.2" =
|
||||||
|
Printf.printf "%s" @@ part2 ();
|
||||||
|
[%expect {| BNTZFPMMW |}]
|
||||||
|
;;
|
||||||
+35
@@ -0,0 +1,35 @@
|
|||||||
|
open Containers
|
||||||
|
module CharSet = Set.Make (Char)
|
||||||
|
|
||||||
|
let window = 4
|
||||||
|
|
||||||
|
let stream =
|
||||||
|
match Utils.lines_of_input 6 with
|
||||||
|
| [ line ] -> line
|
||||||
|
| _ -> failwith "more than one line in input"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let find_start window =
|
||||||
|
let length = String.length stream in
|
||||||
|
let start_index =
|
||||||
|
List.Infix.(0 --^ (length - window))
|
||||||
|
|> List.drop_while (fun index ->
|
||||||
|
let chunk = String.take window (String.drop index stream) in
|
||||||
|
window <> (chunk |> String.to_list |> CharSet.of_list |> CharSet.cardinal))
|
||||||
|
|> List.hd
|
||||||
|
in
|
||||||
|
start_index + window
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part1 () = find_start 4
|
||||||
|
let part2 () = find_start 14
|
||||||
|
|
||||||
|
let%expect_test "Day 6.1" =
|
||||||
|
Printf.printf "%d" @@ part1 ();
|
||||||
|
[%expect {| 1833 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 6.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 3425 |}]
|
||||||
|
;;
|
||||||
+112
@@ -0,0 +1,112 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
(* could have simplified this a lot by getting rid of File *)
|
||||||
|
type node =
|
||||||
|
| File of
|
||||||
|
{ name : string
|
||||||
|
; size : int
|
||||||
|
}
|
||||||
|
| Dir of
|
||||||
|
{ name : string
|
||||||
|
; parent : node option
|
||||||
|
; mutable children : node list
|
||||||
|
}
|
||||||
|
|
||||||
|
let get_dir_tree () =
|
||||||
|
let lines = List.drop 1 @@ Utils.lines_of_input 7 in
|
||||||
|
let line_num = ref 0 in
|
||||||
|
let tree = Dir { name = "/"; children = []; parent = None } in
|
||||||
|
let _ =
|
||||||
|
lines
|
||||||
|
|> List.fold_left
|
||||||
|
(fun node line ->
|
||||||
|
incr line_num;
|
||||||
|
match node with
|
||||||
|
| File _ -> failwith "current directory cannot be a file"
|
||||||
|
| Dir dir ->
|
||||||
|
(match String.split ~by:" " line with
|
||||||
|
| [ "$"; "ls" ] -> node
|
||||||
|
| [ "dir"; name ] ->
|
||||||
|
let new_dir = Dir { name; parent = Some (Dir dir); children = [] } in
|
||||||
|
dir.children <- new_dir :: dir.children;
|
||||||
|
node
|
||||||
|
| [ "$"; "cd"; ".." ] ->
|
||||||
|
(match dir.parent with
|
||||||
|
| Some parent -> parent
|
||||||
|
| _ ->
|
||||||
|
failwith
|
||||||
|
@@ Printf.sprintf
|
||||||
|
"ERROR:%d: cant cd .. because node '%s' has no parent"
|
||||||
|
!line_num
|
||||||
|
dir.name)
|
||||||
|
| [ "$"; "cd"; name ] ->
|
||||||
|
dir.children
|
||||||
|
|> List.find (fun child ->
|
||||||
|
match child with
|
||||||
|
| Dir child_dir -> String.Infix.(name = child_dir.name)
|
||||||
|
| _ -> false)
|
||||||
|
| [ size; name ] ->
|
||||||
|
let new_file = File { name; size = int_of_string size } in
|
||||||
|
dir.children <- new_file :: dir.children;
|
||||||
|
node
|
||||||
|
| _ -> failwith @@ Printf.sprintf "failed to parse line '%s'" line))
|
||||||
|
tree
|
||||||
|
in
|
||||||
|
tree
|
||||||
|
;;
|
||||||
|
|
||||||
|
let rec get_node_size fn node =
|
||||||
|
let get_node_size' = get_node_size fn in
|
||||||
|
match node with
|
||||||
|
| File file -> file.size
|
||||||
|
| Dir dir ->
|
||||||
|
let size =
|
||||||
|
match List.reduce ( + ) @@ List.map get_node_size' dir.children with
|
||||||
|
| Some size -> size
|
||||||
|
| None -> 0
|
||||||
|
in
|
||||||
|
fn size;
|
||||||
|
size
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part1 () =
|
||||||
|
let tree = get_dir_tree () in
|
||||||
|
let answer = ref 0 in
|
||||||
|
let build_answer dir_size =
|
||||||
|
if dir_size <= 100000 then answer := !answer + dir_size;
|
||||||
|
()
|
||||||
|
in
|
||||||
|
let _ = get_node_size build_answer tree in
|
||||||
|
!answer
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part2 () =
|
||||||
|
let tree = get_dir_tree () in
|
||||||
|
let dir_sizes = ref [] in
|
||||||
|
let collect_dir_sizes dir_size =
|
||||||
|
dir_sizes := dir_size :: !dir_sizes;
|
||||||
|
()
|
||||||
|
in
|
||||||
|
let used_space = get_node_size collect_dir_sizes tree in
|
||||||
|
let total_space = 70_000_000 in
|
||||||
|
let required_space = 30_000_000 in
|
||||||
|
let free_space = total_space - used_space in
|
||||||
|
match
|
||||||
|
!dir_sizes
|
||||||
|
|> List.sort ( - )
|
||||||
|
|> List.drop_while (fun size -> size < required_space - free_space)
|
||||||
|
|> List.head_opt
|
||||||
|
with
|
||||||
|
| Some size -> size
|
||||||
|
| None -> failwith "not possible!!"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 7.1" =
|
||||||
|
Printf.printf "%d" @@ part1 ();
|
||||||
|
[%expect {| 1453349 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 7.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 2948823 |}]
|
||||||
|
;;
|
||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let parse_grid () =
|
||||||
|
Grid.of_lines Fun.(Char.to_string %> int_of_string) @@ Utils.lines_of_input 8
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part1 () =
|
||||||
|
let grid = parse_grid () in
|
||||||
|
let num_visible = ref 0 in
|
||||||
|
Grid.iter grid (fun start ->
|
||||||
|
let start_height = Option.get_exn_or "unreachable" @@ Grid.at grid start in
|
||||||
|
let rec walk_shorter_trees start step =
|
||||||
|
let next = Vec2.(start + step) in
|
||||||
|
match Grid.at grid next with
|
||||||
|
| Some height when height < start_height -> walk_shorter_trees next step
|
||||||
|
| opt -> opt
|
||||||
|
in
|
||||||
|
let visible =
|
||||||
|
Vec2.directions
|
||||||
|
|> List.map @@ walk_shorter_trees start
|
||||||
|
|> List.map Option.is_none
|
||||||
|
|> List.reduce_exn ( || )
|
||||||
|
in
|
||||||
|
if visible then incr num_visible);
|
||||||
|
!num_visible
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part2 () =
|
||||||
|
let grid = parse_grid () in
|
||||||
|
let best_score = ref 0 in
|
||||||
|
Grid.iter grid (fun start ->
|
||||||
|
let start_height = Option.get_exn_or "unreachable" @@ Grid.at grid start in
|
||||||
|
let rec trees_in_view start in_view step =
|
||||||
|
let next = Vec2.(start + step) in
|
||||||
|
match Grid.at grid next with
|
||||||
|
| Some height when height < start_height -> trees_in_view next (in_view + 1) step
|
||||||
|
| Some _ -> in_view + 1
|
||||||
|
| None -> in_view
|
||||||
|
in
|
||||||
|
let score =
|
||||||
|
Vec2.directions |> List.map @@ trees_in_view start 0 |> List.reduce_exn ( * )
|
||||||
|
in
|
||||||
|
if score > !best_score then best_score := score);
|
||||||
|
!best_score
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 8.1" =
|
||||||
|
Printf.printf "%d" @@ part1 ();
|
||||||
|
[%expect {| 1803 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 8.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 268912 |}]
|
||||||
|
;;
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
let parse_input () =
|
||||||
|
Utils.lines_of_input 9
|
||||||
|
|> List.concat_map (fun line ->
|
||||||
|
match String.split ~by:" " line with
|
||||||
|
| [ dir; count ] ->
|
||||||
|
let count = int_of_string count in
|
||||||
|
let dir =
|
||||||
|
match dir with
|
||||||
|
| "U" -> Vec2.up
|
||||||
|
| "D" -> Vec2.down
|
||||||
|
| "L" -> Vec2.left
|
||||||
|
| "R" -> Vec2.right
|
||||||
|
| _ -> failwith "failed to parse instructions"
|
||||||
|
in
|
||||||
|
List.init count (fun _ -> dir)
|
||||||
|
| _ -> failwith "failed to parse instructions")
|
||||||
|
;;
|
||||||
|
|
||||||
|
let next_pos head tail =
|
||||||
|
let dx, dy = Vec2.(to_tuple @@ (tail - head)) in
|
||||||
|
if abs dx <= 1 && abs dy <= 1
|
||||||
|
then tail
|
||||||
|
else (
|
||||||
|
let x_dir = if dx > 0 then Vec2.right else Vec2.left in
|
||||||
|
let y_dir = if dy > 0 then Vec2.down else Vec2.up in
|
||||||
|
let dir =
|
||||||
|
if abs dx = abs dy
|
||||||
|
then Vec2.(x_dir + y_dir)
|
||||||
|
else if abs dx > abs dy
|
||||||
|
then x_dir
|
||||||
|
else y_dir
|
||||||
|
in
|
||||||
|
Vec2.(head + dir))
|
||||||
|
;;
|
||||||
|
|
||||||
|
let solve length =
|
||||||
|
let moves = parse_input () in
|
||||||
|
let start = Vec2.origin in
|
||||||
|
let tail = List.init (length - 1) (fun _ -> start) in
|
||||||
|
let _, _, last_knot_hist =
|
||||||
|
List.fold_left
|
||||||
|
(fun (head, tail, last_knot_hist) dir ->
|
||||||
|
let new_head = Vec2.(head + dir) in
|
||||||
|
let last_knot, new_tail =
|
||||||
|
List.fold_map
|
||||||
|
(fun head knot ->
|
||||||
|
let new_knot = next_pos head knot in
|
||||||
|
new_knot, new_knot)
|
||||||
|
new_head
|
||||||
|
tail
|
||||||
|
in
|
||||||
|
new_head, new_tail, last_knot :: last_knot_hist)
|
||||||
|
(start, tail, [ start ])
|
||||||
|
moves
|
||||||
|
in
|
||||||
|
last_knot_hist |> List.uniq ~eq:Vec2.( = ) |> List.length
|
||||||
|
;;
|
||||||
|
|
||||||
|
let part1 () = solve 2
|
||||||
|
let part2 () = solve 10
|
||||||
|
|
||||||
|
let%expect_test "Day 9.1" =
|
||||||
|
Printf.printf "%d" @@ part1 ();
|
||||||
|
[%expect {| 6030 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "Day 9.2" =
|
||||||
|
Printf.printf "%d" @@ part2 ();
|
||||||
|
[%expect {| 2545 |}]
|
||||||
|
;;
|
||||||
@@ -1,7 +1,19 @@
|
|||||||
(library
|
(library
|
||||||
(name aoc)
|
(name aoc)
|
||||||
(libraries re containers dune-site)
|
(libraries re containers iter dune-site angstrom)
|
||||||
(preprocess (pps ppx_regexp)))
|
(inline_tests)
|
||||||
|
(preprocess (pps
|
||||||
|
ppx_regexp
|
||||||
|
ppx_deriving.show
|
||||||
|
ppx_deriving.eq
|
||||||
|
ppx_deriving.ord
|
||||||
|
ppx_deriving_hash
|
||||||
|
ppx_expect
|
||||||
|
ppx_inline_test)))
|
||||||
|
|
||||||
|
(env
|
||||||
|
(dev
|
||||||
|
(flags (:standard -warn-error -A))))
|
||||||
|
|
||||||
(install
|
(install
|
||||||
(section (site (aoc inputs)))
|
(section (site (aoc inputs)))
|
||||||
|
|||||||
+99
@@ -0,0 +1,99 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
type 'a t =
|
||||||
|
{ width : int
|
||||||
|
; height : int
|
||||||
|
; items : 'a array
|
||||||
|
}
|
||||||
|
[@@deriving show]
|
||||||
|
|
||||||
|
let vec2_of_idx ~width ~idx =
|
||||||
|
let y = idx / width in
|
||||||
|
let x = idx mod width in
|
||||||
|
Vec2.of_tuple (x, y)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let idx_of_vec2 width vec = Vec2.(Int.((width * vec.y) + vec.x))
|
||||||
|
|
||||||
|
let in_bounds grid point =
|
||||||
|
let x, y = Vec2.to_tuple point in
|
||||||
|
x >= 0 && x < grid.width && y >= 0 && y < grid.height
|
||||||
|
;;
|
||||||
|
|
||||||
|
let at grid point =
|
||||||
|
if in_bounds grid point
|
||||||
|
then Array.get_safe grid.items @@ idx_of_vec2 grid.width point
|
||||||
|
else None
|
||||||
|
;;
|
||||||
|
|
||||||
|
let at_e (grid : 'a t) (point : Vec2.t) =
|
||||||
|
match at grid point with
|
||||||
|
| Some point -> point
|
||||||
|
| None -> failwith @@ Format.sprintf "point %a out of bounds!" Vec2.pp point
|
||||||
|
;;
|
||||||
|
|
||||||
|
let set_e grid point item =
|
||||||
|
if in_bounds grid point
|
||||||
|
then Array.set grid.items (idx_of_vec2 grid.width point) item
|
||||||
|
else failwith (Format.sprintf "point %a out of bounds!" Vec2.pp point)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let ( .%() ) = at
|
||||||
|
let ( .%()<- ) = set_e
|
||||||
|
|
||||||
|
let find (grid : 'a t) pred =
|
||||||
|
let open Option.Infix in
|
||||||
|
let* idx, item = Array.find_idx pred grid.items in
|
||||||
|
Some (vec2_of_idx ~width:grid.width ~idx, item)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let count grid pred =
|
||||||
|
Array.fold (fun count item -> if pred item then count + 1 else count) 0 grid.items
|
||||||
|
;;
|
||||||
|
|
||||||
|
let init ~width ~height init =
|
||||||
|
{ width
|
||||||
|
; height
|
||||||
|
; items = Array.init (width * height) (fun idx -> init @@ vec2_of_idx ~width ~idx)
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
|
||||||
|
let of_lines parse_char lines : 'a t =
|
||||||
|
match lines with
|
||||||
|
| first_line :: _ ->
|
||||||
|
let width = String.length first_line in
|
||||||
|
let height = List.length lines in
|
||||||
|
let yeet =
|
||||||
|
lines
|
||||||
|
|> List.map String.to_list
|
||||||
|
|> List.flatten
|
||||||
|
|> List.map parse_char
|
||||||
|
|> Array.of_list
|
||||||
|
in
|
||||||
|
{ width; height; items = yeet }
|
||||||
|
| _ -> failwith "somethin fucd up"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let iter_region grid a b callback =
|
||||||
|
Vec2.iter_region a b (fun pos -> if in_bounds grid pos then callback pos)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let iter grid callback =
|
||||||
|
let a = Vec2.of_tuple (0, 0) in
|
||||||
|
let b = Vec2.of_tuple (grid.width - 1, grid.height - 1) in
|
||||||
|
iter_region grid a b callback
|
||||||
|
;;
|
||||||
|
|
||||||
|
let draw grid ?(rev_y = false) ?(rev_x = false) printer =
|
||||||
|
let line = ref [] in
|
||||||
|
let lines = ref [] in
|
||||||
|
iter grid (fun point ->
|
||||||
|
let item = grid.%(point) in
|
||||||
|
let char = printer point (Option.get_exn_or "iter is broken" item) in
|
||||||
|
line := if rev_x then char :: !line else !line @ [ char ];
|
||||||
|
if List.length !line = grid.width
|
||||||
|
then (
|
||||||
|
lines := !lines @ [ String.of_list !line ];
|
||||||
|
line := []));
|
||||||
|
String.concat "\n" (if rev_y then List.rev !lines else !lines)
|
||||||
|
;;
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
type 'a t [@@deriving show]
|
||||||
|
|
||||||
|
val at : 'a t -> Vec2.t -> 'a option
|
||||||
|
val at_e : 'a t -> Vec2.t -> 'a
|
||||||
|
val set_e : 'a t -> Vec2.t -> 'a -> unit
|
||||||
|
val ( .%() ) : 'a t -> Vec2.t -> 'a option
|
||||||
|
val ( .%()<- ) : 'a t -> Vec2.t -> 'a -> unit
|
||||||
|
val init : width:int -> height:int -> (Vec2.t -> 'a) -> 'a t
|
||||||
|
val of_lines : (char -> 'a) -> string list -> 'a t
|
||||||
|
val find : 'a t -> ('a -> bool) -> (Vec2.t * 'a) option
|
||||||
|
val count : 'a t -> ('a -> bool) -> int
|
||||||
|
val iter_region : 'a t -> Vec2.t -> Vec2.t -> (Vec2.t -> unit) -> unit
|
||||||
|
val iter : 'a t -> (Vec2.t -> unit) -> unit
|
||||||
|
val draw : 'a t -> ?rev_y:bool -> ?rev_x:bool -> (Vec2.t -> 'a -> char) -> string
|
||||||
+121
@@ -9,3 +9,124 @@ let lines_of_input day =
|
|||||||
let path = Printf.sprintf "%s/day%d.tt" base_path day in
|
let path = Printf.sprintf "%s/day%d.tt" base_path day in
|
||||||
IO.(with_in path read_lines_l)
|
IO.(with_in path read_lines_l)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
(** [f] in [memo f] should be a function that makes recursive calls
|
||||||
|
via the memoized function passed as its first argument. ie:
|
||||||
|
{[
|
||||||
|
let fib_m =
|
||||||
|
memo (fun self x ->
|
||||||
|
match x with
|
||||||
|
| 0 | 1 -> 1
|
||||||
|
| x -> self (x - 1) + self (x - 2))
|
||||||
|
;;
|
||||||
|
]} *)
|
||||||
|
let memo f =
|
||||||
|
let open Hashtbl in
|
||||||
|
let cache = create 100000 in
|
||||||
|
let rec f_mem k =
|
||||||
|
try find cache k with
|
||||||
|
| Not_found ->
|
||||||
|
let v = f f_mem k in
|
||||||
|
add cache k v;
|
||||||
|
v
|
||||||
|
in
|
||||||
|
f_mem
|
||||||
|
;;
|
||||||
|
|
||||||
|
let%expect_test "fib memoized" =
|
||||||
|
let fib_m =
|
||||||
|
memo (fun fib_m x ->
|
||||||
|
match x with
|
||||||
|
| 0 | 1 -> 1
|
||||||
|
| x -> fib_m (x - 1) + fib_m (x - 2))
|
||||||
|
in
|
||||||
|
Printf.printf "%i\n" @@ fib_m 100;
|
||||||
|
[%expect {| 1298777728820984005 |}]
|
||||||
|
;;
|
||||||
|
|
||||||
|
let djikstra ~eq ~get_info ~set_info ~get_weight ~get_neighbors ~goal ~start_nodes =
|
||||||
|
let seen = ref [] in
|
||||||
|
let rec djikstra' c_node =
|
||||||
|
let c_dist, _ = get_info c_node in
|
||||||
|
set_info c_node (c_dist, true);
|
||||||
|
get_neighbors c_node
|
||||||
|
|> Iter.iter (fun neighbor ->
|
||||||
|
let n_dist, n_visited = get_info neighbor in
|
||||||
|
if not n_visited
|
||||||
|
then (
|
||||||
|
let new_dist = c_dist + get_weight c_node neighbor in
|
||||||
|
if new_dist < n_dist then set_info neighbor (new_dist, n_visited);
|
||||||
|
seen := List.add_nodup ~eq neighbor !seen));
|
||||||
|
seen
|
||||||
|
:= List.fast_sort
|
||||||
|
(fun a b ->
|
||||||
|
let a_dist, _ = get_info a in
|
||||||
|
let b_dist, _ = get_info b in
|
||||||
|
Int.compare a_dist b_dist)
|
||||||
|
!seen;
|
||||||
|
match goal, !seen with
|
||||||
|
| Some goal_node, next :: _ when eq goal_node next ->
|
||||||
|
let dist, _ = get_info next in
|
||||||
|
Some dist
|
||||||
|
| None, [] -> Some 0
|
||||||
|
| _, next :: rest ->
|
||||||
|
seen := rest;
|
||||||
|
djikstra' next
|
||||||
|
| Some _, [] -> None
|
||||||
|
in
|
||||||
|
List.iter (fun node -> set_info node (0, false)) start_nodes;
|
||||||
|
match start_nodes with
|
||||||
|
| first :: rest ->
|
||||||
|
seen := rest;
|
||||||
|
djikstra' first
|
||||||
|
| _ -> failwith "start_nodes cannot be empty"
|
||||||
|
;;
|
||||||
|
|
||||||
|
let djikstra_hash
|
||||||
|
(type k)
|
||||||
|
?(hash = Hashtbl.hash)
|
||||||
|
?(eq = Stdlib.( = ))
|
||||||
|
?(slots = 100)
|
||||||
|
~get_weight
|
||||||
|
~get_neighbors
|
||||||
|
~start_nodes
|
||||||
|
()
|
||||||
|
=
|
||||||
|
let module Tbl =
|
||||||
|
CCHashtbl.Make (struct
|
||||||
|
type t = k
|
||||||
|
|
||||||
|
let equal = eq
|
||||||
|
let hash = hash
|
||||||
|
end)
|
||||||
|
in
|
||||||
|
let table = Tbl.create slots in
|
||||||
|
let get_info node = Tbl.get_or ~default:(Int.max_int, false) table node in
|
||||||
|
let set_info node info = Tbl.replace table node info in
|
||||||
|
let dist_of node = Option.(Tbl.get table node >|= fun (dist, _) -> dist) in
|
||||||
|
let _ =
|
||||||
|
djikstra ~eq ~get_info ~set_info ~get_weight ~get_neighbors ~goal:None ~start_nodes
|
||||||
|
in
|
||||||
|
dist_of
|
||||||
|
;;
|
||||||
|
|
||||||
|
module Parse = struct
|
||||||
|
include Angstrom
|
||||||
|
|
||||||
|
let sign = option 1 (char '-' >>= fun _ -> return (-1))
|
||||||
|
|
||||||
|
let digits =
|
||||||
|
take_while1 (function
|
||||||
|
| '0' .. '9' -> true
|
||||||
|
| _ -> false)
|
||||||
|
>>| int_of_string
|
||||||
|
;;
|
||||||
|
|
||||||
|
let int = map2 sign digits ~f:( * )
|
||||||
|
|
||||||
|
let not_int =
|
||||||
|
skip_while (function
|
||||||
|
| '0' .. '9' | '-' -> false
|
||||||
|
| _ -> true)
|
||||||
|
;;
|
||||||
|
end
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
open Containers
|
||||||
|
|
||||||
|
type t =
|
||||||
|
{ x : int
|
||||||
|
; y : int
|
||||||
|
}
|
||||||
|
[@@deriving eq, ord, hash]
|
||||||
|
|
||||||
|
let pp (fmt : Format.formatter) v = Format.fprintf fmt "(%i, %i)" v.x v.y
|
||||||
|
let show v = Format.asprintf "%a" pp v
|
||||||
|
let origin = { x = 0; y = 0 }
|
||||||
|
let up = { x = 0; y = -1 }
|
||||||
|
let down = { x = 0; y = 1 }
|
||||||
|
let right = { x = 1; y = 0 }
|
||||||
|
let left = { x = -1; y = 0 }
|
||||||
|
let directions = [ up; down; left; right ]
|
||||||
|
let of_tuple (x, y) = { x; y }
|
||||||
|
let to_tuple { x; y } = x, y
|
||||||
|
let ( + ) a b = { x = a.x + b.x; y = a.y + b.y }
|
||||||
|
let ( - ) a b = { x = a.x - b.x; y = a.y - b.y }
|
||||||
|
let ( = ) = equal
|
||||||
|
let abs a = Int.{ x = abs a.x; y = abs a.y }
|
||||||
|
|
||||||
|
let iter_region a b callback =
|
||||||
|
for y = min a.y b.y to max a.y b.y do
|
||||||
|
for x = min a.x b.x to max a.x b.x do
|
||||||
|
callback { x; y }
|
||||||
|
done
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
|
||||||
|
let fold_region a b callback init =
|
||||||
|
let acc = ref init in
|
||||||
|
iter_region a b (fun pos -> acc := callback !acc pos);
|
||||||
|
!acc
|
||||||
|
;;
|
||||||
|
|
||||||
|
let find_bounds padding points =
|
||||||
|
let lx, hx, ly, hy =
|
||||||
|
points
|
||||||
|
|> Iter.fold
|
||||||
|
(fun (lx, hx, ly, hy) { x; y } ->
|
||||||
|
let lx = min lx x in
|
||||||
|
let hx = max hx x in
|
||||||
|
let ly = min ly y in
|
||||||
|
let hy = max hy y in
|
||||||
|
lx, hx, ly, hy)
|
||||||
|
(Int.max_int, 0, Int.max_int, 0)
|
||||||
|
in
|
||||||
|
let lx = Int.(lx - padding) in
|
||||||
|
let hx = Int.(hx + padding) in
|
||||||
|
let ly = Int.(ly - padding) in
|
||||||
|
let hy = Int.(hy + padding) in
|
||||||
|
of_tuple (lx, ly), of_tuple (hx, hy)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let in_bounds l h p = p.x >= l.x && p.x <= h.x && p.y >= l.y && p.y <= h.y
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
type t =
|
||||||
|
{ x : int
|
||||||
|
; y : int
|
||||||
|
}
|
||||||
|
[@@deriving eq, ord, hash]
|
||||||
|
|
||||||
|
val show : t -> string
|
||||||
|
val pp : Format.formatter -> t -> unit
|
||||||
|
val origin : t
|
||||||
|
val up : t
|
||||||
|
val down : t
|
||||||
|
val left : t
|
||||||
|
val right : t
|
||||||
|
val directions : t list
|
||||||
|
val of_tuple : int * int -> t
|
||||||
|
val to_tuple : t -> int * int
|
||||||
|
val ( + ) : t -> t -> t
|
||||||
|
val ( - ) : t -> t -> t
|
||||||
|
val ( = ) : t -> t -> bool
|
||||||
|
val abs : t -> t
|
||||||
|
val iter_region : t -> t -> (t -> unit) -> unit
|
||||||
|
val fold_region : t -> t -> ('a -> t -> 'a) -> 'a -> 'a
|
||||||
|
val find_bounds : int -> t Iter.t -> t * t
|
||||||
|
val in_bounds : t -> t -> t -> bool
|
||||||
Reference in new issue
Block a user