diff options
author | Justin Worthe <justin.worthe@gmail.com> | 2016-12-22 15:51:41 +0200 |
---|---|---|
committer | Justin Worthe <justin.worthe@gmail.com> | 2016-12-22 15:51:41 +0200 |
commit | 2f2c1fe8e23e353ac97e1c7d250f587dbe1ba1c2 (patch) | |
tree | 1200c881f82c9ff31a92016d85dff0f69fba93b7 | |
parent | 9607567aa9bba8e2e83f3f3a38c4eb0f0ecb2017 (diff) |
AOC22 work in progress
Has crazy hack optimization to work for the data set, assuming all data
is about moving the 'gap' around. It hasn't run to completion yet.
-rw-r--r-- | aoc22/Cargo.lock | 98 | ||||
-rw-r--r-- | aoc22/Cargo.toml | 7 | ||||
-rw-r--r-- | aoc22/input.txt | 1017 | ||||
-rw-r--r-- | aoc22/src/main.rs | 212 |
4 files changed, 1334 insertions, 0 deletions
diff --git a/aoc22/Cargo.lock b/aoc22/Cargo.lock new file mode 100644 index 0000000..81a7213 --- /dev/null +++ b/aoc22/Cargo.lock @@ -0,0 +1,98 @@ +[root] +name = "aoc22" +version = "0.1.0" +dependencies = [ + "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "aho-corasick" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libc" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memchr" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex-syntax" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "thread-id" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "thread_local" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "utf8-ranges" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[metadata] +"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66" +"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70" +"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20" +"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f" +"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957" +"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03" +"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5" +"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f" +"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" +"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/aoc22/Cargo.toml b/aoc22/Cargo.toml new file mode 100644 index 0000000..074ccd5 --- /dev/null +++ b/aoc22/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "aoc22" +version = "0.1.0" +authors = ["Justin Worthe <justin.worthe@gmail.com>"] + +[dependencies] +regex = "0.1"
\ No newline at end of file diff --git a/aoc22/input.txt b/aoc22/input.txt new file mode 100644 index 0000000..08e9843 --- /dev/null +++ b/aoc22/input.txt @@ -0,0 +1,1017 @@ +root@ebhq-gridcenter# df -h +Filesystem Size Used Avail Use% +/dev/grid/node-x0-y0 89T 65T 24T 73% +/dev/grid/node-x0-y1 92T 64T 28T 69% +/dev/grid/node-x0-y2 85T 70T 15T 82% +/dev/grid/node-x0-y3 90T 64T 26T 71% +/dev/grid/node-x0-y4 86T 72T 14T 83% +/dev/grid/node-x0-y5 90T 68T 22T 75% +/dev/grid/node-x0-y6 94T 64T 30T 68% +/dev/grid/node-x0-y7 87T 72T 15T 82% +/dev/grid/node-x0-y8 90T 65T 25T 72% +/dev/grid/node-x0-y9 90T 65T 25T 72% +/dev/grid/node-x0-y10 89T 66T 23T 74% +/dev/grid/node-x0-y11 94T 70T 24T 74% +/dev/grid/node-x0-y12 90T 65T 25T 72% +/dev/grid/node-x0-y13 91T 72T 19T 79% +/dev/grid/node-x0-y14 85T 70T 15T 82% +/dev/grid/node-x0-y15 89T 70T 19T 78% +/dev/grid/node-x0-y16 90T 66T 24T 73% +/dev/grid/node-x0-y17 86T 64T 22T 74% +/dev/grid/node-x0-y18 88T 65T 23T 73% +/dev/grid/node-x0-y19 85T 68T 17T 80% +/dev/grid/node-x0-y20 93T 70T 23T 75% +/dev/grid/node-x0-y21 89T 64T 25T 71% +/dev/grid/node-x0-y22 87T 67T 20T 77% +/dev/grid/node-x0-y23 90T 73T 17T 81% +/dev/grid/node-x0-y24 92T 68T 24T 73% +/dev/grid/node-x0-y25 88T 69T 19T 78% +/dev/grid/node-x0-y26 88T 69T 19T 78% +/dev/grid/node-x0-y27 86T 72T 14T 83% +/dev/grid/node-x0-y28 92T 71T 21T 77% +/dev/grid/node-x1-y0 89T 73T 16T 82% +/dev/grid/node-x1-y1 89T 68T 21T 76% +/dev/grid/node-x1-y2 94T 70T 24T 74% +/dev/grid/node-x1-y3 90T 68T 22T 75% +/dev/grid/node-x1-y4 89T 67T 22T 75% +/dev/grid/node-x1-y5 90T 70T 20T 77% +/dev/grid/node-x1-y6 92T 71T 21T 77% +/dev/grid/node-x1-y7 92T 71T 21T 77% +/dev/grid/node-x1-y8 86T 73T 13T 84% +/dev/grid/node-x1-y9 87T 69T 18T 79% +/dev/grid/node-x1-y10 87T 66T 21T 75% +/dev/grid/node-x1-y11 85T 72T 13T 84% +/dev/grid/node-x1-y12 90T 69T 21T 76% +/dev/grid/node-x1-y13 89T 67T 22T 75% +/dev/grid/node-x1-y14 90T 65T 25T 72% +/dev/grid/node-x1-y15 94T 65T 29T 69% +/dev/grid/node-x1-y16 85T 70T 15T 82% +/dev/grid/node-x1-y17 93T 64T 29T 68% +/dev/grid/node-x1-y18 87T 68T 19T 78% +/dev/grid/node-x1-y19 85T 66T 19T 77% +/dev/grid/node-x1-y20 90T 72T 18T 80% +/dev/grid/node-x1-y21 89T 73T 16T 82% +/dev/grid/node-x1-y22 90T 65T 25T 72% +/dev/grid/node-x1-y23 91T 72T 19T 79% +/dev/grid/node-x1-y24 87T 70T 17T 80% +/dev/grid/node-x1-y25 91T 64T 27T 70% +/dev/grid/node-x1-y26 90T 64T 26T 71% +/dev/grid/node-x1-y27 93T 69T 24T 74% +/dev/grid/node-x1-y28 89T 65T 24T 73% +/dev/grid/node-x2-y0 89T 72T 17T 80% +/dev/grid/node-x2-y1 92T 69T 23T 75% +/dev/grid/node-x2-y2 91T 65T 26T 71% +/dev/grid/node-x2-y3 86T 73T 13T 84% +/dev/grid/node-x2-y4 90T 69T 21T 76% +/dev/grid/node-x2-y5 86T 68T 18T 79% +/dev/grid/node-x2-y6 91T 70T 21T 76% +/dev/grid/node-x2-y7 86T 64T 22T 74% +/dev/grid/node-x2-y8 88T 65T 23T 73% +/dev/grid/node-x2-y9 94T 73T 21T 77% +/dev/grid/node-x2-y10 89T 71T 18T 79% +/dev/grid/node-x2-y11 88T 64T 24T 72% +/dev/grid/node-x2-y12 92T 71T 21T 77% +/dev/grid/node-x2-y13 86T 69T 17T 80% +/dev/grid/node-x2-y14 87T 69T 18T 79% +/dev/grid/node-x2-y15 93T 71T 22T 76% +/dev/grid/node-x2-y16 91T 65T 26T 71% +/dev/grid/node-x2-y17 93T 65T 28T 69% +/dev/grid/node-x2-y18 86T 69T 17T 80% +/dev/grid/node-x2-y19 87T 69T 18T 79% +/dev/grid/node-x2-y20 86T 72T 14T 83% +/dev/grid/node-x2-y21 86T 73T 13T 84% +/dev/grid/node-x2-y22 505T 499T 6T 98% +/dev/grid/node-x2-y23 89T 65T 24T 73% +/dev/grid/node-x2-y24 92T 64T 28T 69% +/dev/grid/node-x2-y25 94T 64T 30T 68% +/dev/grid/node-x2-y26 87T 73T 14T 83% +/dev/grid/node-x2-y27 87T 69T 18T 79% +/dev/grid/node-x2-y28 94T 71T 23T 75% +/dev/grid/node-x3-y0 88T 66T 22T 75% +/dev/grid/node-x3-y1 91T 69T 22T 75% +/dev/grid/node-x3-y2 91T 69T 22T 75% +/dev/grid/node-x3-y3 86T 67T 19T 77% +/dev/grid/node-x3-y4 90T 64T 26T 71% +/dev/grid/node-x3-y5 89T 72T 17T 80% +/dev/grid/node-x3-y6 87T 66T 21T 75% +/dev/grid/node-x3-y7 90T 68T 22T 75% +/dev/grid/node-x3-y8 91T 66T 25T 72% +/dev/grid/node-x3-y9 89T 64T 25T 71% +/dev/grid/node-x3-y10 92T 67T 25T 72% +/dev/grid/node-x3-y11 86T 64T 22T 74% +/dev/grid/node-x3-y12 94T 65T 29T 69% +/dev/grid/node-x3-y13 91T 70T 21T 76% +/dev/grid/node-x3-y14 89T 72T 17T 80% +/dev/grid/node-x3-y15 89T 64T 25T 71% +/dev/grid/node-x3-y16 85T 73T 12T 85% +/dev/grid/node-x3-y17 89T 65T 24T 73% +/dev/grid/node-x3-y18 88T 71T 17T 80% +/dev/grid/node-x3-y19 89T 69T 20T 77% +/dev/grid/node-x3-y20 91T 68T 23T 74% +/dev/grid/node-x3-y21 90T 72T 18T 80% +/dev/grid/node-x3-y22 505T 498T 7T 98% +/dev/grid/node-x3-y23 85T 65T 20T 76% +/dev/grid/node-x3-y24 94T 72T 22T 76% +/dev/grid/node-x3-y25 90T 68T 22T 75% +/dev/grid/node-x3-y26 90T 65T 25T 72% +/dev/grid/node-x3-y27 87T 66T 21T 75% +/dev/grid/node-x3-y28 90T 66T 24T 73% +/dev/grid/node-x4-y0 86T 67T 19T 77% +/dev/grid/node-x4-y1 92T 67T 25T 72% +/dev/grid/node-x4-y2 91T 71T 20T 78% +/dev/grid/node-x4-y3 94T 69T 25T 73% +/dev/grid/node-x4-y4 90T 64T 26T 71% +/dev/grid/node-x4-y5 93T 70T 23T 75% +/dev/grid/node-x4-y6 93T 67T 26T 72% +/dev/grid/node-x4-y7 91T 71T 20T 78% +/dev/grid/node-x4-y8 90T 70T 20T 77% +/dev/grid/node-x4-y9 89T 66T 23T 74% +/dev/grid/node-x4-y10 94T 64T 30T 68% +/dev/grid/node-x4-y11 94T 70T 24T 74% +/dev/grid/node-x4-y12 89T 69T 20T 77% +/dev/grid/node-x4-y13 90T 72T 18T 80% +/dev/grid/node-x4-y14 88T 69T 19T 78% +/dev/grid/node-x4-y15 85T 64T 21T 75% +/dev/grid/node-x4-y16 86T 71T 15T 82% +/dev/grid/node-x4-y17 90T 65T 25T 72% +/dev/grid/node-x4-y18 88T 65T 23T 73% +/dev/grid/node-x4-y19 91T 71T 20T 78% +/dev/grid/node-x4-y20 94T 71T 23T 75% +/dev/grid/node-x4-y21 91T 65T 26T 71% +/dev/grid/node-x4-y22 510T 491T 19T 96% +/dev/grid/node-x4-y23 86T 72T 14T 83% +/dev/grid/node-x4-y24 91T 69T 22T 75% +/dev/grid/node-x4-y25 93T 64T 29T 68% +/dev/grid/node-x4-y26 92T 65T 27T 70% +/dev/grid/node-x4-y27 91T 67T 24T 73% +/dev/grid/node-x4-y28 93T 66T 27T 70% +/dev/grid/node-x5-y0 85T 70T 15T 82% +/dev/grid/node-x5-y1 90T 71T 19T 78% +/dev/grid/node-x5-y2 94T 68T 26T 72% +/dev/grid/node-x5-y3 88T 73T 15T 82% +/dev/grid/node-x5-y4 85T 71T 14T 83% +/dev/grid/node-x5-y5 92T 67T 25T 72% +/dev/grid/node-x5-y6 92T 68T 24T 73% +/dev/grid/node-x5-y7 86T 69T 17T 80% +/dev/grid/node-x5-y8 90T 64T 26T 71% +/dev/grid/node-x5-y9 88T 71T 17T 80% +/dev/grid/node-x5-y10 91T 65T 26T 71% +/dev/grid/node-x5-y11 92T 65T 27T 70% +/dev/grid/node-x5-y12 87T 66T 21T 75% +/dev/grid/node-x5-y13 87T 71T 16T 81% +/dev/grid/node-x5-y14 90T 67T 23T 74% +/dev/grid/node-x5-y15 92T 70T 22T 76% +/dev/grid/node-x5-y16 94T 66T 28T 70% +/dev/grid/node-x5-y17 88T 68T 20T 77% +/dev/grid/node-x5-y18 86T 69T 17T 80% +/dev/grid/node-x5-y19 94T 66T 28T 70% +/dev/grid/node-x5-y20 90T 69T 21T 76% +/dev/grid/node-x5-y21 88T 71T 17T 80% +/dev/grid/node-x5-y22 509T 496T 13T 97% +/dev/grid/node-x5-y23 87T 67T 20T 77% +/dev/grid/node-x5-y24 91T 64T 27T 70% +/dev/grid/node-x5-y25 93T 69T 24T 74% +/dev/grid/node-x5-y26 93T 73T 20T 78% +/dev/grid/node-x5-y27 88T 70T 18T 79% +/dev/grid/node-x5-y28 87T 73T 14T 83% +/dev/grid/node-x6-y0 87T 65T 22T 74% +/dev/grid/node-x6-y1 85T 64T 21T 75% +/dev/grid/node-x6-y2 91T 72T 19T 79% +/dev/grid/node-x6-y3 90T 64T 26T 71% +/dev/grid/node-x6-y4 93T 66T 27T 70% +/dev/grid/node-x6-y5 93T 67T 26T 72% +/dev/grid/node-x6-y6 89T 64T 25T 71% +/dev/grid/node-x6-y7 89T 64T 25T 71% +/dev/grid/node-x6-y8 86T 72T 14T 83% +/dev/grid/node-x6-y9 87T 68T 19T 78% +/dev/grid/node-x6-y10 94T 73T 21T 77% +/dev/grid/node-x6-y11 88T 65T 23T 73% +/dev/grid/node-x6-y12 88T 70T 18T 79% +/dev/grid/node-x6-y13 93T 66T 27T 70% +/dev/grid/node-x6-y14 87T 68T 19T 78% +/dev/grid/node-x6-y15 87T 68T 19T 78% +/dev/grid/node-x6-y16 87T 73T 14T 83% +/dev/grid/node-x6-y17 87T 70T 17T 80% +/dev/grid/node-x6-y18 87T 69T 18T 79% +/dev/grid/node-x6-y19 85T 67T 18T 78% +/dev/grid/node-x6-y20 91T 71T 20T 78% +/dev/grid/node-x6-y21 86T 72T 14T 83% +/dev/grid/node-x6-y22 503T 497T 6T 98% +/dev/grid/node-x6-y23 93T 72T 21T 77% +/dev/grid/node-x6-y24 91T 72T 19T 79% +/dev/grid/node-x6-y25 85T 67T 18T 78% +/dev/grid/node-x6-y26 86T 65T 21T 75% +/dev/grid/node-x6-y27 92T 67T 25T 72% +/dev/grid/node-x6-y28 87T 72T 15T 82% +/dev/grid/node-x7-y0 88T 67T 21T 76% +/dev/grid/node-x7-y1 85T 64T 21T 75% +/dev/grid/node-x7-y2 90T 67T 23T 74% +/dev/grid/node-x7-y3 87T 65T 22T 74% +/dev/grid/node-x7-y4 92T 70T 22T 76% +/dev/grid/node-x7-y5 89T 67T 22T 75% +/dev/grid/node-x7-y6 90T 65T 25T 72% +/dev/grid/node-x7-y7 88T 66T 22T 75% +/dev/grid/node-x7-y8 88T 65T 23T 73% +/dev/grid/node-x7-y9 93T 72T 21T 77% +/dev/grid/node-x7-y10 91T 70T 21T 76% +/dev/grid/node-x7-y11 90T 70T 20T 77% +/dev/grid/node-x7-y12 89T 68T 21T 76% +/dev/grid/node-x7-y13 91T 65T 26T 71% +/dev/grid/node-x7-y14 90T 65T 25T 72% +/dev/grid/node-x7-y15 85T 65T 20T 76% +/dev/grid/node-x7-y16 91T 65T 26T 71% +/dev/grid/node-x7-y17 89T 72T 17T 80% +/dev/grid/node-x7-y18 88T 65T 23T 73% +/dev/grid/node-x7-y19 94T 72T 22T 76% +/dev/grid/node-x7-y20 85T 73T 12T 85% +/dev/grid/node-x7-y21 85T 68T 17T 80% +/dev/grid/node-x7-y22 507T 497T 10T 98% +/dev/grid/node-x7-y23 91T 69T 22T 75% +/dev/grid/node-x7-y24 93T 68T 25T 73% +/dev/grid/node-x7-y25 90T 72T 18T 80% +/dev/grid/node-x7-y26 91T 70T 21T 76% +/dev/grid/node-x7-y27 93T 65T 28T 69% +/dev/grid/node-x7-y28 91T 64T 27T 70% +/dev/grid/node-x8-y0 86T 71T 15T 82% +/dev/grid/node-x8-y1 88T 69T 19T 78% +/dev/grid/node-x8-y2 90T 64T 26T 71% +/dev/grid/node-x8-y3 92T 67T 25T 72% +/dev/grid/node-x8-y4 86T 71T 15T 82% +/dev/grid/node-x8-y5 88T 68T 20T 77% +/dev/grid/node-x8-y6 90T 71T 19T 78% +/dev/grid/node-x8-y7 86T 70T 16T 81% +/dev/grid/node-x8-y8 87T 72T 15T 82% +/dev/grid/node-x8-y9 93T 67T 26T 72% +/dev/grid/node-x8-y10 93T 65T 28T 69% +/dev/grid/node-x8-y11 94T 66T 28T 70% +/dev/grid/node-x8-y12 92T 70T 22T 76% +/dev/grid/node-x8-y13 91T 68T 23T 74% +/dev/grid/node-x8-y14 93T 72T 21T 77% +/dev/grid/node-x8-y15 90T 71T 19T 78% +/dev/grid/node-x8-y16 87T 73T 14T 83% +/dev/grid/node-x8-y17 86T 73T 13T 84% +/dev/grid/node-x8-y18 89T 68T 21T 76% +/dev/grid/node-x8-y19 88T 67T 21T 76% +/dev/grid/node-x8-y20 87T 64T 23T 73% +/dev/grid/node-x8-y21 90T 71T 19T 78% +/dev/grid/node-x8-y22 505T 497T 8T 98% +/dev/grid/node-x8-y23 92T 72T 20T 78% +/dev/grid/node-x8-y24 86T 70T 16T 81% +/dev/grid/node-x8-y25 92T 69T 23T 75% +/dev/grid/node-x8-y26 93T 71T 22T 76% +/dev/grid/node-x8-y27 91T 70T 21T 76% +/dev/grid/node-x8-y28 92T 0T 92T 0% +/dev/grid/node-x9-y0 87T 69T 18T 79% +/dev/grid/node-x9-y1 90T 69T 21T 76% +/dev/grid/node-x9-y2 91T 69T 22T 75% +/dev/grid/node-x9-y3 92T 71T 21T 77% +/dev/grid/node-x9-y4 91T 66T 25T 72% +/dev/grid/node-x9-y5 92T 65T 27T 70% +/dev/grid/node-x9-y6 87T 71T 16T 81% +/dev/grid/node-x9-y7 88T 68T 20T 77% +/dev/grid/node-x9-y8 85T 67T 18T 78% +/dev/grid/node-x9-y9 86T 65T 21T 75% +/dev/grid/node-x9-y10 88T 64T 24T 72% +/dev/grid/node-x9-y11 90T 70T 20T 77% +/dev/grid/node-x9-y12 88T 64T 24T 72% +/dev/grid/node-x9-y13 85T 69T 16T 81% +/dev/grid/node-x9-y14 85T 71T 14T 83% +/dev/grid/node-x9-y15 92T 70T 22T 76% +/dev/grid/node-x9-y16 92T 65T 27T 70% +/dev/grid/node-x9-y17 89T 66T 23T 74% +/dev/grid/node-x9-y18 85T 69T 16T 81% +/dev/grid/node-x9-y19 94T 69T 25T 73% +/dev/grid/node-x9-y20 92T 66T 26T 71% +/dev/grid/node-x9-y21 88T 70T 18T 79% +/dev/grid/node-x9-y22 507T 498T 9T 98% +/dev/grid/node-x9-y23 86T 68T 18T 79% +/dev/grid/node-x9-y24 90T 69T 21T 76% +/dev/grid/node-x9-y25 87T 65T 22T 74% +/dev/grid/node-x9-y26 86T 71T 15T 82% +/dev/grid/node-x9-y27 85T 65T 20T 76% +/dev/grid/node-x9-y28 87T 70T 17T 80% +/dev/grid/node-x10-y0 91T 64T 27T 70% +/dev/grid/node-x10-y1 92T 65T 27T 70% +/dev/grid/node-x10-y2 89T 66T 23T 74% +/dev/grid/node-x10-y3 94T 64T 30T 68% +/dev/grid/node-x10-y4 92T 69T 23T 75% +/dev/grid/node-x10-y5 91T 64T 27T 70% +/dev/grid/node-x10-y6 86T 72T 14T 83% +/dev/grid/node-x10-y7 87T 66T 21T 75% +/dev/grid/node-x10-y8 90T 73T 17T 81% +/dev/grid/node-x10-y9 91T 73T 18T 80% +/dev/grid/node-x10-y10 94T 71T 23T 75% +/dev/grid/node-x10-y11 94T 71T 23T 75% +/dev/grid/node-x10-y12 92T 67T 25T 72% +/dev/grid/node-x10-y13 92T 66T 26T 71% +/dev/grid/node-x10-y14 86T 66T 20T 76% +/dev/grid/node-x10-y15 93T 73T 20T 78% +/dev/grid/node-x10-y16 92T 66T 26T 71% +/dev/grid/node-x10-y17 92T 71T 21T 77% +/dev/grid/node-x10-y18 86T 65T 21T 75% +/dev/grid/node-x10-y19 92T 68T 24T 73% +/dev/grid/node-x10-y20 87T 66T 21T 75% +/dev/grid/node-x10-y21 90T 65T 25T 72% +/dev/grid/node-x10-y22 501T 494T 7T 98% +/dev/grid/node-x10-y23 87T 66T 21T 75% +/dev/grid/node-x10-y24 85T 69T 16T 81% +/dev/grid/node-x10-y25 90T 72T 18T 80% +/dev/grid/node-x10-y26 94T 69T 25T 73% +/dev/grid/node-x10-y27 86T 69T 17T 80% +/dev/grid/node-x10-y28 90T 68T 22T 75% +/dev/grid/node-x11-y0 90T 65T 25T 72% +/dev/grid/node-x11-y1 90T 70T 20T 77% +/dev/grid/node-x11-y2 94T 69T 25T 73% +/dev/grid/node-x11-y3 92T 72T 20T 78% +/dev/grid/node-x11-y4 93T 67T 26T 72% +/dev/grid/node-x11-y5 89T 70T 19T 78% +/dev/grid/node-x11-y6 87T 66T 21T 75% +/dev/grid/node-x11-y7 92T 70T 22T 76% +/dev/grid/node-x11-y8 93T 71T 22T 76% +/dev/grid/node-x11-y9 93T 68T 25T 73% +/dev/grid/node-x11-y10 85T 65T 20T 76% +/dev/grid/node-x11-y11 90T 72T 18T 80% +/dev/grid/node-x11-y12 89T 65T 24T 73% +/dev/grid/node-x11-y13 86T 69T 17T 80% +/dev/grid/node-x11-y14 93T 73T 20T 78% +/dev/grid/node-x11-y15 93T 68T 25T 73% +/dev/grid/node-x11-y16 92T 72T 20T 78% +/dev/grid/node-x11-y17 85T 71T 14T 83% +/dev/grid/node-x11-y18 90T 68T 22T 75% +/dev/grid/node-x11-y19 90T 69T 21T 76% +/dev/grid/node-x11-y20 85T 73T 12T 85% +/dev/grid/node-x11-y21 93T 68T 25T 73% +/dev/grid/node-x11-y22 504T 491T 13T 97% +/dev/grid/node-x11-y23 87T 69T 18T 79% +/dev/grid/node-x11-y24 88T 65T 23T 73% +/dev/grid/node-x11-y25 94T 67T 27T 71% +/dev/grid/node-x11-y26 92T 73T 19T 79% +/dev/grid/node-x11-y27 87T 64T 23T 73% +/dev/grid/node-x11-y28 89T 70T 19T 78% +/dev/grid/node-x12-y0 88T 73T 15T 82% +/dev/grid/node-x12-y1 90T 68T 22T 75% +/dev/grid/node-x12-y2 85T 65T 20T 76% +/dev/grid/node-x12-y3 94T 71T 23T 75% +/dev/grid/node-x12-y4 86T 68T 18T 79% +/dev/grid/node-x12-y5 89T 67T 22T 75% +/dev/grid/node-x12-y6 89T 71T 18T 79% +/dev/grid/node-x12-y7 85T 68T 17T 80% +/dev/grid/node-x12-y8 94T 68T 26T 72% +/dev/grid/node-x12-y9 91T 71T 20T 78% +/dev/grid/node-x12-y10 91T 65T 26T 71% +/dev/grid/node-x12-y11 91T 71T 20T 78% +/dev/grid/node-x12-y12 85T 65T 20T 76% +/dev/grid/node-x12-y13 89T 71T 18T 79% +/dev/grid/node-x12-y14 85T 70T 15T 82% +/dev/grid/node-x12-y15 92T 73T 19T 79% +/dev/grid/node-x12-y16 94T 66T 28T 70% +/dev/grid/node-x12-y17 90T 72T 18T 80% +/dev/grid/node-x12-y18 90T 64T 26T 71% +/dev/grid/node-x12-y19 87T 72T 15T 82% +/dev/grid/node-x12-y20 89T 70T 19T 78% +/dev/grid/node-x12-y21 90T 66T 24T 73% +/dev/grid/node-x12-y22 506T 497T 9T 98% +/dev/grid/node-x12-y23 90T 67T 23T 74% +/dev/grid/node-x12-y24 85T 67T 18T 78% +/dev/grid/node-x12-y25 85T 72T 13T 84% +/dev/grid/node-x12-y26 94T 71T 23T 75% +/dev/grid/node-x12-y27 92T 64T 28T 69% +/dev/grid/node-x12-y28 90T 65T 25T 72% +/dev/grid/node-x13-y0 85T 72T 13T 84% +/dev/grid/node-x13-y1 93T 67T 26T 72% +/dev/grid/node-x13-y2 94T 64T 30T 68% +/dev/grid/node-x13-y3 85T 71T 14T 83% +/dev/grid/node-x13-y4 93T 71T 22T 76% +/dev/grid/node-x13-y5 85T 67T 18T 78% +/dev/grid/node-x13-y6 91T 68T 23T 74% +/dev/grid/node-x13-y7 92T 66T 26T 71% +/dev/grid/node-x13-y8 88T 66T 22T 75% +/dev/grid/node-x13-y9 91T 72T 19T 79% +/dev/grid/node-x13-y10 89T 72T 17T 80% +/dev/grid/node-x13-y11 90T 68T 22T 75% +/dev/grid/node-x13-y12 89T 65T 24T 73% +/dev/grid/node-x13-y13 90T 69T 21T 76% +/dev/grid/node-x13-y14 86T 64T 22T 74% +/dev/grid/node-x13-y15 91T 65T 26T 71% +/dev/grid/node-x13-y16 86T 72T 14T 83% +/dev/grid/node-x13-y17 85T 71T 14T 83% +/dev/grid/node-x13-y18 85T 68T 17T 80% +/dev/grid/node-x13-y19 91T 69T 22T 75% +/dev/grid/node-x13-y20 87T 70T 17T 80% +/dev/grid/node-x13-y21 94T 65T 29T 69% +/dev/grid/node-x13-y22 503T 492T 11T 97% +/dev/grid/node-x13-y23 91T 70T 21T 76% +/dev/grid/node-x13-y24 91T 66T 25T 72% +/dev/grid/node-x13-y25 88T 64T 24T 72% +/dev/grid/node-x13-y26 87T 70T 17T 80% +/dev/grid/node-x13-y27 91T 66T 25T 72% +/dev/grid/node-x13-y28 86T 68T 18T 79% +/dev/grid/node-x14-y0 85T 67T 18T 78% +/dev/grid/node-x14-y1 87T 70T 17T 80% +/dev/grid/node-x14-y2 92T 67T 25T 72% +/dev/grid/node-x14-y3 87T 64T 23T 73% +/dev/grid/node-x14-y4 92T 73T 19T 79% +/dev/grid/node-x14-y5 86T 66T 20T 76% +/dev/grid/node-x14-y6 89T 69T 20T 77% +/dev/grid/node-x14-y7 89T 67T 22T 75% +/dev/grid/node-x14-y8 89T 70T 19T 78% +/dev/grid/node-x14-y9 91T 70T 21T 76% +/dev/grid/node-x14-y10 87T 70T 17T 80% +/dev/grid/node-x14-y11 86T 66T 20T 76% +/dev/grid/node-x14-y12 92T 67T 25T 72% +/dev/grid/node-x14-y13 87T 68T 19T 78% +/dev/grid/node-x14-y14 94T 65T 29T 69% +/dev/grid/node-x14-y15 93T 68T 25T 73% +/dev/grid/node-x14-y16 87T 66T 21T 75% +/dev/grid/node-x14-y17 90T 70T 20T 77% +/dev/grid/node-x14-y18 90T 66T 24T 73% +/dev/grid/node-x14-y19 89T 71T 18T 79% +/dev/grid/node-x14-y20 85T 72T 13T 84% +/dev/grid/node-x14-y21 90T 66T 24T 73% +/dev/grid/node-x14-y22 504T 491T 13T 97% +/dev/grid/node-x14-y23 90T 71T 19T 78% +/dev/grid/node-x14-y24 94T 68T 26T 72% +/dev/grid/node-x14-y25 91T 73T 18T 80% +/dev/grid/node-x14-y26 88T 68T 20T 77% +/dev/grid/node-x14-y27 86T 66T 20T 76% +/dev/grid/node-x14-y28 92T 70T 22T 76% +/dev/grid/node-x15-y0 91T 73T 18T 80% +/dev/grid/node-x15-y1 85T 65T 20T 76% +/dev/grid/node-x15-y2 88T 67T 21T 76% +/dev/grid/node-x15-y3 91T 66T 25T 72% +/dev/grid/node-x15-y4 92T 65T 27T 70% +/dev/grid/node-x15-y5 94T 66T 28T 70% +/dev/grid/node-x15-y6 90T 67T 23T 74% +/dev/grid/node-x15-y7 91T 72T 19T 79% +/dev/grid/node-x15-y8 88T 65T 23T 73% +/dev/grid/node-x15-y9 90T 66T 24T 73% +/dev/grid/node-x15-y10 86T 69T 17T 80% +/dev/grid/node-x15-y11 89T 67T 22T 75% +/dev/grid/node-x15-y12 86T 67T 19T 77% +/dev/grid/node-x15-y13 85T 65T 20T 76% +/dev/grid/node-x15-y14 92T 68T 24T 73% +/dev/grid/node-x15-y15 85T 73T 12T 85% +/dev/grid/node-x15-y16 86T 65T 21T 75% +/dev/grid/node-x15-y17 92T 69T 23T 75% +/dev/grid/node-x15-y18 87T 72T 15T 82% +/dev/grid/node-x15-y19 92T 64T 28T 69% +/dev/grid/node-x15-y20 92T 71T 21T 77% +/dev/grid/node-x15-y21 86T 71T 15T 82% +/dev/grid/node-x15-y22 501T 494T 7T 98% +/dev/grid/node-x15-y23 93T 65T 28T 69% +/dev/grid/node-x15-y24 85T 71T 14T 83% +/dev/grid/node-x15-y25 90T 66T 24T 73% +/dev/grid/node-x15-y26 87T 67T 20T 77% +/dev/grid/node-x15-y27 90T 70T 20T 77% +/dev/grid/node-x15-y28 89T 71T 18T 79% +/dev/grid/node-x16-y0 91T 72T 19T 79% +/dev/grid/node-x16-y1 91T 65T 26T 71% +/dev/grid/node-x16-y2 90T 64T 26T 71% +/dev/grid/node-x16-y3 87T 67T 20T 77% +/dev/grid/node-x16-y4 86T 66T 20T 76% +/dev/grid/node-x16-y5 88T 73T 15T 82% +/dev/grid/node-x16-y6 85T 68T 17T 80% +/dev/grid/node-x16-y7 86T 66T 20T 76% +/dev/grid/node-x16-y8 91T 69T 22T 75% +/dev/grid/node-x16-y9 87T 66T 21T 75% +/dev/grid/node-x16-y10 86T 72T 14T 83% +/dev/grid/node-x16-y11 90T 66T 24T 73% +/dev/grid/node-x16-y12 85T 72T 13T 84% +/dev/grid/node-x16-y13 88T 71T 17T 80% +/dev/grid/node-x16-y14 90T 70T 20T 77% +/dev/grid/node-x16-y15 91T 71T 20T 78% +/dev/grid/node-x16-y16 86T 70T 16T 81% +/dev/grid/node-x16-y17 86T 73T 13T 84% +/dev/grid/node-x16-y18 88T 66T 22T 75% +/dev/grid/node-x16-y19 92T 67T 25T 72% +/dev/grid/node-x16-y20 92T 73T 19T 79% +/dev/grid/node-x16-y21 94T 71T 23T 75% +/dev/grid/node-x16-y22 507T 498T 9T 98% +/dev/grid/node-x16-y23 92T 72T 20T 78% +/dev/grid/node-x16-y24 85T 72T 13T 84% +/dev/grid/node-x16-y25 88T 66T 22T 75% +/dev/grid/node-x16-y26 92T 67T 25T 72% +/dev/grid/node-x16-y27 94T 64T 30T 68% +/dev/grid/node-x16-y28 86T 66T 20T 76% +/dev/grid/node-x17-y0 88T 65T 23T 73% +/dev/grid/node-x17-y1 85T 66T 19T 77% +/dev/grid/node-x17-y2 88T 70T 18T 79% +/dev/grid/node-x17-y3 89T 68T 21T 76% +/dev/grid/node-x17-y4 89T 68T 21T 76% +/dev/grid/node-x17-y5 94T 69T 25T 73% +/dev/grid/node-x17-y6 85T 66T 19T 77% +/dev/grid/node-x17-y7 93T 67T 26T 72% +/dev/grid/node-x17-y8 87T 67T 20T 77% +/dev/grid/node-x17-y9 94T 67T 27T 71% +/dev/grid/node-x17-y10 92T 64T 28T 69% +/dev/grid/node-x17-y11 94T 68T 26T 72% +/dev/grid/node-x17-y12 85T 66T 19T 77% +/dev/grid/node-x17-y13 87T 68T 19T 78% +/dev/grid/node-x17-y14 89T 65T 24T 73% +/dev/grid/node-x17-y15 94T 69T 25T 73% +/dev/grid/node-x17-y16 90T 69T 21T 76% +/dev/grid/node-x17-y17 85T 66T 19T 77% +/dev/grid/node-x17-y18 91T 68T 23T 74% +/dev/grid/node-x17-y19 89T 73T 16T 82% +/dev/grid/node-x17-y20 94T 66T 28T 70% +/dev/grid/node-x17-y21 91T 68T 23T 74% +/dev/grid/node-x17-y22 509T 499T 10T 98% +/dev/grid/node-x17-y23 89T 69T 20T 77% +/dev/grid/node-x17-y24 91T 64T 27T 70% +/dev/grid/node-x17-y25 89T 66T 23T 74% +/dev/grid/node-x17-y26 91T 72T 19T 79% +/dev/grid/node-x17-y27 93T 69T 24T 74% +/dev/grid/node-x17-y28 87T 73T 14T 83% +/dev/grid/node-x18-y0 85T 69T 16T 81% +/dev/grid/node-x18-y1 90T 65T 25T 72% +/dev/grid/node-x18-y2 85T 69T 16T 81% +/dev/grid/node-x18-y3 89T 66T 23T 74% +/dev/grid/node-x18-y4 88T 69T 19T 78% +/dev/grid/node-x18-y5 90T 70T 20T 77% +/dev/grid/node-x18-y6 90T 69T 21T 76% +/dev/grid/node-x18-y7 92T 67T 25T 72% +/dev/grid/node-x18-y8 85T 64T 21T 75% +/dev/grid/node-x18-y9 86T 68T 18T 79% +/dev/grid/node-x18-y10 89T 66T 23T 74% +/dev/grid/node-x18-y11 87T 70T 17T 80% +/dev/grid/node-x18-y12 93T 68T 25T 73% +/dev/grid/node-x18-y13 89T 67T 22T 75% +/dev/grid/node-x18-y14 91T 66T 25T 72% +/dev/grid/node-x18-y15 91T 65T 26T 71% +/dev/grid/node-x18-y16 90T 66T 24T 73% +/dev/grid/node-x18-y17 85T 69T 16T 81% +/dev/grid/node-x18-y18 93T 70T 23T 75% +/dev/grid/node-x18-y19 93T 64T 29T 68% +/dev/grid/node-x18-y20 87T 70T 17T 80% +/dev/grid/node-x18-y21 87T 73T 14T 83% +/dev/grid/node-x18-y22 503T 498T 5T 99% +/dev/grid/node-x18-y23 92T 68T 24T 73% +/dev/grid/node-x18-y24 88T 68T 20T 77% +/dev/grid/node-x18-y25 94T 64T 30T 68% +/dev/grid/node-x18-y26 93T 66T 27T 70% +/dev/grid/node-x18-y27 90T 67T 23T 74% +/dev/grid/node-x18-y28 89T 67T 22T 75% +/dev/grid/node-x19-y0 91T 67T 24T 73% +/dev/grid/node-x19-y1 87T 64T 23T 73% +/dev/grid/node-x19-y2 94T 64T 30T 68% +/dev/grid/node-x19-y3 90T 71T 19T 78% +/dev/grid/node-x19-y4 88T 66T 22T 75% +/dev/grid/node-x19-y5 93T 69T 24T 74% +/dev/grid/node-x19-y6 89T 73T 16T 82% +/dev/grid/node-x19-y7 91T 68T 23T 74% +/dev/grid/node-x19-y8 89T 67T 22T 75% +/dev/grid/node-x19-y9 90T 72T 18T 80% +/dev/grid/node-x19-y10 93T 73T 20T 78% +/dev/grid/node-x19-y11 88T 70T 18T 79% +/dev/grid/node-x19-y12 89T 67T 22T 75% +/dev/grid/node-x19-y13 91T 65T 26T 71% +/dev/grid/node-x19-y14 92T 67T 25T 72% +/dev/grid/node-x19-y15 88T 69T 19T 78% +/dev/grid/node-x19-y16 93T 72T 21T 77% +/dev/grid/node-x19-y17 88T 64T 24T 72% +/dev/grid/node-x19-y18 88T 67T 21T 76% +/dev/grid/node-x19-y19 85T 65T 20T 76% +/dev/grid/node-x19-y20 90T 68T 22T 75% +/dev/grid/node-x19-y21 88T 65T 23T 73% +/dev/grid/node-x19-y22 508T 498T 10T 98% +/dev/grid/node-x19-y23 93T 65T 28T 69% +/dev/grid/node-x19-y24 85T 67T 18T 78% +/dev/grid/node-x19-y25 92T 65T 27T 70% +/dev/grid/node-x19-y26 92T 67T 25T 72% +/dev/grid/node-x19-y27 91T 65T 26T 71% +/dev/grid/node-x19-y28 91T 73T 18T 80% +/dev/grid/node-x20-y0 86T 64T 22T 74% +/dev/grid/node-x20-y1 89T 68T 21T 76% +/dev/grid/node-x20-y2 92T 71T 21T 77% +/dev/grid/node-x20-y3 86T 68T 18T 79% +/dev/grid/node-x20-y4 86T 66T 20T 76% +/dev/grid/node-x20-y5 94T 66T 28T 70% +/dev/grid/node-x20-y6 91T 73T 18T 80% +/dev/grid/node-x20-y7 87T 68T 19T 78% +/dev/grid/node-x20-y8 94T 66T 28T 70% +/dev/grid/node-x20-y9 89T 64T 25T 71% +/dev/grid/node-x20-y10 92T 68T 24T 73% +/dev/grid/node-x20-y11 94T 66T 28T 70% +/dev/grid/node-x20-y12 88T 73T 15T 82% +/dev/grid/node-x20-y13 91T 67T 24T 73% +/dev/grid/node-x20-y14 93T 66T 27T 70% +/dev/grid/node-x20-y15 88T 72T 16T 81% +/dev/grid/node-x20-y16 93T 68T 25T 73% +/dev/grid/node-x20-y17 91T 68T 23T 74% +/dev/grid/node-x20-y18 87T 73T 14T 83% +/dev/grid/node-x20-y19 94T 70T 24T 74% +/dev/grid/node-x20-y20 88T 67T 21T 76% +/dev/grid/node-x20-y21 88T 68T 20T 77% +/dev/grid/node-x20-y22 503T 499T 4T 99% +/dev/grid/node-x20-y23 88T 67T 21T 76% +/dev/grid/node-x20-y24 92T 68T 24T 73% +/dev/grid/node-x20-y25 85T 69T 16T 81% +/dev/grid/node-x20-y26 87T 70T 17T 80% +/dev/grid/node-x20-y27 86T 70T 16T 81% +/dev/grid/node-x20-y28 93T 65T 28T 69% +/dev/grid/node-x21-y0 90T 67T 23T 74% +/dev/grid/node-x21-y1 85T 66T 19T 77% +/dev/grid/node-x21-y2 93T 73T 20T 78% +/dev/grid/node-x21-y3 88T 71T 17T 80% +/dev/grid/node-x21-y4 94T 71T 23T 75% +/dev/grid/node-x21-y5 92T 69T 23T 75% +/dev/grid/node-x21-y6 94T 66T 28T 70% +/dev/grid/node-x21-y7 94T 65T 29T 69% +/dev/grid/node-x21-y8 85T 71T 14T 83% +/dev/grid/node-x21-y9 87T 69T 18T 79% +/dev/grid/node-x21-y10 86T 68T 18T 79% +/dev/grid/node-x21-y11 92T 68T 24T 73% +/dev/grid/node-x21-y12 89T 68T 21T 76% +/dev/grid/node-x21-y13 88T 73T 15T 82% +/dev/grid/node-x21-y14 86T 67T 19T 77% +/dev/grid/node-x21-y15 87T 72T 15T 82% +/dev/grid/node-x21-y16 87T 70T 17T 80% +/dev/grid/node-x21-y17 87T 71T 16T 81% +/dev/grid/node-x21-y18 88T 72T 16T 81% +/dev/grid/node-x21-y19 93T 65T 28T 69% +/dev/grid/node-x21-y20 92T 70T 22T 76% +/dev/grid/node-x21-y21 91T 70T 21T 76% +/dev/grid/node-x21-y22 510T 493T 17T 96% +/dev/grid/node-x21-y23 89T 69T 20T 77% +/dev/grid/node-x21-y24 94T 72T 22T 76% +/dev/grid/node-x21-y25 91T 70T 21T 76% +/dev/grid/node-x21-y26 89T 65T 24T 73% +/dev/grid/node-x21-y27 85T 72T 13T 84% +/dev/grid/node-x21-y28 93T 72T 21T 77% +/dev/grid/node-x22-y0 89T 67T 22T 75% +/dev/grid/node-x22-y1 85T 65T 20T 76% +/dev/grid/node-x22-y2 93T 64T 29T 68% +/dev/grid/node-x22-y3 93T 71T 22T 76% +/dev/grid/node-x22-y4 85T 65T 20T 76% +/dev/grid/node-x22-y5 85T 67T 18T 78% +/dev/grid/node-x22-y6 90T 64T 26T 71% +/dev/grid/node-x22-y7 87T 69T 18T 79% +/dev/grid/node-x22-y8 94T 72T 22T 76% +/dev/grid/node-x22-y9 87T 71T 16T 81% +/dev/grid/node-x22-y10 87T 65T 22T 74% +/dev/grid/node-x22-y11 93T 72T 21T 77% +/dev/grid/node-x22-y12 86T 72T 14T 83% +/dev/grid/node-x22-y13 89T 66T 23T 74% +/dev/grid/node-x22-y14 90T 67T 23T 74% +/dev/grid/node-x22-y15 92T 70T 22T 76% +/dev/grid/node-x22-y16 92T 66T 26T 71% +/dev/grid/node-x22-y17 91T 66T 25T 72% +/dev/grid/node-x22-y18 91T 68T 23T 74% +/dev/grid/node-x22-y19 88T 71T 17T 80% +/dev/grid/node-x22-y20 90T 69T 21T 76% +/dev/grid/node-x22-y21 90T 68T 22T 75% +/dev/grid/node-x22-y22 502T 490T 12T 97% +/dev/grid/node-x22-y23 91T 67T 24T 73% +/dev/grid/node-x22-y24 93T 71T 22T 76% +/dev/grid/node-x22-y25 92T 65T 27T 70% +/dev/grid/node-x22-y26 93T 69T 24T 74% +/dev/grid/node-x22-y27 85T 72T 13T 84% +/dev/grid/node-x22-y28 93T 64T 29T 68% +/dev/grid/node-x23-y0 92T 73T 19T 79% +/dev/grid/node-x23-y1 90T 64T 26T 71% +/dev/grid/node-x23-y2 93T 65T 28T 69% +/dev/grid/node-x23-y3 88T 72T 16T 81% +/dev/grid/node-x23-y4 92T 70T 22T 76% +/dev/grid/node-x23-y5 90T 66T 24T 73% +/dev/grid/node-x23-y6 86T 66T 20T 76% +/dev/grid/node-x23-y7 89T 71T 18T 79% +/dev/grid/node-x23-y8 89T 64T 25T 71% +/dev/grid/node-x23-y9 90T 64T 26T 71% +/dev/grid/node-x23-y10 94T 70T 24T 74% +/dev/grid/node-x23-y11 85T 64T 21T 75% +/dev/grid/node-x23-y12 86T 66T 20T 76% +/dev/grid/node-x23-y13 86T 64T 22T 74% +/dev/grid/node-x23-y14 92T 68T 24T 73% +/dev/grid/node-x23-y15 94T 70T 24T 74% +/dev/grid/node-x23-y16 91T 69T 22T 75% +/dev/grid/node-x23-y17 93T 70T 23T 75% +/dev/grid/node-x23-y18 87T 65T 22T 74% +/dev/grid/node-x23-y19 86T 64T 22T 74% +/dev/grid/node-x23-y20 94T 66T 28T 70% +/dev/grid/node-x23-y21 92T 64T 28T 69% +/dev/grid/node-x23-y22 507T 491T 16T 96% +/dev/grid/node-x23-y23 88T 73T 15T 82% +/dev/grid/node-x23-y24 87T 69T 18T 79% +/dev/grid/node-x23-y25 91T 71T 20T 78% +/dev/grid/node-x23-y26 90T 71T 19T 78% +/dev/grid/node-x23-y27 87T 70T 17T 80% +/dev/grid/node-x23-y28 91T 70T 21T 76% +/dev/grid/node-x24-y0 86T 67T 19T 77% +/dev/grid/node-x24-y1 94T 67T 27T 71% +/dev/grid/node-x24-y2 89T 71T 18T 79% +/dev/grid/node-x24-y3 86T 67T 19T 77% +/dev/grid/node-x24-y4 87T 73T 14T 83% +/dev/grid/node-x24-y5 86T 64T 22T 74% +/dev/grid/node-x24-y6 92T 68T 24T 73% +/dev/grid/node-x24-y7 85T 68T 17T 80% +/dev/grid/node-x24-y8 86T 65T 21T 75% +/dev/grid/node-x24-y9 87T 73T 14T 83% +/dev/grid/node-x24-y10 91T 68T 23T 74% +/dev/grid/node-x24-y11 94T 67T 27T 71% +/dev/grid/node-x24-y12 94T 67T 27T 71% +/dev/grid/node-x24-y13 88T 71T 17T 80% +/dev/grid/node-x24-y14 91T 70T 21T 76% +/dev/grid/node-x24-y15 89T 72T 17T 80% +/dev/grid/node-x24-y16 92T 69T 23T 75% +/dev/grid/node-x24-y17 87T 70T 17T 80% +/dev/grid/node-x24-y18 94T 69T 25T 73% +/dev/grid/node-x24-y19 91T 66T 25T 72% +/dev/grid/node-x24-y20 90T 64T 26T 71% +/dev/grid/node-x24-y21 86T 65T 21T 75% +/dev/grid/node-x24-y22 508T 494T 14T 97% +/dev/grid/node-x24-y23 89T 72T 17T 80% +/dev/grid/node-x24-y24 94T 66T 28T 70% +/dev/grid/node-x24-y25 88T 64T 24T 72% +/dev/grid/node-x24-y26 86T 64T 22T 74% +/dev/grid/node-x24-y27 92T 65T 27T 70% +/dev/grid/node-x24-y28 89T 72T 17T 80% +/dev/grid/node-x25-y0 93T 70T 23T 75% +/dev/grid/node-x25-y1 91T 73T 18T 80% +/dev/grid/node-x25-y2 89T 65T 24T 73% +/dev/grid/node-x25-y3 86T 69T 17T 80% +/dev/grid/node-x25-y4 90T 70T 20T 77% +/dev/grid/node-x25-y5 89T 65T 24T 73% +/dev/grid/node-x25-y6 92T 71T 21T 77% +/dev/grid/node-x25-y7 91T 65T 26T 71% +/dev/grid/node-x25-y8 91T 67T 24T 73% +/dev/grid/node-x25-y9 94T 73T 21T 77% +/dev/grid/node-x25-y10 94T 73T 21T 77% +/dev/grid/node-x25-y11 91T 70T 21T 76% +/dev/grid/node-x25-y12 91T 71T 20T 78% +/dev/grid/node-x25-y13 86T 67T 19T 77% +/dev/grid/node-x25-y14 88T 67T 21T 76% +/dev/grid/node-x25-y15 90T 67T 23T 74% +/dev/grid/node-x25-y16 92T 64T 28T 69% +/dev/grid/node-x25-y17 94T 68T 26T 72% +/dev/grid/node-x25-y18 87T 73T 14T 83% +/dev/grid/node-x25-y19 86T 73T 13T 84% +/dev/grid/node-x25-y20 92T 72T 20T 78% +/dev/grid/node-x25-y21 93T 73T 20T 78% +/dev/grid/node-x25-y22 504T 491T 13T 97% +/dev/grid/node-x25-y23 91T 72T 19T 79% +/dev/grid/node-x25-y24 85T 70T 15T 82% +/dev/grid/node-x25-y25 85T 73T 12T 85% +/dev/grid/node-x25-y26 85T 67T 18T 78% +/dev/grid/node-x25-y27 89T 69T 20T 77% +/dev/grid/node-x25-y28 86T 66T 20T 76% +/dev/grid/node-x26-y0 91T 72T 19T 79% +/dev/grid/node-x26-y1 86T 68T 18T 79% +/dev/grid/node-x26-y2 88T 70T 18T 79% +/dev/grid/node-x26-y3 88T 66T 22T 75% +/dev/grid/node-x26-y4 85T 71T 14T 83% +/dev/grid/node-x26-y5 90T 66T 24T 73% +/dev/grid/node-x26-y6 90T 66T 24T 73% +/dev/grid/node-x26-y7 89T 73T 16T 82% +/dev/grid/node-x26-y8 85T 65T 20T 76% +/dev/grid/node-x26-y9 90T 72T 18T 80% +/dev/grid/node-x26-y10 86T 64T 22T 74% +/dev/grid/node-x26-y11 90T 64T 26T 71% +/dev/grid/node-x26-y12 92T 73T 19T 79% +/dev/grid/node-x26-y13 85T 72T 13T 84% +/dev/grid/node-x26-y14 91T 73T 18T 80% +/dev/grid/node-x26-y15 92T 69T 23T 75% +/dev/grid/node-x26-y16 90T 72T 18T 80% +/dev/grid/node-x26-y17 90T 68T 22T 75% +/dev/grid/node-x26-y18 90T 73T 17T 81% +/dev/grid/node-x26-y19 94T 64T 30T 68% +/dev/grid/node-x26-y20 86T 73T 13T 84% +/dev/grid/node-x26-y21 86T 66T 20T 76% +/dev/grid/node-x26-y22 510T 491T 19T 96% +/dev/grid/node-x26-y23 87T 66T 21T 75% +/dev/grid/node-x26-y24 91T 64T 27T 70% +/dev/grid/node-x26-y25 94T 66T 28T 70% +/dev/grid/node-x26-y26 85T 68T 17T 80% +/dev/grid/node-x26-y27 85T 71T 14T 83% +/dev/grid/node-x26-y28 94T 64T 30T 68% +/dev/grid/node-x27-y0 88T 73T 15T 82% +/dev/grid/node-x27-y1 94T 67T 27T 71% +/dev/grid/node-x27-y2 90T 73T 17T 81% +/dev/grid/node-x27-y3 93T 71T 22T 76% +/dev/grid/node-x27-y4 89T 70T 19T 78% +/dev/grid/node-x27-y5 90T 66T 24T 73% +/dev/grid/node-x27-y6 87T 73T 14T 83% +/dev/grid/node-x27-y7 87T 66T 21T 75% +/dev/grid/node-x27-y8 86T 69T 17T 80% +/dev/grid/node-x27-y9 88T 73T 15T 82% +/dev/grid/node-x27-y10 92T 64T 28T 69% +/dev/grid/node-x27-y11 87T 69T 18T 79% +/dev/grid/node-x27-y12 91T 64T 27T 70% +/dev/grid/node-x27-y13 94T 68T 26T 72% +/dev/grid/node-x27-y14 89T 68T 21T 76% +/dev/grid/node-x27-y15 87T 67T 20T 77% +/dev/grid/node-x27-y16 90T 72T 18T 80% +/dev/grid/node-x27-y17 94T 65T 29T 69% +/dev/grid/node-x27-y18 90T 72T 18T 80% +/dev/grid/node-x27-y19 88T 73T 15T 82% +/dev/grid/node-x27-y20 88T 71T 17T 80% +/dev/grid/node-x27-y21 88T 64T 24T 72% +/dev/grid/node-x27-y22 504T 490T 14T 97% +/dev/grid/node-x27-y23 93T 66T 27T 70% +/dev/grid/node-x27-y24 85T 67T 18T 78% +/dev/grid/node-x27-y25 94T 64T 30T 68% +/dev/grid/node-x27-y26 85T 72T 13T 84% +/dev/grid/node-x27-y27 85T 73T 12T 85% +/dev/grid/node-x27-y28 89T 70T 19T 78% +/dev/grid/node-x28-y0 93T 66T 27T 70% +/dev/grid/node-x28-y1 86T 71T 15T 82% +/dev/grid/node-x28-y2 94T 73T 21T 77% +/dev/grid/node-x28-y3 91T 72T 19T 79% +/dev/grid/node-x28-y4 87T 69T 18T 79% +/dev/grid/node-x28-y5 85T 70T 15T 82% +/dev/grid/node-x28-y6 85T 72T 13T 84% +/dev/grid/node-x28-y7 89T 72T 17T 80% +/dev/grid/node-x28-y8 90T 73T 17T 81% +/dev/grid/node-x28-y9 94T 64T 30T 68% +/dev/grid/node-x28-y10 85T 73T 12T 85% +/dev/grid/node-x28-y11 89T 70T 19T 78% +/dev/grid/node-x28-y12 94T 67T 27T 71% +/dev/grid/node-x28-y13 87T 68T 19T 78% +/dev/grid/node-x28-y14 94T 72T 22T 76% +/dev/grid/node-x28-y15 92T 66T 26T 71% +/dev/grid/node-x28-y16 91T 64T 27T 70% +/dev/grid/node-x28-y17 86T 69T 17T 80% +/dev/grid/node-x28-y18 88T 69T 19T 78% +/dev/grid/node-x28-y19 90T 70T 20T 77% +/dev/grid/node-x28-y20 89T 69T 20T 77% +/dev/grid/node-x28-y21 90T 67T 23T 74% +/dev/grid/node-x28-y22 506T 491T 15T 97% +/dev/grid/node-x28-y23 89T 70T 19T 78% +/dev/grid/node-x28-y24 90T 73T 17T 81% +/dev/grid/node-x28-y25 86T 65T 21T 75% +/dev/grid/node-x28-y26 93T 73T 20T 78% +/dev/grid/node-x28-y27 88T 69T 19T 78% +/dev/grid/node-x28-y28 92T 68T 24T 73% +/dev/grid/node-x29-y0 88T 70T 18T 79% +/dev/grid/node-x29-y1 89T 68T 21T 76% +/dev/grid/node-x29-y2 85T 73T 12T 85% +/dev/grid/node-x29-y3 89T 73T 16T 82% +/dev/grid/node-x29-y4 86T 68T 18T 79% +/dev/grid/node-x29-y5 91T 70T 21T 76% +/dev/grid/node-x29-y6 86T 70T 16T 81% +/dev/grid/node-x29-y7 86T 64T 22T 74% +/dev/grid/node-x29-y8 90T 73T 17T 81% +/dev/grid/node-x29-y9 92T 65T 27T 70% +/dev/grid/node-x29-y10 89T 72T 17T 80% +/dev/grid/node-x29-y11 85T 66T 19T 77% +/dev/grid/node-x29-y12 89T 73T 16T 82% +/dev/grid/node-x29-y13 90T 72T 18T 80% +/dev/grid/node-x29-y14 86T 69T 17T 80% +/dev/grid/node-x29-y15 85T 64T 21T 75% +/dev/grid/node-x29-y16 88T 69T 19T 78% +/dev/grid/node-x29-y17 92T 64T 28T 69% +/dev/grid/node-x29-y18 86T 65T 21T 75% +/dev/grid/node-x29-y19 92T 70T 22T 76% +/dev/grid/node-x29-y20 94T 64T 30T 68% +/dev/grid/node-x29-y21 87T 64T 23T 73% +/dev/grid/node-x29-y22 509T 497T 12T 97% +/dev/grid/node-x29-y23 91T 67T 24T 73% +/dev/grid/node-x29-y24 90T 67T 23T 74% +/dev/grid/node-x29-y25 86T 65T 21T 75% +/dev/grid/node-x29-y26 94T 68T 26T 72% +/dev/grid/node-x29-y27 89T 69T 20T 77% +/dev/grid/node-x29-y28 87T 71T 16T 81% +/dev/grid/node-x30-y0 92T 64T 28T 69% +/dev/grid/node-x30-y1 93T 67T 26T 72% +/dev/grid/node-x30-y2 93T 66T 27T 70% +/dev/grid/node-x30-y3 93T 67T 26T 72% +/dev/grid/node-x30-y4 86T 70T 16T 81% +/dev/grid/node-x30-y5 91T 67T 24T 73% +/dev/grid/node-x30-y6 89T 66T 23T 74% +/dev/grid/node-x30-y7 89T 72T 17T 80% +/dev/grid/node-x30-y8 93T 69T 24T 74% +/dev/grid/node-x30-y9 94T 68T 26T 72% +/dev/grid/node-x30-y10 89T 69T 20T 77% +/dev/grid/node-x30-y11 94T 64T 30T 68% +/dev/grid/node-x30-y12 93T 65T 28T 69% +/dev/grid/node-x30-y13 85T 72T 13T 84% +/dev/grid/node-x30-y14 88T 68T 20T 77% +/dev/grid/node-x30-y15 94T 64T 30T 68% +/dev/grid/node-x30-y16 92T 73T 19T 79% +/dev/grid/node-x30-y17 92T 73T 19T 79% +/dev/grid/node-x30-y18 87T 68T 19T 78% +/dev/grid/node-x30-y19 93T 64T 29T 68% +/dev/grid/node-x30-y20 94T 67T 27T 71% +/dev/grid/node-x30-y21 89T 67T 22T 75% +/dev/grid/node-x30-y22 507T 491T 16T 96% +/dev/grid/node-x30-y23 91T 64T 27T 70% +/dev/grid/node-x30-y24 87T 65T 22T 74% +/dev/grid/node-x30-y25 85T 65T 20T 76% +/dev/grid/node-x30-y26 91T 68T 23T 74% +/dev/grid/node-x30-y27 90T 67T 23T 74% +/dev/grid/node-x30-y28 94T 66T 28T 70% +/dev/grid/node-x31-y0 92T 67T 25T 72% +/dev/grid/node-x31-y1 93T 68T 25T 73% +/dev/grid/node-x31-y2 92T 66T 26T 71% +/dev/grid/node-x31-y3 89T 64T 25T 71% +/dev/grid/node-x31-y4 90T 71T 19T 78% +/dev/grid/node-x31-y5 89T 68T 21T 76% +/dev/grid/node-x31-y6 85T 72T 13T 84% +/dev/grid/node-x31-y7 88T 65T 23T 73% +/dev/grid/node-x31-y8 86T 66T 20T 76% +/dev/grid/node-x31-y9 90T 72T 18T 80% +/dev/grid/node-x31-y10 86T 67T 19T 77% +/dev/grid/node-x31-y11 89T 72T 17T 80% +/dev/grid/node-x31-y12 90T 73T 17T 81% +/dev/grid/node-x31-y13 91T 70T 21T 76% +/dev/grid/node-x31-y14 94T 67T 27T 71% +/dev/grid/node-x31-y15 94T 73T 21T 77% +/dev/grid/node-x31-y16 86T 71T 15T 82% +/dev/grid/node-x31-y17 86T 73T 13T 84% +/dev/grid/node-x31-y18 89T 65T 24T 73% +/dev/grid/node-x31-y19 86T 72T 14T 83% +/dev/grid/node-x31-y20 88T 64T 24T 72% +/dev/grid/node-x31-y21 90T 64T 26T 71% +/dev/grid/node-x31-y22 505T 496T 9T 98% +/dev/grid/node-x31-y23 90T 73T 17T 81% +/dev/grid/node-x31-y24 91T 73T 18T 80% +/dev/grid/node-x31-y25 94T 69T 25T 73% +/dev/grid/node-x31-y26 92T 64T 28T 69% +/dev/grid/node-x31-y27 91T 66T 25T 72% +/dev/grid/node-x31-y28 85T 65T 20T 76% +/dev/grid/node-x32-y0 85T 69T 16T 81% +/dev/grid/node-x32-y1 93T 67T 26T 72% +/dev/grid/node-x32-y2 93T 73T 20T 78% +/dev/grid/node-x32-y3 94T 71T 23T 75% +/dev/grid/node-x32-y4 90T 70T 20T 77% +/dev/grid/node-x32-y5 92T 68T 24T 73% +/dev/grid/node-x32-y6 94T 64T 30T 68% +/dev/grid/node-x32-y7 86T 72T 14T 83% +/dev/grid/node-x32-y8 85T 73T 12T 85% +/dev/grid/node-x32-y9 89T 69T 20T 77% +/dev/grid/node-x32-y10 89T 73T 16T 82% +/dev/grid/node-x32-y11 87T 65T 22T 74% +/dev/grid/node-x32-y12 94T 67T 27T 71% +/dev/grid/node-x32-y13 93T 67T 26T 72% +/dev/grid/node-x32-y14 93T 66T 27T 70% +/dev/grid/node-x32-y15 86T 72T 14T 83% +/dev/grid/node-x32-y16 89T 69T 20T 77% +/dev/grid/node-x32-y17 93T 67T 26T 72% +/dev/grid/node-x32-y18 87T 64T 23T 73% +/dev/grid/node-x32-y19 85T 69T 16T 81% +/dev/grid/node-x32-y20 85T 69T 16T 81% +/dev/grid/node-x32-y21 91T 65T 26T 71% +/dev/grid/node-x32-y22 503T 491T 12T 97% +/dev/grid/node-x32-y23 94T 71T 23T 75% +/dev/grid/node-x32-y24 87T 64T 23T 73% +/dev/grid/node-x32-y25 91T 73T 18T 80% +/dev/grid/node-x32-y26 93T 67T 26T 72% +/dev/grid/node-x32-y27 86T 71T 15T 82% +/dev/grid/node-x32-y28 91T 64T 27T 70% +/dev/grid/node-x33-y0 86T 73T 13T 84% +/dev/grid/node-x33-y1 88T 71T 17T 80% +/dev/grid/node-x33-y2 90T 66T 24T 73% +/dev/grid/node-x33-y3 85T 64T 21T 75% +/dev/grid/node-x33-y4 87T 66T 21T 75% +/dev/grid/node-x33-y5 91T 68T 23T 74% +/dev/grid/node-x33-y6 93T 68T 25T 73% +/dev/grid/node-x33-y7 92T 70T 22T 76% +/dev/grid/node-x33-y8 91T 64T 27T 70% +/dev/grid/node-x33-y9 85T 72T 13T 84% +/dev/grid/node-x33-y10 89T 65T 24T 73% +/dev/grid/node-x33-y11 91T 66T 25T 72% +/dev/grid/node-x33-y12 87T 68T 19T 78% +/dev/grid/node-x33-y13 89T 70T 19T 78% +/dev/grid/node-x33-y14 86T 68T 18T 79% +/dev/grid/node-x33-y15 85T 69T 16T 81% +/dev/grid/node-x33-y16 94T 66T 28T 70% +/dev/grid/node-x33-y17 92T 68T 24T 73% +/dev/grid/node-x33-y18 88T 72T 16T 81% +/dev/grid/node-x33-y19 90T 73T 17T 81% +/dev/grid/node-x33-y20 89T 64T 25T 71% +/dev/grid/node-x33-y21 92T 71T 21T 77% +/dev/grid/node-x33-y22 502T 497T 5T 99% +/dev/grid/node-x33-y23 94T 67T 27T 71% +/dev/grid/node-x33-y24 93T 64T 29T 68% +/dev/grid/node-x33-y25 90T 66T 24T 73% +/dev/grid/node-x33-y26 87T 72T 15T 82% +/dev/grid/node-x33-y27 85T 73T 12T 85% +/dev/grid/node-x33-y28 86T 72T 14T 83% +/dev/grid/node-x34-y0 89T 66T 23T 74% +/dev/grid/node-x34-y1 94T 64T 30T 68% +/dev/grid/node-x34-y2 92T 69T 23T 75% +/dev/grid/node-x34-y3 93T 70T 23T 75% +/dev/grid/node-x34-y4 88T 64T 24T 72% +/dev/grid/node-x34-y5 94T 67T 27T 71% +/dev/grid/node-x34-y6 89T 68T 21T 76% +/dev/grid/node-x34-y7 94T 71T 23T 75% +/dev/grid/node-x34-y8 88T 69T 19T 78% +/dev/grid/node-x34-y9 89T 72T 17T 80% +/dev/grid/node-x34-y10 90T 69T 21T 76% +/dev/grid/node-x34-y11 91T 65T 26T 71% +/dev/grid/node-x34-y12 88T 69T 19T 78% +/dev/grid/node-x34-y13 90T 69T 21T 76% +/dev/grid/node-x34-y14 92T 66T 26T 71% +/dev/grid/node-x34-y15 94T 70T 24T 74% +/dev/grid/node-x34-y16 87T 69T 18T 79% +/dev/grid/node-x34-y17 86T 67T 19T 77% +/dev/grid/node-x34-y18 94T 66T 28T 70% +/dev/grid/node-x34-y19 94T 69T 25T 73% +/dev/grid/node-x34-y20 91T 67T 24T 73% +/dev/grid/node-x34-y21 87T 72T 15T 82% +/dev/grid/node-x34-y22 501T 495T 6T 98% +/dev/grid/node-x34-y23 93T 71T 22T 76% +/dev/grid/node-x34-y24 92T 73T 19T 79% +/dev/grid/node-x34-y25 90T 73T 17T 81% +/dev/grid/node-x34-y26 89T 69T 20T 77% +/dev/grid/node-x34-y27 89T 72T 17T 80% +/dev/grid/node-x34-y28 87T 66T 21T 75% diff --git a/aoc22/src/main.rs b/aoc22/src/main.rs new file mode 100644 index 0000000..c07d628 --- /dev/null +++ b/aoc22/src/main.rs @@ -0,0 +1,212 @@ +extern crate regex; + +use std::io::BufReader; +use std::io::prelude::*; +use std::fs::File; +use std::collections::HashMap; +use std::collections::HashSet; + +use regex::Regex; + +use std::str::FromStr; + +#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)] +struct Node { + x: i8, + y: i8, + size: i16, + used: i16, + avail: i16, + blocker: bool +} + +impl FromStr for Node { + type Err = String; + + fn from_str(s: &str) -> Result<Self, Self::Err> { + let reg = Regex::new(r"/dev/grid/node-x(\d+)-y(\d+) +(\d+)T +(\d+)T +(\d+)T +(\d+)%").unwrap(); + let cap = match reg.captures(s) { + Some(cap) => cap, + None => return Err("Does not match regex".to_string()) + }; + Ok(Node { + x: cap.at(1).unwrap().parse().unwrap(), + y: cap.at(2).unwrap().parse().unwrap(), + size: cap.at(3).unwrap().parse().unwrap(), + used: cap.at(4).unwrap().parse().unwrap(), + avail: cap.at(5).unwrap().parse().unwrap(), + blocker: false + }) + } +} + +impl Node { + fn is_viable_pair(&self, other: &Node) -> bool { + (self.x != other.x || self.y != other.y) && self.used > 0 && self.used <= other.avail + } + + fn recalculate_avail(&mut self) { + self.avail = self.size - self.used; + debug_assert!(self.avail >= 0); + debug_assert!(self.used >= 0); + } +} + +#[derive(Clone, Hash, PartialEq, Eq)] +struct Grid { + nodes: Vec<Vec<Node>>, + goal_x: i8, + goal_y: i8 +} + +impl Grid { + fn new(nodes: Vec<Node>) -> Grid { + let mut grid_nodes = Vec::new(); + let mut next_col = Vec::new(); + + let mut current_x = 0; + + for node in nodes { + if current_x != node.x { + grid_nodes.push(next_col); + next_col = Vec::new(); + current_x += 1; + } + + next_col.push(node); + } + grid_nodes.push(next_col); + + for x in 0..grid_nodes.len() { + for y in 0..grid_nodes[x].len() { + let mut is_blocker = true; + if x > 0 && grid_nodes[x-1][y].size >= grid_nodes[x][y].used { + is_blocker = false; + } + if x < grid_nodes.len()-1 && grid_nodes[x+1][y].size >= grid_nodes[x][y].used { + is_blocker = false; + } + if y > 0 && grid_nodes[x][y-1].size >= grid_nodes[x][y].used { + is_blocker = false; + } + if y < grid_nodes[x].len()-1 && grid_nodes[x][y+1].size >= grid_nodes[x][y].used { + is_blocker = false; + } + grid_nodes[x][y].blocker = is_blocker; + } + } + for x in 0..grid_nodes.len() { + for y in 0..grid_nodes[x].len() { + grid_nodes[x][y].size = if grid_nodes[x][y].blocker { 2 } else { 1 }; + grid_nodes[x][y].used = if grid_nodes[x][y].used > 0 { grid_nodes[x][y].size } else { 0 }; + grid_nodes[x][y].avail = grid_nodes[x][y].size - grid_nodes[x][y].used; + } + } + + Grid { + nodes: grid_nodes, + goal_x: current_x, + goal_y: 0 + } + } + + fn is_final(&self) -> bool { + self.goal_x == 0 && self.goal_y == 0 + } + + fn make_move(&self, x: i8, y: i8, dx: i8, dy: i8) -> Option<Grid> { + if x+dx < 0 || x+dx >= self.nodes.len() as i8 || y+dy < 0 || y+dy >= self.nodes[x as usize].len() as i8 { + return None; + } + if !self.nodes[x as usize][y as usize].is_viable_pair(&self.nodes[(x+dx) as usize][(y+dy) as usize]) { + return None; + } + + let mut new_grid = self.clone(); + new_grid.nodes[(x+dx) as usize][(y+dy) as usize].used += new_grid.nodes[x as usize][y as usize].used; + new_grid.nodes[(x+dx) as usize][(y+dy) as usize].recalculate_avail(); + new_grid.nodes[x as usize][y as usize].used = 0; + new_grid.nodes[x as usize][y as usize].recalculate_avail(); + + if new_grid.goal_x == x && new_grid.goal_y == y { + new_grid.goal_x = x+dx; + new_grid.goal_y = y+dy; + } + + Some(new_grid) + } + + fn available_moves(&self) -> Vec<Grid> { + let mut moves = Vec::with_capacity(4); + + for x in 0..self.nodes.len() as i8 { + for y in 0..self.nodes[x as usize].len() as i8 { + match self.make_move(x, y, -1, 0) { + Some(grid) => { moves.push(grid); }, + None => {} + }; + match self.make_move(x, y, 0, -1) { + Some(grid) => { moves.push(grid); }, + None => {} + }; + match self.make_move(x, y, 1, 0) { + Some(grid) => { moves.push(grid); }, + None => {} + }; + match self.make_move(x, y, 0, 1) { + Some(grid) => { moves.push(grid); }, + None => {} + }; + } + } + + moves + } +} + + +fn main() { + let nodes = read_input(); + + let initial = Grid::new(nodes); + println!("Initial grid has {} possible moves", initial.available_moves().len()); + + let mut explored: HashSet<Grid> = HashSet::new(); + let mut frontier: HashMap<Grid, u32> = HashMap::new(); + frontier.insert(initial, 0); + let mut found_final = false; + + while !found_final { + let (best_frontier, moves) = find_best_frontiers(&frontier); + + let new_states = best_frontier.available_moves(); + found_final = new_states.iter().any(|ref s| s.is_final()); + + for state in new_states { + if !(explored.contains(&state) || frontier.contains_key(&state)) { + frontier.insert(state, moves+1); + } + } + + frontier.remove(&best_frontier); + explored.insert(best_frontier); + } + + let (final_frontier, moves) = frontier.iter().find(|&(s, _)| s.is_final()).unwrap(); + println!("It took {} moves to get the data", moves); +} + +fn read_input() -> Vec<Node> { + let file = BufReader::new(File::open("input.txt").unwrap()); + + file.lines() + .skip(2) + .filter_map(|line| Node::from_str(line.unwrap().as_ref()).ok()) + .collect() +} + +fn find_best_frontiers(frontier: &HashMap<Grid, u32>) -> (Grid, u32) { + frontier.iter().min_by_key(|&(ref grid, &moves)| { + grid.goal_x as u32 + grid.goal_y as u32 + moves + }).map(|(&ref grid, &moves)| (grid.clone(), moves.clone())).unwrap() +} |