Compare commits

...

438 Commits
wip ... main

Author SHA1 Message Date
Alpha Chen babaaebb45
mu
7 months ago
Alpha Chen 2364abf76a
[2023][ruby][19.1]
10 months ago
Alpha Chen 48b7acdcea
[2023][ruby][18.x]
10 months ago
Alpha Chen 6f332e48d1
[2023][ruby][17.2]
10 months ago
Alpha Chen 51c91ab2f2
[2023][ruby][17.1]
10 months ago
Alpha Chen 2ac1c6069a
[2023][ruby][16.x] golfing
10 months ago
Alpha Chen efda4ecb16
[2023][ruby][16.2] shameless green
10 months ago
Alpha Chen b7a02fda85
[2023][ruby][16.1] shameless green
10 months ago
Alpha Chen 957435a8ca
[2023][uiua][15] @\0 = @\x00
10 months ago
Alpha Chen af98c2abc5
[2023][uiua][15.1]
10 months ago
Alpha Chen 10da9e80a0
[2023][ruby][15.2]
10 months ago
Alpha Chen 5bbeb5d969
[2023][ruby][15.1]
10 months ago
Alpha Chen 4fa0141f5f
[2023][uiua][14.1]
10 months ago
Alpha Chen 16677ad6a4
[2023][ruby][14.x] clean up part one
10 months ago
Alpha Chen 74bf4a5213
[2023][ruby][14.2]
10 months ago
Alpha Chen cba5517ee9
[2023][ruby][14.1]
10 months ago
Alpha Chen 06068a3114
[2023][ruby][13.2]
10 months ago
Alpha Chen 21e4174051
[2023][ruby][13.1]
10 months ago
Alpha Chen 31afd41329
[2023][ruby][12.2]
10 months ago
Alpha Chen 2928c03ce0
[2023][ruby][12.1]
11 months ago
Alpha Chen eeb3633702
[2023][uiua][11.x] shortening
11 months ago
Alpha Chen 0da7444be5
[2023][uiua][11.x]
11 months ago
Alpha Chen 28e35196f5
[2023][ruby][11.2]
11 months ago
Alpha Chen 1118280a6e
[2023][ruby][11.1]
11 months ago
Alpha Chen 47ca37d8c2
[2023][ruby][8.x] remove unnecessary require
11 months ago
Alpha Chen ed02032839
[2023][ruby][10.x] one more comment
11 months ago
Alpha Chen a3706096c3
[2023][ruby][10.x] lol
11 months ago
Alpha Chen 95a6798f7f
[2023][ruby][10.x]
11 months ago
Alpha Chen b5bfbcff0b
[2023][ruby][9.x] dry
11 months ago
Alpha Chen 7f25d2bde6
[2023][ruby][9.x]
11 months ago
Alpha Chen ca65631b37
[2023][ruby][8.2] til about Integer#lcm
11 months ago
Alpha Chen 5d7fc5b308
[2023][ruby][8.2]
11 months ago
Alpha Chen 794e3db35a
[2023][ruby][8.1]
11 months ago
Alpha Chen ee07a6130e
[2023][ruby][7.x] refactoring
11 months ago
Alpha Chen 8b21d78e9a
[2023][ruby][6.x] perf
11 months ago
Alpha Chen 8a81e989da
[2023][ruby][7.x] remove unnecessary lexographic sorting
11 months ago
Alpha Chen cc41e835ac
[2023][ruby][7.x] refactoring
11 months ago
Alpha Chen 9b6dd4cc53
[2023][ruby][7.x]
11 months ago
Alpha Chen c87d7854bf
uiua
11 months ago
Alpha Chen b8cd0faa3e
[2023][ruby][6.x]
11 months ago
Alpha Chen 1931b227df
[2023][ruby][5.x] remove more duplicate code
11 months ago
Alpha Chen 5525e8b7e5
[2023][ruby][5.x] remove duplicate code
11 months ago
Alpha Chen 1815ec7b1a
[2023][ruby][5.x]
11 months ago
Alpha Chen eb21642bf4
[2023][ruby][4.2] cleanup
11 months ago
Alpha Chen 0d0cc439b0
[2023][ruby][4.*]
11 months ago
Alpha Chen e6ae06a605
[2023][ruby][3.*] clean up parsing
11 months ago
Alpha Chen 8c72adad6d
[2023][ruby][3.*] remove hack
11 months ago
Alpha Chen fc5821b277
[2023][ruby][3.2]
11 months ago
Alpha Chen 6581325e8f
[2023][ruby][3.1]
11 months ago
Alpha Chen 5e542d90aa
[2023][ruby][2.*]
11 months ago
Alpha Chen 8677078287
[2023][uiua][01.1]
11 months ago
Alpha Chen 37ac8ad85b
[2023][ruby][1.*]
11 months ago
Alpha Chen 5c2f1eb45f
mu
11 months ago
Alpha Chen 6db3326726
[2022][ruby][16.2]
2 years ago
Alpha Chen b32bf143f9
[2022][ruby][16.1]
2 years ago
Alpha Chen 5c4b1cb37e
[2022][ruby][25.1]
2 years ago
Alpha Chen a0a54eefff
[2022][ruby] update Gemfile
2 years ago
Alpha Chen a3bded6091
[2022][ruby][21.x] use z3 for part two
2 years ago
Alpha Chen b62bf80b86
[2022][ruby][23.x]
2 years ago
Alpha Chen 6fb92a59ab
[2022][ruby][21.x]
2 years ago
Alpha Chen 7ced4db4a4
[2022][ruby][20.x]
2 years ago
Alpha Chen ce623e16d1
[2022][ruby][18.x]
2 years ago
Alpha Chen da36d561b8
[2022][ruby][15.x]
2 years ago
Alpha Chen 4129a82f26
[2022][ruby][14.x] refactored
2 years ago
Alpha Chen adff292d00
[2022][ruby][14.x]
2 years ago
Alpha Chen c5846c52e9
[2022][ruby][13.x] refactored
2 years ago
Alpha Chen d246206681
[2022][ruby][13.x]
2 years ago
Alpha Chen c3c34b998c
[2022][ruby][12.x] refactoring
2 years ago
Alpha Chen 220c8853de
[2022][ruby][12.x] backwards
2 years ago
Alpha Chen e12d4d7c63
[2022][ruby][12.x] refactored
2 years ago
Alpha Chen 44936f2906
[2022][ruby][12.x]
2 years ago
Alpha Chen 7e89a0122f
[2022][ruby][11.x] parslet
2 years ago
Alpha Chen 38b2c310a8
[2022][ruby][11.x] clean up parsing
2 years ago
Alpha Chen b8a4ca01b4
[2022][ruby][11.x]
2 years ago
Alpha Chen 762e65126a
[2022][ruby][10.x] refactor
2 years ago
Alpha Chen f871f28d27
[2022][ruby][10.x]
2 years ago
Alpha Chen 88c3c73d2f
[2022][bqn][6.x] refactor
2 years ago
Alpha Chen cdbcffdda5
[2022][ruby][9.x] refactoring
2 years ago
Alpha Chen 3782908dbb
[2022][ruby][9.2]
2 years ago
Alpha Chen caaa3da525
[2022][ruby][9.1]
2 years ago
Alpha Chen ea26a19bc0
[2022][ruby][8.x] refactored
2 years ago
Alpha Chen f67bc7bd27
[2022][ruby][8.x]
2 years ago
Alpha Chen 1fa98d82d6
[2022][ruby][7.x] refactoring
2 years ago
Alpha Chen fac81cb212
[2022][ruby][7.x]
2 years ago
Alpha Chen f8a61202fc
[2022][bqn][5.0] parsing only
2 years ago
Alpha Chen e666ab9344
[2022][bqn][6.x]
2 years ago
Alpha Chen 34ce71c8b6
[2022][ruby][6.x]
2 years ago
Alpha Chen c92d5a4346
[2022][ruby][5.x] refactor
2 years ago
Alpha Chen a8f19091f7
[2022][ruby][5.x]
2 years ago
Alpha Chen e9093934cf
[2022][ruby][4.x] cleanup
2 years ago
Alpha Chen 74d3bef510
[2022][ruby][3.x,4.x]
2 years ago
Alpha Chen ccdfedbbb6
[2022][ruby][3.x]
2 years ago
Alpha Chen e1016ab913
mu
2 years ago
Alpha Chen 049eedabf4
mu
2 years ago
dependabot[bot] b61b268c6e Bump i18n from 0.7.0 to 1.10.0 in /2015/ruby
2 years ago
dependabot[bot] 7b145e68f7 Bump regex from 1.1.0 to 1.5.5 in /2018/rust
2 years ago
dependabot[bot] b8a3ca273b Bump regex from 0.1.44 to 1.5.5 in /2015/rust
2 years ago
dependabot[bot] 31a381eb5d Bump regex from 0.1.80 to 1.5.5 in /2016/rust
2 years ago
dependabot[bot] e8eeea82d4 Bump generic-array from 0.9.0 to 0.9.1 in /2018/rust
2 years ago
Alpha Chen 1fb181e7d2 [2021][ruby][22.x]
3 years ago
Alpha Chen 76266b5bf3 [2021][ruby][21.x]
3 years ago
Alpha Chen a0ff324262 [2021][ruby][20.x]
3 years ago
Alpha Chen 289d452904 [2021][ruby][18.x] small refactoring
3 years ago
Alpha Chen 2196242eea [2021][ruby][18.x]
3 years ago
Alpha Chen 169491113a [2021][ruby][17.x] a bit of refactoring
3 years ago
Alpha Chen 8c5c67ae24 [2021][ruby][17.x]
3 years ago
Alpha Chen 28d2d2ca0c [2021][ruby][16.x] refactor
3 years ago
Alpha Chen f274c589c0 [2021][ruby][16.x]
3 years ago
Alpha Chen cd8a8345b3 [2021][ruby][15.x] use a Set for a minor speedup
3 years ago
Alpha Chen f23af95c02 [2021][ruby][15.x]
3 years ago
Alpha Chen 8e38040c04 [2021][ruby][14.x]
3 years ago
Alpha Chen b7e00339a3 [2021][ruby][13.x] clean up getting the dir index
3 years ago
Alpha Chen 4d7ad2055f [2021][ruby][13.x] refactor
3 years ago
Alpha Chen 963a61b14e [2021][ruby][13.x]
3 years ago
Alpha Chen 8f7c9985a5 [2021][ruby][12.x] tweak
3 years ago
Alpha Chen d40179f8c1 [2021][ruby][12.x]
3 years ago
Alpha Chen d29ae63a86 [2021][ruby][11.x] tweak loop
3 years ago
Alpha Chen 212ef6a381 [2021][ruby][11.x]
3 years ago
Alpha Chen 5145a17ba2 [2021][ruby][10.x] result type?
3 years ago
Alpha Chen aa66d3ed86 [2021][ruby][10.x] refactoring?
3 years ago
Alpha Chen 96072c90c3 [2021][ruby][10.x]
3 years ago
Alpha Chen 1a3d489be8 [2021][ruby][8.2] clean up minizinc solver
3 years ago
Alpha Chen 038495b353 [2021][ruby][9.x]
3 years ago
Alpha Chen 1aeb80d0eb [2021][ruby][8.2] minizinc
3 years ago
Alpha Chen 63778c56b7 [2021][ruby][8.x]
3 years ago
Alpha Chen 0c92ce7de7 [2021][ruby][7.x]
3 years ago
Alpha Chen ff6f142e2b [2021][ruby][6.x]
3 years ago
Alpha Chen 367a35f400 [2021][ruby][4.x..=5.x]
3 years ago
Alpha Chen c6e95f860f [2021][ruby][3.x]
3 years ago
Alpha Chen ea42e4bbc8 [2021][ruby][2.x]
3 years ago
Alpha Chen 86cd480264 [2021][ruby][01.x]
3 years ago
Alpha Chen ce57cc41da [2020][ruby] set ruby version to 3
4 years ago
Alpha Chen 24a173d106 [2020][ruby][20] remove unused code
4 years ago
Alpha Chen bb763d6644 [2020][ruby][25]
4 years ago
Alpha Chen 1a30bb23a1 [2020][ruby][24.x] use axial coordinates
4 years ago
Alpha Chen 319dd0129b [2020][ruby][24.x] refactor
4 years ago
Alpha Chen a9797560cf [2020][ruby][24.x]
4 years ago
Alpha Chen f057404538 [2020][ruby][23.2]
4 years ago
Alpha Chen 45212a6916 [2020][ruby][23.1]
4 years ago
Alpha Chen 5bcd40bef6 [2020][ruby][18] refactor
4 years ago
Alpha Chen 5ecce65bb5 [2020][ruby][18] playing around
4 years ago
Alpha Chen 969f06d4d0 [2020][ruby][16] removed commented out code
4 years ago
Alpha Chen f40f2356d3 [2020][ruby][22.x]
4 years ago
Alpha Chen 2c8cff45b0 [2020][ruby][20.x] refactor
4 years ago
Alpha Chen e1d1092a8b [2020][ruby][20.2]
4 years ago
Alpha Chen 35b1015882 [2020][ruby][21.2]
4 years ago
Alpha Chen 9919db1887 [2020][ruby][21.1]
4 years ago
Alpha Chen 1f6f3b62f6 [2020][ruby][20.1]
4 years ago
Alpha Chen be245847a2 [2020][ruby][19.x]
4 years ago
Alpha Chen 019d9eae12 [2020][ruby][18.x]
4 years ago
Alpha Chen 5949372ee0 [2020][ruby][17.x] refactor
4 years ago
Alpha Chen f668b8256d [2020][ruby][17.x]
4 years ago
Alpha Chen b727f41bd0 [2020][ruby][16.x]
4 years ago
Alpha Chen c9ad797075 [2020][ruby][15.x]
4 years ago
Alpha Chen 900a3e13b2 [2020][ruby][14.x] refactor
4 years ago
Alpha Chen a17445636d [2020][ruby][14.x]
4 years ago
Alpha Chen ffcf15c67e [2020][ruby][13.x]
4 years ago
Alpha Chen ad8fb67c6c [2020][ruby][12.x]
4 years ago
Alpha Chen 47b07ceb34 [2020][ruby][11.x] refactor
4 years ago
Alpha Chen 77256e1bf8 [2020][ruby][11.x]
4 years ago
Alpha Chen 771ad5c052 [2020][ruby][10.x] refactor
4 years ago
Alpha Chen 074fbc54d6 [2020][ruby][10.x] refactor
4 years ago
Alpha Chen 231f971888 [2020][ruby][10.x]
4 years ago
Alpha Chen 7521f3c9d4 [2020][ruby][9.x] refactor
4 years ago
Alpha Chen 7f46f39d8d [2020][ruby][9.x] refactor
4 years ago
Alpha Chen 95b912211d [2020][ruby][9.x]
4 years ago
Alpha Chen 8d30b0713c [2020][ruby][8.x] refactor
4 years ago
Alpha Chen 73ca0bca60 [2020][ruby][8.x]
4 years ago
Alpha Chen 7a2dee465d [2020][ruby][7.x]
4 years ago
Alpha Chen e49d6c4bef [2020][ruby][6.x] refactor
4 years ago
Alpha Chen 5fa382329f [2020] move input files to root dir
4 years ago
Alpha Chen f5660e8938 [2020][ruby][6.x]
4 years ago
Alpha Chen cccdf1e45e [2020][ruby][5.x] too clever
4 years ago
Alpha Chen a369ffb751 [2020][ruby][5.x]
4 years ago
Alpha Chen eea91b1ed5 [2020][ruby][4.x]
4 years ago
Alpha Chen 3601c50b22 [2020][ruby][3.x] this is better
4 years ago
Alpha Chen ea6d3fed3b [2020][ruby][3.x] too clever
4 years ago
Alpha Chen 4dd5e8d920 [2020][ruby][3.x]
4 years ago
Alpha Chen a9f664f3f3 [2020][ruby][2.x]
4 years ago
Alpha Chen 25d32aa998 [2020][ruby][1-2]
4 years ago
Alpha Chen 61afcde94e [2019][ruby][14.1]
5 years ago
Alpha Chen f0c024d28f [2019][ruby][14.1]
5 years ago
Alpha Chen 6fa37294de [2019][ruby][13.x]
5 years ago
Alpha Chen 850d181bdc [2019][ruby][12.2]
5 years ago
Alpha Chen 85cdc38184 [2019][ruby][12.1]
5 years ago
Alpha Chen 975834ce55 [2019][ruby][11.x] use trig
5 years ago
Alpha Chen 10ace7d99a [2019][ruby][11.x] use sum instead of a block
5 years ago
Alpha Chen cb2379477b [2019][ruby][11.x]
5 years ago
Alpha Chen df20ad0139 [2019][ruby] make computer.rb runnable
5 years ago
Alpha Chen 7f751bdfee [2019][ruby][10.x]
5 years ago
Alpha Chen cfef580250 [2019][ruby] extract Parameter creation
5 years ago
Alpha Chen dc76d7df9d [2019][ruby] refactor computer
5 years ago
Alpha Chen 43356b2e0c [2019][ruby][9.x]
5 years ago
Alpha Chen 5beb8a1276 [2019][ruby][8.x]
5 years ago
Alpha Chen 33786055b9 [2019][ruby] explain the 3
5 years ago
Alpha Chen a577d0b72c [2019][ruby] align opcodes
5 years ago
Alpha Chen 2329172f86 [2019][ruby] simplify getting the parameter mode
5 years ago
Alpha Chen a28f8de0b2 [2019][ruby][7.b]
5 years ago
Alpha Chen 631b2642b4 [2019][ruby][7.a]
5 years ago
Alpha Chen 2c8fca3bd5 [2019][ruby] add rakefile
5 years ago
Alpha Chen d0feb92fff [2019][ruby] more sorbet
5 years ago
Alpha Chen e26311a480 [2019][ruby] typecheck computer
5 years ago
Alpha Chen 09fbb72f66 init sorbet
5 years ago
Alpha Chen 3e1c3c2b7b [2019][ruby][6.x]
5 years ago
Alpha Chen 897cc6c162 [2019][ruby][5.x] refactor computer for day 5
5 years ago
Alpha Chen 475ad99996 [2019][ruby][2.x] refactor a computer class out of day 2
5 years ago
Alpha Chen 4179982a82 [2019][ruby][5.x]
5 years ago
Alpha Chen 67a85cad42 pry
5 years ago
Alpha Chen a3d275c27d [2019][ruby][4.x]
5 years ago
Alpha Chen 4bb34be4a6 [2019][ruby][3.b]
5 years ago
Alpha Chen 2072187d16 [2019][ruby][3.a]
5 years ago
Alpha Chen a3164c03be [2019][ruby][2.x]
5 years ago
Alpha Chen b15f5ee2a1 [2019][ruby][1.2]
5 years ago
Alpha Chen 039d772758 [2018][rust] clippy
6 years ago
Alpha Chen fb264f5cd7 [2018][rust][15] fmt
6 years ago
Alpha Chen b4268b951a [2018][ruby][19.1]
6 years ago
Alpha Chen 7b06cf7090 [2018][ruby][18.2]
6 years ago
Alpha Chen e008591ae7 [2018][ruby][18.1]
6 years ago
Alpha Chen f5f071aef9 [2018][ruby][17.2]
6 years ago
Alpha Chen c8bb7afcbe [2018][ruby][17.1] fix simulation
6 years ago
Alpha Chen d9508f683d [2018][ruby][17.1] count the water
6 years ago
Alpha Chen ebbe80bde3 [2018][ruby][17.1] settling and overflow
6 years ago
Alpha Chen 0004f96f22 [2018][ruby][17.1] water moves down
6 years ago
Alpha Chen feb1b7b125 [2018][ruby][17.1] store using a hash
6 years ago
Alpha Chen e00ad687ce [2018][ruby][17.1] parsing
6 years ago
Alpha Chen 2b303f545b [2018][ruby][16.2]
6 years ago
Alpha Chen 169c3948e2 [2018][ruby][16.1] reading error
6 years ago
Alpha Chen bd8e6fbfb0 [2018][ruby][16.1]
6 years ago
Alpha Chen 765df90cbc [2018][ruby][15.2]
6 years ago
Alpha Chen c0240268c1 [2018][ruby][15.2] make attack customizable
6 years ago
Alpha Chen cbc8dac1c9 [2018][ruby][15.1]
6 years ago
Alpha Chen df0c1df525 [2018][ruby][15.1] movement
6 years ago
Alpha Chen 13e41a2d43 [2018][ruby][15.1] parse grid
6 years ago
Alpha Chen fce896c7a1 [2018][rust][15.1] combat
6 years ago
Alpha Chen 6ea464218d [2018][rust][15.1] Unit::next_step
6 years ago
Alpha Chen a736bc9945 [2018][rust][15.1] reorganize tests
6 years ago
Alpha Chen 3eb289c5bd [2018][rust][15.1] s/next_step/chosen/
6 years ago
Alpha Chen 6db726ac8c [2018][rust][15.1] Unit::next_step
6 years ago
Alpha Chen 6426ce898e [2018][rust][15.1] Unit::reachable
6 years ago
Alpha Chen cbe51dc6e1 [2018][rust][15.1] should probably start committing...
6 years ago
Alpha Chen c911c4d72a [2018][rust][14.2]
6 years ago
Alpha Chen ad57cc604e [2018][rust][13.1]
6 years ago
Alpha Chen 1a0318127f [2018][rust][12] fmt
6 years ago
Alpha Chen a09a82c05d [2018][rust][12.1]
6 years ago
Alpha Chen caa0ec1553 [2018][ruby][13.2] move the end condition to the right place
6 years ago
Alpha Chen c470c4ed9d [2018][ruby][13] leaderboard
6 years ago
Alpha Chen 96dfd74aed [2018][rust] rustfmt
6 years ago
Alpha Chen 09cbeea533 [2018][ruby][11.2]
6 years ago
Alpha Chen df293cb0bb [2018][ruby][11.1]
6 years ago
Alpha Chen 28f8fa5d24 [2018][ruby][10.2]
6 years ago
Alpha Chen ac044c28d0 [2018][ruby][10.1]
6 years ago
Alpha Chen 91df0a6eb3 [2018][rust][09] re-enable tests
6 years ago
Alpha Chen af2d2469fa [2018][rust][09]
6 years ago
Alpha Chen 337fa5835b [2018][ruby][09.2]
6 years ago
Alpha Chen 4576ad656c [2018][rust][07] make a main! macro
6 years ago
Alpha Chen 958353d539 [2018][ruby][09.1] speedrun
6 years ago
Alpha Chen cb3a816c79 [2018][rust][05.2]
6 years ago
Alpha Chen a1d43b9a70 [2018][rust][05.1]
6 years ago
Alpha Chen 94700534c0 [2018][rust][07] remove broken tests
6 years ago
Alpha Chen 4839a9e6de [2018][rust][07] use an iterator!
6 years ago
Alpha Chen f778e68558 [2018][rust][07] clippy
6 years ago
Alpha Chen 8799d3e75d [2018][ruby][08]
6 years ago
Alpha Chen 8aa06e54fd [2018][rust][07.2]
6 years ago
Alpha Chen 6b086acd5b [2018][ruby][08] speedrun
6 years ago
Alpha Chen c807f716da [2018][rust][07] refactoring
6 years ago
Alpha Chen 7e3f8f8b10 [2018][rust][07] refactor
6 years ago
Alpha Chen 7d0de7aa2b [2018][rust][07.1]
6 years ago
Alpha Chen ea3cc23c7c [2018][rust] cargo fmt
6 years ago
Alpha Chen 8e30e3155e [2018][rust][06.1]
6 years ago
Alpha Chen 5995c5d54d [2018][ruby][06.1]
6 years ago
Alpha Chen b69bfd2821 [2018][rust][04] cargo fmt
6 years ago
Alpha Chen 230a368660 [2018][rust][06.0]
6 years ago
Alpha Chen 27577d0647 [2018][rust][04]
6 years ago
Alpha Chen a122d9e993 [2018][ruby][06.0]
6 years ago
Alpha Chen 0b6e22c056 [2018][rust][04] reorganize parsing code
6 years ago
Alpha Chen 0a35d1e28c [2018][rust][04] parsing!
6 years ago
Alpha Chen 80877a6978 [2018][rust][1] move from lib to bin
6 years ago
Alpha Chen 70fcbd804a [2018][rust][2] move from lib to bin
6 years ago
Alpha Chen 15953efb0f [2018][ruby][5.x]
6 years ago
Alpha Chen df42ca7275 [2018][ruby][4.x] itself
6 years ago
Alpha Chen 53ce2c6898 [2018][ruby][4.x] golfing
6 years ago
Alpha Chen 6e8f39dbd2 [2018][ruby][4.x] refactor, add part one back
6 years ago
Alpha Chen 57655c6a21 [2018][ruby][4.x] speedrun
6 years ago
Alpha Chen ba3c219b7f [2018][rust][3.1] cargo clippy
6 years ago
Alpha Chen 0443116fde [2018][rust][3.1] cargo fmt
6 years ago
Alpha Chen 71fb3478c3 [2018][rust][3.1]
6 years ago
Alpha Chen cf72591813 [2018][rust][3.0]
6 years ago
Alpha Chen af6a02c6a2 [2018][rust][2.0]
6 years ago
Alpha Chen a0ac96a8ea [2018][ruby][3.1]
6 years ago
Alpha Chen 971f8c3c71 [2018][ruby][3.0]
6 years ago
Alpha Chen 4919c00a1b [2018][rust][1] move day 1 into a module
6 years ago
Alpha Chen 7eae195b2a [2018][rust][1.x] refactor
6 years ago
Alpha Chen 52cbaef2b1 [2018][rust][1.x] clippy
6 years ago
Alpha Chen 7ececd84fc [2018][rust][1.1]
6 years ago
Alpha Chen bf79c7262e [2018][rust][1.0]
6 years ago
Alpha Chen d8651623f8 [2018][ruby][2.x]
6 years ago
Alpha Chen ca701f2f9b [2018][ruby][1.x]
6 years ago
Alpha Chen 8119cc4b6a Add a Gemfile
6 years ago
Alpha Chen f1fcda6e4b [2017][ruby][19.x] speedrun
7 years ago
Alpha Chen 7b82b90b4c [2017][rust] delete .rustfmt temp file
7 years ago
Alpha Chen e596f64a69 [2017][rust][16.1]
7 years ago
Alpha Chen b22b3a3481 [2017][ruby][17.x] speedrun
7 years ago
Alpha Chen 71575ca08a [2017][rust][16.0]
7 years ago
Alpha Chen bb8f1c5da3 [2017][rust][6.x] rustfmt
7 years ago
Alpha Chen 2fb5e076e0 [2017][ruby][16.x] use StringScanner better
7 years ago
Alpha Chen 608047c8bf [2017][ruby][16.x]
7 years ago
Alpha Chen ef8fb4a6b7 [2017][rust][6.x]
7 years ago
Alpha Chen abb3a82b4c [2017][rust][15.x] cleanup
7 years ago
Alpha Chen 4d7d0fc602 [2017][rust] fmt code
7 years ago
Alpha Chen d1924f5742 [2017][rust][15.x] extract, clean up code
7 years ago
Alpha Chen fd07f77699 [2017][ru(by|st)][15.x] speedrun
7 years ago
Alpha Chen 857b9c34be [2017][ruby][14.x] speedrun
7 years ago
Alpha Chen 91cfc13777 [2017][ruby][13.x] refactored
7 years ago
Alpha Chen fc1e8e4c33 [2017][ruby][13.x] slowrun
7 years ago
Alpha Chen cb7d65b004 [2017][ruby][12.x] cleaned up a bit
7 years ago
Alpha Chen 6901d71abb [2017][rust][5.x]
7 years ago
Alpha Chen 27051203b9 [2017][ruby][12.x] speedrun
7 years ago
Alpha Chen 614ff8b722 [2017][rust] clippy
7 years ago
Alpha Chen 6cff27d507 [2017][ruby][11.x] speedrun
7 years ago
Alpha Chen 8872c7cbc7 [2017][rust][4.x]
7 years ago
Alpha Chen fea6adcf63 [2017][rust][3.x]
7 years ago
Alpha Chen e39e95e20a [2017][ruby][10.x]
7 years ago
Alpha Chen 9c21ad5341 [2017][ruby][9.x]
7 years ago
Alpha Chen 5b874c234e [2017][ruby][6.x] refactor
7 years ago
Alpha Chen d447e45d11 [2017][ruby][7.x] move back to ARGF
7 years ago
Alpha Chen 1516d44017 [2017][ruby][8.x] speedrun
7 years ago
Alpha Chen 982872a2d5 [2017][ruby][7.x] gross
7 years ago
Alpha Chen 40ee1eca57 [2017][ruby][6.x] speedrun
7 years ago
Alpha Chen 3cd71f81a2 [2017][ruby][5.x] speedrun
7 years ago
Alpha Chen 9ff29145e6 [2017][ruby][3.x] refactor spiral enumerator
7 years ago
Alpha Chen be421a9943 [2017][ruby][4.1]
7 years ago
Alpha Chen 753be41e95 [2017][ruby][4.0]
7 years ago
Alpha Chen 97bca3fb13 [2017][ruby][3.1]
7 years ago
Alpha Chen 14063c8ad4 [2017][ruby][3.0]
7 years ago
Alpha Chen 4c0b47a24e [2017][ruby][3.x] speedrun
7 years ago
Alpha Chen 86a3a036a0 [2017][rust][2.1]
7 years ago
Alpha Chen 8d26a5df6a [2017][rust][2.x]
7 years ago
Alpha Chen 7d36ddd8fe [2017][rust][2.0]
7 years ago
Alpha Chen 68c7b41fc6 [2017][rust][1.x] remove unnecessary take
7 years ago
Alpha Chen e84427d454 [2017][rust][1.0]
7 years ago
Alpha Chen 6acc2899be [2017][rust][1.1]
7 years ago
Alpha Chen 26ac38d39f [2017][rust][1.0] refactor
7 years ago
Alpha Chen c5365a4532 [2017][rust][1.0]
7 years ago
Alpha Chen 94ff845701 [2017][ruby][2.x]
7 years ago
Alpha Chen d1fa40d64c [2017][ruby][1.x]
7 years ago
Alpha Chen 94ee2fe1ff [2016][rust][11.0] parse facility
8 years ago
Alpha Chen c785492970 [2016][rust][11.0] Floor.is_safe
8 years ago
Alpha Chen 148f22eccd [2016][rust][11.0] Better errors
8 years ago
Alpha Chen d184b50122 [2016][rust][11.0] Parse floors
8 years ago
Alpha Chen 94267f9c3b [2016][rust][23.1] refactorings
8 years ago
Alpha Chen c493689f5d [2016][rust][23.1] clippy
8 years ago
Alpha Chen 5586d6eff1 [2016][rust][23.1] more canonical way of getting index from Register
8 years ago
Alpha Chen 60b7d8835d [2016][rust][23.1] Fix Instruction Display (thanks, @zenspider!)
8 years ago
Alpha Chen 275e6b5f21 [2016][rust][23.1] Use an array instead of a Vec
8 years ago
Alpha Chen 8438d1c6ba [2016][rust][23.1]
8 years ago
Alpha Chen ce6c9cd335 [2016][rust][23.0]
8 years ago
Alpha Chen 6c4bb78c98 [2016][rust][12.1] Use a vec instead of hashmap for moar speed
8 years ago
Alpha Chen 634179bac5 [2016][rust][12.1] Break out Assembunny into a module
8 years ago
Alpha Chen 1f51aca81c [2016][rust][12.1] Just use a HashMap
8 years ago
Alpha Chen 020f34f3e5 [2016][rust][12.0] Screw immutability
8 years ago
Alpha Chen 01cfb8261c [2016][rust][12.0] Decrement
8 years ago
Alpha Chen 2585163655 [2016][rust][12.0] Clone/Copy
8 years ago
Alpha Chen b457ce5027 [2016][rust][12.0] Increment
8 years ago
Alpha Chen 499d8d13e5 [2016][rust][12.0] Copy
8 years ago
Alpha Chen e1128f8bca [2016][rust][9.0] base case
8 years ago
Alpha Chen 143f149736 [2016][rust] clippy
8 years ago
Alpha Chen af660a1137 [2016][ruby][25.0]
8 years ago
Alpha Chen ffaed85e78 [2016][ruby][24.1]
8 years ago
Alpha Chen ce59553d97 [2016][ruby][24.0] remove infinte looping
8 years ago
Alpha Chen 2141980e12 [2016][ruby][24.0] works on sample, but too slow
8 years ago
Alpha Chen 570745e381 [2016][ruby][23.0]
8 years ago
Alpha Chen b67e838c4e [2016][ruby][22.0]
8 years ago
Alpha Chen f95ba52ef9 [2016][ruby][21.1]
8 years ago
Alpha Chen 999f1e2f19 [2016][ruby][21.0]
8 years ago
Alpha Chen 54a44cd143 [2016][ruby][20.x]
8 years ago
Alpha Chen 3c99f5cf03 [2016][ruby][19.1]
8 years ago
Alpha Chen 592d8b2384 [2016][ruby][19.0]
8 years ago
Alpha Chen f3bd338b7d [2016][ruby][18.1]
8 years ago
Alpha Chen 2e1eba56a5 [2016][ruby][18.0] solution
8 years ago
Alpha Chen b4335dda72 [2016][ruby][18.0] Row#next
8 years ago
Alpha Chen ba95efbf88 [2016][ruby][18.0] Row#initialize
8 years ago
Alpha Chen 56ee9d38ac [2016][ruby][17.1]
8 years ago
Alpha Chen 2a88514e06 [2016][ruby][17.0]
8 years ago
Alpha Chen 9530c0c866 [2016][ruby][16.1]
8 years ago
Alpha Chen 72d6fa5be9 [2016][ruby][16.0]
8 years ago
Alpha Chen 2689553af0 [2016][ruby][15.1]
8 years ago
Alpha Chen face2d85f8 [2016][ruby][15.0]
8 years ago
Alpha Chen e8da699cbf [2016][ruby][14.1]
8 years ago
Alpha Chen 0a29864ab9 [2016][ruby][14.0]
8 years ago
Alpha Chen d81c34cc54 [2016][ruby][13.1]
8 years ago
Alpha Chen 7f84a1a0a9 [2016][ruby][13.0] refactor
8 years ago
Alpha Chen 3b5081797f [2016][ruby][13.0] solution
8 years ago
Alpha Chen 29cf85dbfd [2016][ruby][13.0] maze
8 years ago
Alpha Chen e9910aa0d8 [2016][ruby][12.1]
8 years ago
Alpha Chen 39f73f6935 [2016][ruby][12.0]
8 years ago
Alpha Chen 6aed853bd4 [2016][rust][10.0] create bots that can take values
8 years ago
Alpha Chen dba149888b [2016][rust][10.0] start parsing bots
8 years ago
Alpha Chen daa060d799 [2016][ruby][11.1] optimizations
8 years ago
Alpha Chen e8bd4f505e [2016][ruby][11.0] solution!
8 years ago
Alpha Chen 3c1f21c490 [2016][ruby][11.0] elevators can hold two items
8 years ago
Alpha Chen 241bb17304 [2016][ruby][11.0] check for radiated microchips
8 years ago
Alpha Chen 0ff8f7b122 [2016][ruby][11.0] generate next states
8 years ago
Alpha Chen 3b132cc220 [2016][ruby][11.0] implement equality on states
8 years ago
Alpha Chen b7fb46656a [2016][ruby][11.0] make a Floor object
8 years ago
Alpha Chen eeb4f8366c [2016][ruby][11.0] read state from input
8 years ago
Alpha Chen a78bb9d70a [2016][rust][8.x]
8 years ago
Alpha Chen fd2ceadf02 [2016][ruby][10.1]
8 years ago
Alpha Chen f98e9ebacf [2016][ruby][10.0]
8 years ago
Alpha Chen 5d8533ded8 [2016][ruby][9.1]
8 years ago
Alpha Chen 3cd8d40734 [2016][ruby][9.0]
8 years ago
Alpha Chen 5fb35f9dd9 [2016][ruby][8.x]
8 years ago
Alpha Chen 7970c23d88 [2016][rust][7.1]
8 years ago
Alpha Chen 053b51107d [2016][rust][7.0]
8 years ago
Alpha Chen e695938abf [2016][ruby][7.1]
8 years ago
Alpha Chen b443ba5312 [2016][ruby][7.0]
8 years ago
Alpha Chen 9b626fae46 [2016][rust][6.0]
8 years ago
Alpha Chen 605591ffdb [2016][rust][5.1]
8 years ago
Alpha Chen 92a1c0f285 [2016][rust][6.0]
8 years ago
Alpha Chen 60c6352c46 [2016][ruby][6.x] speedcoding
8 years ago
Alpha Chen b501d324af [2016][ruby][5.x] shameless green
8 years ago
Alpha Chen 9fdfa3d687 [2016][rust][4.1]
8 years ago
Alpha Chen bc6d0e2396 rust clippy
8 years ago
Alpha Chen 9d39b06eb7 [2016][rust][4.0]
8 years ago
Alpha Chen 94f5dfb200 [2016][rust][3.1]
8 years ago
Alpha Chen d93aff516a [2016][rust][3.0]
8 years ago
Alpha Chen 2b7b747ca5 [2016][ruby][4.1]
8 years ago
Alpha Chen 0bbc89d1a1 [2016][ruby][4.0]
8 years ago
Alpha Chen a9c33e4b4a [2016][ruby][3]
8 years ago
Alpha Chen 1abcc5d723 [2016][rust][2.1]
8 years ago
Alpha Chen b63381ffa8 [2016][rust][2.0]
8 years ago
Alpha Chen 452531e4bc [2016][rust] organize files
8 years ago
Alpha Chen 4aaa3f75a5 [2016][ruby][2.1]
8 years ago
Alpha Chen 53f60cb565 [2016][ruby][2.0]
8 years ago
Alpha Chen f15f6bcec0 [2016][rust][1.1]
8 years ago
Alpha Chen b5e5566d5e [2016][rust][1.0]
8 years ago
Alpha Chen ddbface9e5 [2016][ruby][1] refactoring
8 years ago
Alpha Chen b77d565b97 [2016][ruby][1]
8 years ago
Alpha Chen 7400e16789 move 2015 stuff into its own dir
8 years ago

1
.gitignore vendored

@ -0,0 +1 @@
**/rust/target

3
.gitmodules vendored

@ -0,0 +1,3 @@
[submodule "2022/bqn/lib"]
path = 2022/bqn/lib
url = https://github.com/mlochbaum/bqn-libs.git

@ -1,17 +1,17 @@
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
activesupport (4.2.5) activesupport (7.0.3)
i18n (~> 0.7) concurrent-ruby (~> 1.0, >= 1.0.2)
json (~> 1.7, >= 1.7.7) i18n (>= 1.6, < 2)
minitest (~> 5.1) minitest (>= 5.1)
thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 2.0)
tzinfo (~> 1.1)
awesome_print (1.6.1) awesome_print (1.6.1)
coderay (1.1.0) coderay (1.1.0)
colorize (0.7.7) colorize (0.7.7)
i18n (0.7.0) concurrent-ruby (1.1.10)
json (1.8.3) i18n (1.10.0)
concurrent-ruby (~> 1.0)
letters (0.4.1) letters (0.4.1)
activesupport activesupport
awesome_print awesome_print
@ -24,9 +24,8 @@ GEM
method_source (~> 0.8.1) method_source (~> 0.8.1)
slop (~> 3.4) slop (~> 3.4)
slop (3.6.0) slop (3.6.0)
thread_safe (0.3.5) tzinfo (2.0.4)
tzinfo (1.2.2) concurrent-ruby (~> 1.0)
thread_safe (~> 0.1)
xml-simple (1.1.5) xml-simple (1.1.5)
PLATFORMS PLATFORMS

145
2015/rust/Cargo.lock generated

@ -0,0 +1,145 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "advapi32-sys"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "307c92332867e586720c0222ee9d890bbe8431711efed8a1b06bc5b40fc66bd7"
dependencies = [
"winapi",
"winapi-build",
]
[[package]]
name = "advent_of_code"
version = "0.1.0"
dependencies = [
"permutohedron",
"regex",
"rust-crypto",
]
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "gcc"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca10e3e1f1c8278047da19b94dc17c4397861150d5fbcea052eedb1d9847d356"
dependencies = [
"advapi32-sys",
"winapi",
]
[[package]]
name = "kernel32-sys"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5b5e7edf375e6d26243bde172f1d5ed1446f4a766fc9b7006e1fd27258243f1"
dependencies = [
"winapi",
"winapi-build",
]
[[package]]
name = "libc"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e32a70cf75e5846d53a673923498228bbec6a8624708a9ea5645f075d6276122"
[[package]]
name = "libc"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10569e57695cc2c91ca4214357907649c9e242dc822c9ae623d0e0b0d68aa4d9"
[[package]]
name = "memchr"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "permutohedron"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abf78a1e8b52782de92fc4f361362a62bcf5fd5718b5432b48cb381485740b83"
[[package]]
name = "rand"
version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5eee40bdf3d293e1648490ab47e5471d9ab3e455e6b0bd48e558c454be4a015e"
dependencies = [
"advapi32-sys",
"libc 0.2.4",
"winapi",
]
[[package]]
name = "regex"
version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.6.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
[[package]]
name = "rust-crypto"
version = "0.2.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8672a8eb8db93d0938972e391159ba66912b415285ee5cf0ebe732df9e53b70"
dependencies = [
"gcc",
"libc 0.1.12",
"rand",
"rustc-serialize",
"time",
]
[[package]]
name = "rustc-serialize"
version = "0.3.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a48546a64cae47d06885e9bccadb99d0547d877a94c5167fa451ea33a484456"
[[package]]
name = "time"
version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c4aeaa1c95974f5763c3a5ac0db95a19793589bcea5d22e161b5587e3aad029"
dependencies = [
"kernel32-sys",
"libc 0.2.4",
"winapi",
]
[[package]]
name = "winapi"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc3583688b861fcd83c2823d37cf2cd2446c233dd7ba3f97884d1a7302817537"
[[package]]
name = "winapi-build"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"

@ -4,6 +4,6 @@ version = "0.1.0"
authors = ["Alpha Chen <alpha.chen@gmail.com>"] authors = ["Alpha Chen <alpha.chen@gmail.com>"]
[dependencies] [dependencies]
regex = "0.1" regex = "1.5"
rust-crypto = "^0.2" rust-crypto = "^0.2"
permutohedron = "0.2" permutohedron = "0.2"

@ -0,0 +1 @@
R4, R3, L3, L2, L1, R1, L1, R2, R3, L5, L5, R4, L4, R2, R4, L3, R3, L3, R3, R4, R2, L1, R2, L3, L2, L1, R3, R5, L1, L4, R2, L4, R3, R1, R2, L5, R2, L189, R5, L5, R52, R3, L1, R4, R5, R1, R4, L1, L3, R2, L2, L3, R4, R3, L2, L5, R4, R5, L2, R2, L1, L3, R3, L4, R4, R5, L1, L1, R3, L5, L2, R76, R2, R2, L1, L3, R189, L3, L4, L1, L3, R5, R4, L1, R1, L1, L1, R2, L4, R2, L5, L5, L5, R2, L4, L5, R4, R4, R5, L5, R3, L1, L3, L1, L1, L3, L4, R5, L3, R5, R3, R3, L5, L5, R3, R4, L3, R3, R1, R3, R2, R2, L1, R1, L3, L3, L3, L1, R2, L1, R4, R4, L1, L1, R3, R3, R4, R1, L5, L2, R2, R3, R2, L3, R4, L5, R1, R4, R5, R4, L4, R1, L3, R1, R3, L2, L3, R1, L2, R3, L3, L1, L3, R4, L4, L5, R3, R5, R4, R1, L2, R3, R5, L5, L4, L1, L1

@ -0,0 +1,5 @@
RDRRDLRRUDRUUUULDDRDUULLDUULDURDDUDRULDLUDDRLRDUDDURRRRURDURLLRDRUUULDLLLURDRLLULLUULULLLDLLLRRURRLRDUULRURRUDRRDRLURLRURLLULRUURRUURDDLDRDLDLLUDUULLLUUUUDULLDRRUURLDURDDDDDRLLRRURDLUDRRUUDLRRLLRDURDUDDDLRDDRDLRULLUULRULRLLULDDRURUUDLDDULDRLLURDDUDDUDRDUDLDRRRDURRLDRDRLDLLDUDDDULULRRULRLLURDRRDDUUUUUULRUDLRRDURDLRDLUDLDURUDDUUURUDLUUULDLRDURDLDUUDLDDDURUUDUUDRLRDULLDUULUDRUDRLRRRDLLDRUDULRRUDDURLDRURRLLRRRDRLLDLULULRRUURRURLLUDRRLRULURLDDDDDURUDRRRRULLUUDLDDLUUL
ULURUDLULDULDLLDDLLLDRRLLUDRRDRDUDURUDLRRRRUDRDDURLRRULLDLURLDULLUDDLUDURDUURRRRLDLRLDDULLRURLULLDDRUDLRRRLDRRRDLDRLLDDRRDDLUUDRUDDLULRURLDURRLLDLRUDLLRRUULUDRLLLRLDULURRRRRDDUURDRRUUDULRUULDDULRLUDLUDDULLRLRDDLRLLURRRULDLRRRUURRLDDRDLRDLRRDRDLDRDUDRDURUUDRLRRULRDLLDLLRRRDRLDRLRLRLLLURURDULUUDDRLLDDDRURRURLRDDULLRURUDRRDRLRRRLDLRLRULDRLUURRUUULRLDLLURLLLDLLLDRRDULRURRRRLUDLLRRUDLRUDRURDRRDLUUURRDLRLRUUUDURDLUDURRUUDURLUDDDULLDRDLLDDDRLDDDRLDLDDDDUDUUDURUUDULRDDLULDRDRLURLUDRDLUULLULRLULRDDRULDUDDURUURULUDLUURLURU
URLURDDRLLURRRLDLDLUDUURDRUDLLLRRDLUUULRRLURRRLUDUDLRLDDRUDLRRRULUDUDLLLULULLLRUDULDDDLLLRRRLRURDULUDDDULDLULURRRDLURDLRLLDUDRUDURDRRURULDRDUDLLRDDDUDDURLUULLULRDRRLDDLDURLRRRLDRDLDULRULRRRLRLLDULRDLURLRUUDURRUUDLLUDRUDLRLDUUDLURRRDDUUDUDRLDLDDRURDDLLDDRDLRLRDLLLUDLUUDRLRLRDDRDLRDLLUULLLLUULLDLLDLRDLRLRRLUUDLLRLRUDRURULRLRLULUDRLLUDDUDDULRLDDRUUUURULDRRULLLDUURULUDRLLURLRRLDLRRLDDRRRDUDDUDLDDLULUDDUURDLLLRLDLRDRUUUUUDDDLDRDDRRRLRURRRRDURDRURUDLURRURDRLRUUDDLDRRULLDURDRLRRDURURUULRDUDLDRDDLULULRDRRUDDRLLRLULRLLUUDRDUUDDUDLRUUDLLUULLRUULUDDLURRRLLDRLRRLLRULLDUULURLLLLUUULDR
LDUURULLRLDRRUUDUUUURUUUDDDURRDDLRDLLRDDRULDDUURUDDURLLUDRDUDRDULDRRRLULUDRULLLLDRLLDRDLDLLRURULUDDDDURDDDRLLUDLDRULRDLDUDDDUUDLLRLLLDLRLRLRRUDDULDDDUDLDDLUDDULDLLLLULLLLDDURDDURRRDDRLRLLUDLLUDDDUDURUDRLRDRULULDDRULDLULULLRUULRLDULUURRDRDRRDLDDDRRLUULDLUDRDDUDLRURULLDDURLDDRULUDLDDDRDRLLRDLLUURRRURDRLRURLDDLURDRURDDURLLRLRUDUUDLDUDURRDDURDRDDUDDDUDUURURDDLLRUUDDRRDULDDLLDLRULUULRUUDLLDRLULDULDDUDLULRULDRLLDUULDDDLRLLRLULDDULDDRRRLDRRLURULRDDRDLRRDUDDRDRRRRUDUDLLRRDRRURRUURDRULDDUDURLUDDURDUDRDUULLDRURUURURDRRLDDLDLUURLULRUDURDRUUURRURRDRUDRUURDURLRULULLLULDLLDLRRLDRDLUULUDDDLRDRLRLDRUDUDRLLRL
LURLUURLURDUUDRUDLDLLURRRDLDRRRULDDRRDRDUUDRUDURDDDURLUDDLULUULRRLLRULUDRDDRRRLDURDUDDURDDDLRLDDLULLDRDDLUUDUURRRLULRUURRRRLLULDUDRDUURRRURRDRDUDUDLUDULLDLDDRLUDRURDULURLURRLLURLLLRLUURLRUDLUDDRLURRUULULRLURRURUDURDLDLDDUDDRDLLRLLRRULDDRUDURUDDDUDLLRDLRUDULLLRRRUURUDUUULLRDUDRURUDULLDLLUUUDRULRLLRRDDDDUDULDRDRLLDDLLDDDURRUDURLDLRDRUURDDURLRDRURLRRLLRLULDRRLRUDURDUURRLUUULUDDDLRLULRDRLLURRRDLURDUUDRRRLUURRLLUDLUDLUULLRRDLLRDDRURRUURLDDLRLRLRUDLDLRLRDRRDLLLRDLRDUDLLDDDRD

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,598 @@
eqvmfqnf
jvkezmqt
zcssqwlw
cuacncgg
ikmpzpoh
dzpzobdl
qlsnuhuq
fwqnoklz
cibgplfq
ktsqfcrv
vcknjnnx
upaiaprz
bpqmolbq
dflhnpnk
heqjflch
cmewgodc
aaorgxkn
plekphpw
fcofrbnm
bmnrygtb
rqsqsqio
rnlntwxa
cxjqqfyl
jxjnxchb
kfgutxmi
cbciszxd
irakoonu
pcgfnycg
fgeivexo
ujxdaehw
ejkvrych
nhlklbgr
etjuhgry
mkgkmykm
teuhrfto
juqfslbn
tbwxabzi
ngdnwsey
amcibkyo
xlvxwqpj
vdbzuvkh
gkagbzep
kqxzkeip
bxccztho
vqrywqlc
jbzhecjc
ozkulgxo
uiwbofuk
vfwhdnao
tycxucwd
jvhuljfs
xxhqhruc
upnndiiz
andxywil
lowofbqv
iroqzrry
nmkkqqjb
daijrfna
jmcstxlq
jdefvuaa
nkbmowfi
agotazda
kufoymrn
yijwfjyi
hyqvaouj
soueuhln
oomsbkmh
buadtssf
rvgpeeza
hjiymcmd
ebgivdap
xzieipbg
ttpudwqt
hndwuncw
wqypfkvf
jqxuaipm
fzwlgxxq
ddshbtya
ardlcgyi
soznvuyw
vyizuolp
ckfaxyvs
nbsjkibi
lsrkrdzp
oqoffwxa
bdugjlsm
rtcsylfd
fezoiliq
zwpaphcb
sdlouhyf
cfejwvls
xehddxku
edhrtdcv
ehouagvy
hoyxjfsj
quggpnpx
muqbijbe
rcnniddd
kzfeiaui
sywienef
xpxftuvq
dtbhnslt
mpcpkmfa
wysutlci
fmqomicz
mhshprxr
uxwfcftt
ehbonsrl
pjobilxx
chiebfox
lqfxgyqg
vupcjatm
wfljafhc
iygojeny
gqxmgneu
nhlwllak
xnkqpulv
awijbvef
pbcrrwqo
dobsejtb
dqdoapkc
hngrxdtx
dodsxysb
bmtyelak
cctuwwvt
rytlmoyr
fqnbuxdi
irrqladc
wnvtsneg
ugqqdmlj
nljnjiod
knidxxzh
dfymoqgt
fwgtjafh
fpdioivz
tqbewmti
mcqtbbee
pivfrpou
tdyguuos
eldmvvmi
oaiqnizz
fyqpxgwa
lzcxsazq
zhsoljwz
qnzafmjl
oopnnndl
cozehoor
bspuwzxm
ubtunnep
smdhpvxr
nsvxiwje
mmqcklsm
hhxaciaq
zzgoxhws
fvntouun
skxzmzyg
znptwuqu
aknwvojo
wftmjrsf
gahrordj
oegnykag
lvlqswph
qsowvoem
sjspasfp
ygjohzfd
jeuxigsi
lgxdtudx
qadlkrel
lpfxosdq
sgaoqkzr
rtlvuhfv
ftbbsgbn
kjxttiqu
gylikswu
lquhgmrs
hxrjagjm
epxxekgx
uwwlcbrx
feincdjp
uyxhfhsc
nojuykoh
psjuuqwu
gtlohqkz
sbzsbgrw
nbhwuxfb
phmtunrh
zmfbkvgv
mjumfpia
gkubcshe
jmavrhyd
cgffkftg
msurhdct
bvchukal
psxaluvg
tvgwjhhp
chyizcxv
dumebzkd
cjpzbkzk
ngrgseyn
xmwcmaaz
puyrbiup
xxkpznis
rguwrpua
jmolhvnn
kpeqtlan
zzgvoxlp
erbintcn
kcykvysv
ixildajc
tnvgihwe
iqwgozpj
txkgyflb
vsyzebrw
ehnbcjef
hfevkbhf
wihlqtmp
vmrmnygo
ulvsuvsn
wgxnwihd
lexgbpsv
kxqcjoeb
daodpsbb
azyqmyhv
mvzcatwb
jtvqkjrv
rtdsaqqd
xrhzmnzl
wgfiwjrh
hgrgqqxm
nwwcxoyq
qlqyhpzs
ovujfily
pzvyeryk
strswprn
nrxclypc
sfusjxzi
pclbdadw
sjhggndb
xjcutuyt
qjjjeytj
qqjrkdlb
pyzodjdh
brnmlkmi
lgipidfp
ttrfbjry
iidwekro
vnwlnyma
ylxatduo
eiokdbqr
laezjjte
kkjhfsvp
buaegtpg
vzgqletc
pkdseade
nvpyxokq
yiysgxpe
xqhtubam
lcstpvke
nnskqssg
mkrbdovg
camkeppm
iqjvotay
bodlfgkj
jiigwvzc
ixpghywy
qlzyjgue
ugyjqtzn
odeuuiir
yfhianfx
seewayqj
lstpeuja
paqqnxsr
guwkidny
susussgu
ezcayehr
tdzgvcqf
vckcnsio
obawbapm
ipebazzk
tmcpmiou
hpdlfwor
ygxlfzzr
ltyxhtbx
olzqonbx
grsxreqs
bvkjcoux
fxtuxuub
fcbxdenm
smilcfvz
ewbndkiz
httsnfqu
ghorvefw
anevvqir
sajdzwho
becdemdn
vxktmxsj
xyawkeuw
pdefbxmh
yejymgfr
mipvhnsc
tjdyqpzd
rbvqirmd
mscuflvd
draqqcda
xfegqcjg
auypywpb
gitgzstq
zveqbzgt
wxrpedre
haptyecu
tkeexmhe
ujijprbd
xjiyczwq
ehpygnrr
guvejwyt
zmtsftky
wqtklwiz
lwlessio
lrknmhzd
pkdkwevt
ncryoeth
hjsqtpxu
ivmqrwok
qozgijgu
ueujvbbe
nfxgrmsd
zeetrgdl
drfbcgxo
rjjeraeb
hshozlgv
sfgvrnez
zaoctlsa
hebtzqvy
qckvuyif
wxyszmev
ddxfwklt
jqlzpfvu
wimoefwx
kabvtrno
pbebkvkm
govfwjof
xfjkvoup
fuzxcese
zbavvmyy
mwvkrnjg
gtkyelff
bffyzhnt
vlffqryw
ofncqcqw
cnzzrjjj
txpzvykz
ukkgeavq
wdnieioq
avosnedk
ipaavrqp
eeuurfat
sfhhwqzw
vjzopzad
kdbjonqz
uaksjfuc
lumpaomf
ysebmwel
dobryhxj
oaymjqwh
qjfflojj
zqmfgwre
uimjngfs
ihwelccg
yetrodjy
aifvwtws
xiyruzqr
anuvhykm
lelbjsno
csjwqotd
pptsysey
joptcdmq
tghbxpmq
jduwbxiy
obcdlahg
dxwrzytc
axfrxlgz
gepnmvel
ztmcynch
otnicgga
bdzobaoe
vkljxwnm
qvhmitgh
yflyxbjn
qshihqki
debaxqpw
fhfcjogj
huwpnaxx
jpwnrjbc
waylsrcm
aurdpcqc
yanpouht
ybwbpcak
uzvvspnj
tftluckv
uwmditoa
wsndxybi
dotcxasi
lxgmptwn
bpdmcbgt
dpjqvvck
jmgwudli
rimvxcoa
vdlacqbl
qtzwuqny
olzuzuuq
grlyyegi
mhgtadti
yrfdffzj
wbxadryy
bhaniozq
jdishqcx
kmiatkjj
asmxdrmv
riqdknna
fsuetmeg
iikajhgb
ioswsaws
yygpvtfb
egjoltik
bypcbzpk
zaumpggx
sdizezlv
xoyallwy
gicvajdl
qzowhuxa
iyftbzns
srzjxhve
xwasqzay
qznuxpqj
mlnjztxf
rxkcymao
huvxpllx
fmnrqasq
mwwigmka
yovjkmou
kvdrltte
nymvepew
vnrjykzc
unoegpvv
trrejbob
zwsdnqnb
ljsztmgl
tiznomfv
zxtxholt
csufzpiw
jgbjpucz
mpakkeil
ixmbvvbi
ejkhcxjj
zaokljpl
oeocaxdv
ytlpsbcx
hpfserxf
nzregysc
etevckof
bcqkqdvb
xzdhhick
gystpgoo
ciiyzxxr
kwstdxnn
ztregxhx
qhvkjoqe
ugirgwax
nhukpdut
yfiibmmd
cwkayjcp
ebmlabrp
kvjhyrag
wbphpfkc
ucqvhibs
dwuavsyy
jwrdsobl
hytijctt
plcumjhv
hwexsihm
ppmfzgqt
moumyuiw
zvgbsabj
yraygmws
vopzuhor
hafhljwp
gmqpchdg
yyahpihs
xvqakyyp
deamarun
yunihcvw
gcdjqqmu
kctibuxy
gcvlcfhc
ydwoxfvg
epszfvuh
xjjvwpbz
gzpdnthj
mnkrjgwz
ldfwvvfq
tydqesvl
envwzaqv
xvwyzkpe
rmpgcjeo
pkupgxup
ekqizsjl
agvenhgu
vscaqtri
rwfjrjpg
imthkcta
sjpmwqmg
fptfgekn
ohbwdbjm
ccfrphaj
gyeaqkog
onybscve
qztmoant
abjnbrpd
zompdzuf
bamomvbw
kzmmgexu
wzoxohtn
wvgmvwdt
nlgkxmbu
vyoddxyf
phmrizhk
zhksysjf
atcfvzlx
iyabqkly
rnwidjpm
cgwddumw
fcoylnzw
lsxosfra
vbcdgfiw
aenlmdgh
fvtmormn
rllxkznc
asocydmo
zcltimlr
hrqmccpt
dfmlsvtz
ntuhkbws
oziqleds
wkzbguis
coapfihl
irzpsuql
uxaowrls
tdbefhcf
wsyusuph
lpbdrmyn
slrzkkms
wqvzwiyq
vinahrsd
thsnmqjr
kwrzmakz
ifhclifl
wkqahikb
rwnchlkr
rkhpdbbk
vqnzigbf
olzziafs
qcylpbtk
fzhtmgji
qvnyctmb
ouolgwup
xkbrykjx
apbamszk
mlrlmpoh
kdneakuk
rrhhrtfk
cbgzlbgz
mfxencal
bkctqwpe
rjdxhqof
ogcbntmp
bbftqdfk
kikdidvm
mnjgwven
yurxwsge
qlrdtzad
jalffvnu
tayfycwr
jhivnvaw
yuvffepz
mwhczdkv
xltzklis
iellkyqk
krpktxhh
rkawdywu
pqqitomj
nrhhtvtv
gwerzhwc
qlsgifir
ssvyspem
udnnmvxk
albkdbsh
obxcrucu
dnyytrcx

File diff suppressed because it is too large Load Diff

@ -0,0 +1,173 @@
rect 1x1
rotate row y=0 by 20
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 4
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 5
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 6
rect 5x1
rotate row y=0 by 2
rect 1x3
rotate row y=2 by 8
rotate row y=0 by 8
rotate column x=0 by 1
rect 7x1
rotate row y=2 by 24
rotate row y=0 by 20
rotate column x=5 by 1
rotate column x=4 by 2
rotate column x=2 by 2
rotate column x=0 by 1
rect 7x1
rotate column x=34 by 2
rotate column x=22 by 1
rotate column x=15 by 1
rotate row y=2 by 18
rotate row y=0 by 12
rotate column x=8 by 2
rotate column x=7 by 1
rotate column x=5 by 2
rotate column x=2 by 1
rotate column x=0 by 1
rect 9x1
rotate row y=3 by 28
rotate row y=1 by 28
rotate row y=0 by 20
rotate column x=18 by 1
rotate column x=15 by 1
rotate column x=14 by 1
rotate column x=13 by 1
rotate column x=12 by 2
rotate column x=10 by 3
rotate column x=8 by 1
rotate column x=7 by 2
rotate column x=6 by 1
rotate column x=5 by 1
rotate column x=3 by 1
rotate column x=2 by 2
rotate column x=0 by 1
rect 19x1
rotate column x=34 by 2
rotate column x=24 by 1
rotate column x=23 by 1
rotate column x=14 by 1
rotate column x=9 by 2
rotate column x=4 by 2
rotate row y=3 by 5
rotate row y=2 by 3
rotate row y=1 by 7
rotate row y=0 by 5
rotate column x=0 by 2
rect 3x2
rotate column x=16 by 2
rotate row y=3 by 27
rotate row y=2 by 5
rotate row y=0 by 20
rotate column x=8 by 2
rotate column x=7 by 1
rotate column x=5 by 1
rotate column x=3 by 3
rotate column x=2 by 1
rotate column x=1 by 2
rotate column x=0 by 1
rect 9x1
rotate row y=4 by 42
rotate row y=3 by 40
rotate row y=1 by 30
rotate row y=0 by 40
rotate column x=37 by 2
rotate column x=36 by 3
rotate column x=35 by 1
rotate column x=33 by 1
rotate column x=32 by 1
rotate column x=31 by 3
rotate column x=30 by 1
rotate column x=28 by 1
rotate column x=27 by 1
rotate column x=25 by 1
rotate column x=23 by 3
rotate column x=22 by 1
rotate column x=21 by 1
rotate column x=20 by 1
rotate column x=18 by 1
rotate column x=17 by 1
rotate column x=16 by 3
rotate column x=15 by 1
rotate column x=13 by 1
rotate column x=12 by 1
rotate column x=11 by 2
rotate column x=10 by 1
rotate column x=8 by 1
rotate column x=7 by 2
rotate column x=5 by 1
rotate column x=3 by 3
rotate column x=2 by 1
rotate column x=1 by 1
rotate column x=0 by 1
rect 39x1
rotate column x=44 by 2
rotate column x=42 by 2
rotate column x=35 by 5
rotate column x=34 by 2
rotate column x=32 by 2
rotate column x=29 by 2
rotate column x=25 by 5
rotate column x=24 by 2
rotate column x=19 by 2
rotate column x=15 by 4
rotate column x=14 by 2
rotate column x=12 by 3
rotate column x=9 by 2
rotate column x=5 by 5
rotate column x=4 by 2
rotate row y=5 by 5
rotate row y=4 by 38
rotate row y=3 by 10
rotate row y=2 by 46
rotate row y=1 by 10
rotate column x=48 by 4
rotate column x=47 by 3
rotate column x=46 by 3
rotate column x=45 by 1
rotate column x=43 by 1
rotate column x=37 by 5
rotate column x=36 by 5
rotate column x=35 by 4
rotate column x=33 by 1
rotate column x=32 by 5
rotate column x=31 by 5
rotate column x=28 by 5
rotate column x=27 by 5
rotate column x=26 by 3
rotate column x=25 by 4
rotate column x=23 by 1
rotate column x=17 by 5
rotate column x=16 by 5
rotate column x=13 by 1
rotate column x=12 by 5
rotate column x=11 by 5
rotate column x=3 by 1
rotate column x=0 by 1

File diff suppressed because one or more lines are too long

@ -0,0 +1,4 @@
The first floor contains a promethium generator and a promethium-compatible microchip.
The second floor contains a cobalt generator, a curium generator, a ruthenium generator, and a plutonium generator.
The third floor contains a cobalt-compatible microchip, a curium-compatible microchip, a ruthenium-compatible microchip, and a plutonium-compatible microchip.
The fourth floor contains nothing relevant.

@ -0,0 +1,23 @@
cpy 1 a
cpy 1 b
cpy 26 d
jnz c 2
jnz 1 5
cpy 7 c
inc d
dec c
jnz c -2
cpy a c
inc a
dec b
jnz b -2
cpy c b
dec d
jnz d -6
cpy 16 c
cpy 17 d
inc a
dec d
jnz d -2
dec c
jnz c -5

File diff suppressed because it is too large Load Diff

@ -0,0 +1,100 @@
move position 0 to position 3
rotate right 0 steps
rotate right 1 step
move position 1 to position 5
swap letter h with letter b
reverse positions 1 through 3
swap letter a with letter g
swap letter b with letter h
rotate based on position of letter c
swap letter d with letter c
rotate based on position of letter c
swap position 6 with position 5
rotate right 7 steps
swap letter b with letter h
move position 4 to position 3
swap position 1 with position 0
swap position 7 with position 5
move position 7 to position 1
swap letter c with letter a
move position 7 to position 5
rotate right 4 steps
swap position 0 with position 5
move position 3 to position 1
swap letter c with letter h
rotate based on position of letter d
reverse positions 0 through 2
rotate based on position of letter g
move position 6 to position 7
move position 2 to position 5
swap position 1 with position 0
swap letter f with letter c
rotate right 1 step
reverse positions 2 through 4
rotate left 1 step
rotate based on position of letter h
rotate right 1 step
rotate right 5 steps
swap position 6 with position 3
move position 0 to position 5
swap letter g with letter f
reverse positions 2 through 7
reverse positions 4 through 6
swap position 4 with position 1
move position 2 to position 1
move position 3 to position 1
swap letter b with letter a
rotate based on position of letter b
reverse positions 3 through 5
move position 0 to position 2
rotate based on position of letter b
reverse positions 4 through 5
rotate based on position of letter g
reverse positions 0 through 5
swap letter h with letter c
reverse positions 2 through 5
swap position 7 with position 5
swap letter g with letter d
swap letter d with letter e
move position 1 to position 2
move position 3 to position 2
swap letter d with letter g
swap position 3 with position 7
swap letter b with letter f
rotate right 3 steps
move position 5 to position 3
move position 1 to position 2
rotate based on position of letter b
rotate based on position of letter c
reverse positions 2 through 3
move position 2 to position 3
rotate right 1 step
move position 7 to position 0
rotate right 3 steps
move position 6 to position 3
rotate based on position of letter e
swap letter c with letter b
swap letter f with letter d
swap position 2 with position 5
swap letter f with letter g
rotate based on position of letter a
reverse positions 3 through 4
rotate left 7 steps
rotate left 6 steps
swap letter g with letter b
reverse positions 3 through 6
rotate right 6 steps
rotate based on position of letter c
rotate based on position of letter b
rotate left 1 step
reverse positions 3 through 7
swap letter f with letter g
swap position 4 with position 1
rotate based on position of letter d
move position 0 to position 4
swap position 7 with position 6
rotate right 6 steps
rotate based on position of letter e
move position 7 to position 3
rotate right 3 steps
swap position 1 with position 2

@ -0,0 +1,927 @@
root@ebhq-gridcenter# df -h
Filesystem Size Used Avail Use%
/dev/grid/node-x0-y0 87T 71T 16T 81%
/dev/grid/node-x0-y1 93T 72T 21T 77%
/dev/grid/node-x0-y2 87T 67T 20T 77%
/dev/grid/node-x0-y3 89T 65T 24T 73%
/dev/grid/node-x0-y4 93T 67T 26T 72%
/dev/grid/node-x0-y5 94T 65T 29T 69%
/dev/grid/node-x0-y6 85T 64T 21T 75%
/dev/grid/node-x0-y7 85T 69T 16T 81%
/dev/grid/node-x0-y8 85T 71T 14T 83%
/dev/grid/node-x0-y9 91T 68T 23T 74%
/dev/grid/node-x0-y10 88T 65T 23T 73%
/dev/grid/node-x0-y11 89T 66T 23T 74%
/dev/grid/node-x0-y12 93T 68T 25T 73%
/dev/grid/node-x0-y13 90T 67T 23T 74%
/dev/grid/node-x0-y14 88T 69T 19T 78%
/dev/grid/node-x0-y15 94T 69T 25T 73%
/dev/grid/node-x0-y16 89T 67T 22T 75%
/dev/grid/node-x0-y17 85T 69T 16T 81%
/dev/grid/node-x0-y18 87T 64T 23T 73%
/dev/grid/node-x0-y19 92T 66T 26T 71%
/dev/grid/node-x0-y20 94T 69T 25T 73%
/dev/grid/node-x0-y21 88T 65T 23T 73%
/dev/grid/node-x0-y22 87T 72T 15T 82%
/dev/grid/node-x0-y23 92T 66T 26T 71%
/dev/grid/node-x0-y24 89T 72T 17T 80%
/dev/grid/node-x1-y0 86T 66T 20T 76%
/dev/grid/node-x1-y1 93T 64T 29T 68%
/dev/grid/node-x1-y2 92T 65T 27T 70%
/dev/grid/node-x1-y3 92T 70T 22T 76%
/dev/grid/node-x1-y4 87T 72T 15T 82%
/dev/grid/node-x1-y5 87T 69T 18T 79%
/dev/grid/node-x1-y6 88T 72T 16T 81%
/dev/grid/node-x1-y7 94T 68T 26T 72%
/dev/grid/node-x1-y8 93T 70T 23T 75%
/dev/grid/node-x1-y9 87T 69T 18T 79%
/dev/grid/node-x1-y10 90T 66T 24T 73%
/dev/grid/node-x1-y11 87T 67T 20T 77%
/dev/grid/node-x1-y12 86T 66T 20T 76%
/dev/grid/node-x1-y13 89T 67T 22T 75%
/dev/grid/node-x1-y14 88T 73T 15T 82%
/dev/grid/node-x1-y15 86T 71T 15T 82%
/dev/grid/node-x1-y16 94T 68T 26T 72%
/dev/grid/node-x1-y17 94T 66T 28T 70%
/dev/grid/node-x1-y18 91T 73T 18T 80%
/dev/grid/node-x1-y19 86T 64T 22T 74%
/dev/grid/node-x1-y20 86T 66T 20T 76%
/dev/grid/node-x1-y21 90T 70T 20T 77%
/dev/grid/node-x1-y22 89T 69T 20T 77%
/dev/grid/node-x1-y23 90T 67T 23T 74%
/dev/grid/node-x1-y24 90T 64T 26T 71%
/dev/grid/node-x2-y0 85T 69T 16T 81%
/dev/grid/node-x2-y1 89T 68T 21T 76%
/dev/grid/node-x2-y2 94T 65T 29T 69%
/dev/grid/node-x2-y3 92T 70T 22T 76%
/dev/grid/node-x2-y4 91T 71T 20T 78%
/dev/grid/node-x2-y5 86T 73T 13T 84%
/dev/grid/node-x2-y6 85T 73T 12T 85%
/dev/grid/node-x2-y7 91T 71T 20T 78%
/dev/grid/node-x2-y8 90T 71T 19T 78%
/dev/grid/node-x2-y9 89T 68T 21T 76%
/dev/grid/node-x2-y10 85T 65T 20T 76%
/dev/grid/node-x2-y11 90T 68T 22T 75%
/dev/grid/node-x2-y12 86T 66T 20T 76%
/dev/grid/node-x2-y13 91T 70T 21T 76%
/dev/grid/node-x2-y14 93T 68T 25T 73%
/dev/grid/node-x2-y15 94T 64T 30T 68%
/dev/grid/node-x2-y16 85T 65T 20T 76%
/dev/grid/node-x2-y17 92T 68T 24T 73%
/dev/grid/node-x2-y18 94T 67T 27T 71%
/dev/grid/node-x2-y19 94T 69T 25T 73%
/dev/grid/node-x2-y20 86T 65T 21T 75%
/dev/grid/node-x2-y21 86T 67T 19T 77%
/dev/grid/node-x2-y22 90T 68T 22T 75%
/dev/grid/node-x2-y23 94T 69T 25T 73%
/dev/grid/node-x2-y24 91T 72T 19T 79%
/dev/grid/node-x3-y0 93T 71T 22T 76%
/dev/grid/node-x3-y1 86T 67T 19T 77%
/dev/grid/node-x3-y2 87T 68T 19T 78%
/dev/grid/node-x3-y3 85T 73T 12T 85%
/dev/grid/node-x3-y4 91T 73T 18T 80%
/dev/grid/node-x3-y5 89T 65T 24T 73%
/dev/grid/node-x3-y6 91T 72T 19T 79%
/dev/grid/node-x3-y7 92T 67T 25T 72%
/dev/grid/node-x3-y8 90T 71T 19T 78%
/dev/grid/node-x3-y9 86T 67T 19T 77%
/dev/grid/node-x3-y10 90T 67T 23T 74%
/dev/grid/node-x3-y11 85T 71T 14T 83%
/dev/grid/node-x3-y12 93T 64T 29T 68%
/dev/grid/node-x3-y13 85T 71T 14T 83%
/dev/grid/node-x3-y14 93T 64T 29T 68%
/dev/grid/node-x3-y15 89T 64T 25T 71%
/dev/grid/node-x3-y16 89T 72T 17T 80%
/dev/grid/node-x3-y17 91T 65T 26T 71%
/dev/grid/node-x3-y18 93T 65T 28T 69%
/dev/grid/node-x3-y19 85T 65T 20T 76%
/dev/grid/node-x3-y20 94T 72T 22T 76%
/dev/grid/node-x3-y21 90T 66T 24T 73%
/dev/grid/node-x3-y22 88T 67T 21T 76%
/dev/grid/node-x3-y23 90T 72T 18T 80%
/dev/grid/node-x3-y24 94T 68T 26T 72%
/dev/grid/node-x4-y0 88T 67T 21T 76%
/dev/grid/node-x4-y1 94T 67T 27T 71%
/dev/grid/node-x4-y2 92T 66T 26T 71%
/dev/grid/node-x4-y3 93T 66T 27T 70%
/dev/grid/node-x4-y4 86T 66T 20T 76%
/dev/grid/node-x4-y5 87T 68T 19T 78%
/dev/grid/node-x4-y6 92T 68T 24T 73%
/dev/grid/node-x4-y7 92T 66T 26T 71%
/dev/grid/node-x4-y8 94T 66T 28T 70%
/dev/grid/node-x4-y9 87T 73T 14T 83%
/dev/grid/node-x4-y10 87T 69T 18T 79%
/dev/grid/node-x4-y11 88T 68T 20T 77%
/dev/grid/node-x4-y12 92T 73T 19T 79%
/dev/grid/node-x4-y13 89T 73T 16T 82%
/dev/grid/node-x4-y14 87T 66T 21T 75%
/dev/grid/node-x4-y15 86T 68T 18T 79%
/dev/grid/node-x4-y16 86T 70T 16T 81%
/dev/grid/node-x4-y17 94T 64T 30T 68%
/dev/grid/node-x4-y18 91T 69T 22T 75%
/dev/grid/node-x4-y19 86T 67T 19T 77%
/dev/grid/node-x4-y20 85T 64T 21T 75%
/dev/grid/node-x4-y21 89T 69T 20T 77%
/dev/grid/node-x4-y22 85T 68T 17T 80%
/dev/grid/node-x4-y23 87T 70T 17T 80%
/dev/grid/node-x4-y24 91T 65T 26T 71%
/dev/grid/node-x5-y0 85T 66T 19T 77%
/dev/grid/node-x5-y1 93T 65T 28T 69%
/dev/grid/node-x5-y2 93T 64T 29T 68%
/dev/grid/node-x5-y3 87T 65T 22T 74%
/dev/grid/node-x5-y4 85T 69T 16T 81%
/dev/grid/node-x5-y5 93T 73T 20T 78%
/dev/grid/node-x5-y6 89T 66T 23T 74%
/dev/grid/node-x5-y7 505T 493T 12T 97%
/dev/grid/node-x5-y8 85T 72T 13T 84%
/dev/grid/node-x5-y9 85T 66T 19T 77%
/dev/grid/node-x5-y10 88T 70T 18T 79%
/dev/grid/node-x5-y11 89T 69T 20T 77%
/dev/grid/node-x5-y12 90T 69T 21T 76%
/dev/grid/node-x5-y13 87T 64T 23T 73%
/dev/grid/node-x5-y14 93T 64T 29T 68%
/dev/grid/node-x5-y15 92T 64T 28T 69%
/dev/grid/node-x5-y16 90T 66T 24T 73%
/dev/grid/node-x5-y17 88T 64T 24T 72%
/dev/grid/node-x5-y18 87T 67T 20T 77%
/dev/grid/node-x5-y19 92T 71T 21T 77%
/dev/grid/node-x5-y20 90T 68T 22T 75%
/dev/grid/node-x5-y21 86T 69T 17T 80%
/dev/grid/node-x5-y22 86T 70T 16T 81%
/dev/grid/node-x5-y23 85T 73T 12T 85%
/dev/grid/node-x5-y24 93T 65T 28T 69%
/dev/grid/node-x6-y0 88T 69T 19T 78%
/dev/grid/node-x6-y1 92T 71T 21T 77%
/dev/grid/node-x6-y2 85T 70T 15T 82%
/dev/grid/node-x6-y3 94T 70T 24T 74%
/dev/grid/node-x6-y4 92T 70T 22T 76%
/dev/grid/node-x6-y5 85T 71T 14T 83%
/dev/grid/node-x6-y6 90T 66T 24T 73%
/dev/grid/node-x6-y7 507T 497T 10T 98%
/dev/grid/node-x6-y8 85T 64T 21T 75%
/dev/grid/node-x6-y9 90T 64T 26T 71%
/dev/grid/node-x6-y10 86T 69T 17T 80%
/dev/grid/node-x6-y11 91T 67T 24T 73%
/dev/grid/node-x6-y12 93T 66T 27T 70%
/dev/grid/node-x6-y13 87T 73T 14T 83%
/dev/grid/node-x6-y14 86T 64T 22T 74%
/dev/grid/node-x6-y15 92T 73T 19T 79%
/dev/grid/node-x6-y16 92T 66T 26T 71%
/dev/grid/node-x6-y17 94T 69T 25T 73%
/dev/grid/node-x6-y18 87T 69T 18T 79%
/dev/grid/node-x6-y19 89T 66T 23T 74%
/dev/grid/node-x6-y20 93T 70T 23T 75%
/dev/grid/node-x6-y21 86T 70T 16T 81%
/dev/grid/node-x6-y22 93T 65T 28T 69%
/dev/grid/node-x6-y23 85T 73T 12T 85%
/dev/grid/node-x6-y24 92T 71T 21T 77%
/dev/grid/node-x7-y0 85T 65T 20T 76%
/dev/grid/node-x7-y1 93T 64T 29T 68%
/dev/grid/node-x7-y2 94T 72T 22T 76%
/dev/grid/node-x7-y3 90T 70T 20T 77%
/dev/grid/node-x7-y4 85T 67T 18T 78%
/dev/grid/node-x7-y5 91T 70T 21T 76%
/dev/grid/node-x7-y6 85T 65T 20T 76%
/dev/grid/node-x7-y7 507T 492T 15T 97%
/dev/grid/node-x7-y8 88T 66T 22T 75%
/dev/grid/node-x7-y9 86T 72T 14T 83%
/dev/grid/node-x7-y10 91T 66T 25T 72%
/dev/grid/node-x7-y11 91T 65T 26T 71%
/dev/grid/node-x7-y12 91T 67T 24T 73%
/dev/grid/node-x7-y13 85T 64T 21T 75%
/dev/grid/node-x7-y14 91T 65T 26T 71%
/dev/grid/node-x7-y15 91T 66T 25T 72%
/dev/grid/node-x7-y16 89T 65T 24T 73%
/dev/grid/node-x7-y17 92T 0T 92T 0%
/dev/grid/node-x7-y18 92T 71T 21T 77%
/dev/grid/node-x7-y19 90T 67T 23T 74%
/dev/grid/node-x7-y20 88T 66T 22T 75%
/dev/grid/node-x7-y21 85T 64T 21T 75%
/dev/grid/node-x7-y22 94T 65T 29T 69%
/dev/grid/node-x7-y23 93T 70T 23T 75%
/dev/grid/node-x7-y24 88T 67T 21T 76%
/dev/grid/node-x8-y0 88T 73T 15T 82%
/dev/grid/node-x8-y1 94T 69T 25T 73%
/dev/grid/node-x8-y2 87T 72T 15T 82%
/dev/grid/node-x8-y3 93T 73T 20T 78%
/dev/grid/node-x8-y4 86T 66T 20T 76%
/dev/grid/node-x8-y5 85T 72T 13T 84%
/dev/grid/node-x8-y6 93T 67T 26T 72%
/dev/grid/node-x8-y7 501T 499T 2T 99%
/dev/grid/node-x8-y8 89T 65T 24T 73%
/dev/grid/node-x8-y9 93T 70T 23T 75%
/dev/grid/node-x8-y10 94T 72T 22T 76%
/dev/grid/node-x8-y11 85T 65T 20T 76%
/dev/grid/node-x8-y12 93T 68T 25T 73%
/dev/grid/node-x8-y13 85T 65T 20T 76%
/dev/grid/node-x8-y14 92T 73T 19T 79%
/dev/grid/node-x8-y15 86T 67T 19T 77%
/dev/grid/node-x8-y16 87T 65T 22T 74%
/dev/grid/node-x8-y17 93T 64T 29T 68%
/dev/grid/node-x8-y18 85T 69T 16T 81%
/dev/grid/node-x8-y19 87T 64T 23T 73%
/dev/grid/node-x8-y20 85T 65T 20T 76%
/dev/grid/node-x8-y21 89T 72T 17T 80%
/dev/grid/node-x8-y22 86T 66T 20T 76%
/dev/grid/node-x8-y23 88T 70T 18T 79%
/dev/grid/node-x8-y24 91T 66T 25T 72%
/dev/grid/node-x9-y0 89T 69T 20T 77%
/dev/grid/node-x9-y1 85T 68T 17T 80%
/dev/grid/node-x9-y2 91T 66T 25T 72%
/dev/grid/node-x9-y3 87T 68T 19T 78%
/dev/grid/node-x9-y4 91T 66T 25T 72%
/dev/grid/node-x9-y5 92T 64T 28T 69%
/dev/grid/node-x9-y6 89T 66T 23T 74%
/dev/grid/node-x9-y7 506T 490T 16T 96%
/dev/grid/node-x9-y8 89T 73T 16T 82%
/dev/grid/node-x9-y9 92T 68T 24T 73%
/dev/grid/node-x9-y10 85T 71T 14T 83%
/dev/grid/node-x9-y11 93T 64T 29T 68%
/dev/grid/node-x9-y12 88T 71T 17T 80%
/dev/grid/node-x9-y13 94T 65T 29T 69%
/dev/grid/node-x9-y14 90T 66T 24T 73%
/dev/grid/node-x9-y15 94T 70T 24T 74%
/dev/grid/node-x9-y16 92T 72T 20T 78%
/dev/grid/node-x9-y17 89T 69T 20T 77%
/dev/grid/node-x9-y18 87T 65T 22T 74%
/dev/grid/node-x9-y19 93T 70T 23T 75%
/dev/grid/node-x9-y20 89T 71T 18T 79%
/dev/grid/node-x9-y21 89T 73T 16T 82%
/dev/grid/node-x9-y22 91T 66T 25T 72%
/dev/grid/node-x9-y23 90T 67T 23T 74%
/dev/grid/node-x9-y24 92T 72T 20T 78%
/dev/grid/node-x10-y0 94T 70T 24T 74%
/dev/grid/node-x10-y1 92T 73T 19T 79%
/dev/grid/node-x10-y2 86T 68T 18T 79%
/dev/grid/node-x10-y3 94T 69T 25T 73%
/dev/grid/node-x10-y4 87T 72T 15T 82%
/dev/grid/node-x10-y5 90T 69T 21T 76%
/dev/grid/node-x10-y6 87T 65T 22T 74%
/dev/grid/node-x10-y7 510T 494T 16T 96%
/dev/grid/node-x10-y8 94T 72T 22T 76%
/dev/grid/node-x10-y9 93T 71T 22T 76%
/dev/grid/node-x10-y10 87T 70T 17T 80%
/dev/grid/node-x10-y11 94T 66T 28T 70%
/dev/grid/node-x10-y12 89T 68T 21T 76%
/dev/grid/node-x10-y13 92T 71T 21T 77%
/dev/grid/node-x10-y14 94T 70T 24T 74%
/dev/grid/node-x10-y15 94T 67T 27T 71%
/dev/grid/node-x10-y16 89T 73T 16T 82%
/dev/grid/node-x10-y17 92T 72T 20T 78%
/dev/grid/node-x10-y18 91T 71T 20T 78%
/dev/grid/node-x10-y19 93T 69T 24T 74%
/dev/grid/node-x10-y20 94T 67T 27T 71%
/dev/grid/node-x10-y21 85T 68T 17T 80%
/dev/grid/node-x10-y22 85T 70T 15T 82%
/dev/grid/node-x10-y23 93T 68T 25T 73%
/dev/grid/node-x10-y24 94T 64T 30T 68%
/dev/grid/node-x11-y0 85T 72T 13T 84%
/dev/grid/node-x11-y1 92T 72T 20T 78%
/dev/grid/node-x11-y2 88T 65T 23T 73%
/dev/grid/node-x11-y3 89T 70T 19T 78%
/dev/grid/node-x11-y4 90T 66T 24T 73%
/dev/grid/node-x11-y5 89T 65T 24T 73%
/dev/grid/node-x11-y6 87T 65T 22T 74%
/dev/grid/node-x11-y7 501T 490T 11T 97%
/dev/grid/node-x11-y8 87T 72T 15T 82%
/dev/grid/node-x11-y9 92T 65T 27T 70%
/dev/grid/node-x11-y10 89T 71T 18T 79%
/dev/grid/node-x11-y11 88T 64T 24T 72%
/dev/grid/node-x11-y12 94T 67T 27T 71%
/dev/grid/node-x11-y13 91T 66T 25T 72%
/dev/grid/node-x11-y14 86T 67T 19T 77%
/dev/grid/node-x11-y15 88T 65T 23T 73%
/dev/grid/node-x11-y16 88T 68T 20T 77%
/dev/grid/node-x11-y17 87T 72T 15T 82%
/dev/grid/node-x11-y18 93T 64T 29T 68%
/dev/grid/node-x11-y19 90T 65T 25T 72%
/dev/grid/node-x11-y20 92T 68T 24T 73%
/dev/grid/node-x11-y21 90T 73T 17T 81%
/dev/grid/node-x11-y22 87T 71T 16T 81%
/dev/grid/node-x11-y23 89T 67T 22T 75%
/dev/grid/node-x11-y24 92T 68T 24T 73%
/dev/grid/node-x12-y0 86T 69T 17T 80%
/dev/grid/node-x12-y1 87T 70T 17T 80%
/dev/grid/node-x12-y2 86T 70T 16T 81%
/dev/grid/node-x12-y3 87T 67T 20T 77%
/dev/grid/node-x12-y4 89T 71T 18T 79%
/dev/grid/node-x12-y5 94T 71T 23T 75%
/dev/grid/node-x12-y6 94T 72T 22T 76%
/dev/grid/node-x12-y7 505T 493T 12T 97%
/dev/grid/node-x12-y8 88T 72T 16T 81%
/dev/grid/node-x12-y9 87T 66T 21T 75%
/dev/grid/node-x12-y10 93T 65T 28T 69%
/dev/grid/node-x12-y11 87T 67T 20T 77%
/dev/grid/node-x12-y12 86T 69T 17T 80%
/dev/grid/node-x12-y13 90T 67T 23T 74%
/dev/grid/node-x12-y14 93T 68T 25T 73%
/dev/grid/node-x12-y15 92T 65T 27T 70%
/dev/grid/node-x12-y16 94T 70T 24T 74%
/dev/grid/node-x12-y17 86T 69T 17T 80%
/dev/grid/node-x12-y18 87T 70T 17T 80%
/dev/grid/node-x12-y19 93T 73T 20T 78%
/dev/grid/node-x12-y20 92T 72T 20T 78%
/dev/grid/node-x12-y21 91T 68T 23T 74%
/dev/grid/node-x12-y22 86T 65T 21T 75%
/dev/grid/node-x12-y23 87T 65T 22T 74%
/dev/grid/node-x12-y24 94T 64T 30T 68%
/dev/grid/node-x13-y0 85T 72T 13T 84%
/dev/grid/node-x13-y1 93T 72T 21T 77%
/dev/grid/node-x13-y2 89T 66T 23T 74%
/dev/grid/node-x13-y3 89T 67T 22T 75%
/dev/grid/node-x13-y4 85T 69T 16T 81%
/dev/grid/node-x13-y5 86T 70T 16T 81%
/dev/grid/node-x13-y6 90T 71T 19T 78%
/dev/grid/node-x13-y7 510T 496T 14T 97%
/dev/grid/node-x13-y8 89T 70T 19T 78%
/dev/grid/node-x13-y9 94T 67T 27T 71%
/dev/grid/node-x13-y10 90T 70T 20T 77%
/dev/grid/node-x13-y11 85T 67T 18T 78%
/dev/grid/node-x13-y12 94T 65T 29T 69%
/dev/grid/node-x13-y13 91T 72T 19T 79%
/dev/grid/node-x13-y14 94T 73T 21T 77%
/dev/grid/node-x13-y15 87T 72T 15T 82%
/dev/grid/node-x13-y16 94T 68T 26T 72%
/dev/grid/node-x13-y17 89T 72T 17T 80%
/dev/grid/node-x13-y18 94T 70T 24T 74%
/dev/grid/node-x13-y19 87T 68T 19T 78%
/dev/grid/node-x13-y20 94T 73T 21T 77%
/dev/grid/node-x13-y21 87T 64T 23T 73%
/dev/grid/node-x13-y22 89T 67T 22T 75%
/dev/grid/node-x13-y23 85T 70T 15T 82%
/dev/grid/node-x13-y24 90T 65T 25T 72%
/dev/grid/node-x14-y0 85T 69T 16T 81%
/dev/grid/node-x14-y1 92T 73T 19T 79%
/dev/grid/node-x14-y2 90T 70T 20T 77%
/dev/grid/node-x14-y3 91T 68T 23T 74%
/dev/grid/node-x14-y4 85T 73T 12T 85%
/dev/grid/node-x14-y5 90T 67T 23T 74%
/dev/grid/node-x14-y6 86T 70T 16T 81%
/dev/grid/node-x14-y7 507T 494T 13T 97%
/dev/grid/node-x14-y8 85T 69T 16T 81%
/dev/grid/node-x14-y9 88T 69T 19T 78%
/dev/grid/node-x14-y10 90T 70T 20T 77%
/dev/grid/node-x14-y11 87T 70T 17T 80%
/dev/grid/node-x14-y12 88T 66T 22T 75%
/dev/grid/node-x14-y13 92T 65T 27T 70%
/dev/grid/node-x14-y14 94T 64T 30T 68%
/dev/grid/node-x14-y15 92T 68T 24T 73%
/dev/grid/node-x14-y16 89T 68T 21T 76%
/dev/grid/node-x14-y17 91T 66T 25T 72%
/dev/grid/node-x14-y18 93T 64T 29T 68%
/dev/grid/node-x14-y19 93T 68T 25T 73%
/dev/grid/node-x14-y20 88T 64T 24T 72%
/dev/grid/node-x14-y21 88T 68T 20T 77%
/dev/grid/node-x14-y22 93T 72T 21T 77%
/dev/grid/node-x14-y23 86T 64T 22T 74%
/dev/grid/node-x14-y24 94T 66T 28T 70%
/dev/grid/node-x15-y0 88T 73T 15T 82%
/dev/grid/node-x15-y1 85T 65T 20T 76%
/dev/grid/node-x15-y2 93T 68T 25T 73%
/dev/grid/node-x15-y3 91T 69T 22T 75%
/dev/grid/node-x15-y4 94T 65T 29T 69%
/dev/grid/node-x15-y5 92T 65T 27T 70%
/dev/grid/node-x15-y6 87T 65T 22T 74%
/dev/grid/node-x15-y7 503T 492T 11T 97%
/dev/grid/node-x15-y8 94T 64T 30T 68%
/dev/grid/node-x15-y9 92T 64T 28T 69%
/dev/grid/node-x15-y10 94T 72T 22T 76%
/dev/grid/node-x15-y11 94T 66T 28T 70%
/dev/grid/node-x15-y12 90T 68T 22T 75%
/dev/grid/node-x15-y13 91T 69T 22T 75%
/dev/grid/node-x15-y14 89T 68T 21T 76%
/dev/grid/node-x15-y15 89T 68T 21T 76%
/dev/grid/node-x15-y16 91T 70T 21T 76%
/dev/grid/node-x15-y17 94T 68T 26T 72%
/dev/grid/node-x15-y18 92T 69T 23T 75%
/dev/grid/node-x15-y19 93T 72T 21T 77%
/dev/grid/node-x15-y20 88T 73T 15T 82%
/dev/grid/node-x15-y21 94T 64T 30T 68%
/dev/grid/node-x15-y22 85T 70T 15T 82%
/dev/grid/node-x15-y23 91T 73T 18T 80%
/dev/grid/node-x15-y24 85T 71T 14T 83%
/dev/grid/node-x16-y0 86T 65T 21T 75%
/dev/grid/node-x16-y1 87T 67T 20T 77%
/dev/grid/node-x16-y2 92T 73T 19T 79%
/dev/grid/node-x16-y3 88T 70T 18T 79%
/dev/grid/node-x16-y4 89T 67T 22T 75%
/dev/grid/node-x16-y5 86T 68T 18T 79%
/dev/grid/node-x16-y6 89T 67T 22T 75%
/dev/grid/node-x16-y7 510T 493T 17T 96%
/dev/grid/node-x16-y8 86T 67T 19T 77%
/dev/grid/node-x16-y9 90T 64T 26T 71%
/dev/grid/node-x16-y10 90T 72T 18T 80%
/dev/grid/node-x16-y11 94T 64T 30T 68%
/dev/grid/node-x16-y12 94T 65T 29T 69%
/dev/grid/node-x16-y13 87T 71T 16T 81%
/dev/grid/node-x16-y14 89T 68T 21T 76%
/dev/grid/node-x16-y15 93T 67T 26T 72%
/dev/grid/node-x16-y16 89T 71T 18T 79%
/dev/grid/node-x16-y17 91T 73T 18T 80%
/dev/grid/node-x16-y18 90T 68T 22T 75%
/dev/grid/node-x16-y19 85T 66T 19T 77%
/dev/grid/node-x16-y20 87T 68T 19T 78%
/dev/grid/node-x16-y21 89T 69T 20T 77%
/dev/grid/node-x16-y22 88T 71T 17T 80%
/dev/grid/node-x16-y23 94T 72T 22T 76%
/dev/grid/node-x16-y24 88T 64T 24T 72%
/dev/grid/node-x17-y0 85T 70T 15T 82%
/dev/grid/node-x17-y1 90T 73T 17T 81%
/dev/grid/node-x17-y2 93T 68T 25T 73%
/dev/grid/node-x17-y3 85T 72T 13T 84%
/dev/grid/node-x17-y4 88T 70T 18T 79%
/dev/grid/node-x17-y5 85T 64T 21T 75%
/dev/grid/node-x17-y6 89T 64T 25T 71%
/dev/grid/node-x17-y7 509T 492T 17T 96%
/dev/grid/node-x17-y8 86T 72T 14T 83%
/dev/grid/node-x17-y9 92T 67T 25T 72%
/dev/grid/node-x17-y10 91T 71T 20T 78%
/dev/grid/node-x17-y11 91T 67T 24T 73%
/dev/grid/node-x17-y12 91T 72T 19T 79%
/dev/grid/node-x17-y13 92T 73T 19T 79%
/dev/grid/node-x17-y14 93T 67T 26T 72%
/dev/grid/node-x17-y15 87T 71T 16T 81%
/dev/grid/node-x17-y16 90T 65T 25T 72%
/dev/grid/node-x17-y17 88T 71T 17T 80%
/dev/grid/node-x17-y18 87T 69T 18T 79%
/dev/grid/node-x17-y19 90T 65T 25T 72%
/dev/grid/node-x17-y20 93T 67T 26T 72%
/dev/grid/node-x17-y21 91T 69T 22T 75%
/dev/grid/node-x17-y22 89T 71T 18T 79%
/dev/grid/node-x17-y23 85T 73T 12T 85%
/dev/grid/node-x17-y24 90T 68T 22T 75%
/dev/grid/node-x18-y0 87T 72T 15T 82%
/dev/grid/node-x18-y1 93T 71T 22T 76%
/dev/grid/node-x18-y2 94T 67T 27T 71%
/dev/grid/node-x18-y3 87T 67T 20T 77%
/dev/grid/node-x18-y4 94T 71T 23T 75%
/dev/grid/node-x18-y5 87T 70T 17T 80%
/dev/grid/node-x18-y6 89T 64T 25T 71%
/dev/grid/node-x18-y7 504T 498T 6T 98%
/dev/grid/node-x18-y8 85T 72T 13T 84%
/dev/grid/node-x18-y9 91T 71T 20T 78%
/dev/grid/node-x18-y10 90T 69T 21T 76%
/dev/grid/node-x18-y11 87T 71T 16T 81%
/dev/grid/node-x18-y12 94T 69T 25T 73%
/dev/grid/node-x18-y13 90T 70T 20T 77%
/dev/grid/node-x18-y14 93T 65T 28T 69%
/dev/grid/node-x18-y15 87T 67T 20T 77%
/dev/grid/node-x18-y16 88T 64T 24T 72%
/dev/grid/node-x18-y17 88T 71T 17T 80%
/dev/grid/node-x18-y18 90T 66T 24T 73%
/dev/grid/node-x18-y19 90T 65T 25T 72%
/dev/grid/node-x18-y20 86T 71T 15T 82%
/dev/grid/node-x18-y21 87T 73T 14T 83%
/dev/grid/node-x18-y22 89T 69T 20T 77%
/dev/grid/node-x18-y23 90T 67T 23T 74%
/dev/grid/node-x18-y24 88T 72T 16T 81%
/dev/grid/node-x19-y0 87T 71T 16T 81%
/dev/grid/node-x19-y1 94T 71T 23T 75%
/dev/grid/node-x19-y2 85T 68T 17T 80%
/dev/grid/node-x19-y3 88T 65T 23T 73%
/dev/grid/node-x19-y4 93T 66T 27T 70%
/dev/grid/node-x19-y5 88T 67T 21T 76%
/dev/grid/node-x19-y6 89T 70T 19T 78%
/dev/grid/node-x19-y7 509T 496T 13T 97%
/dev/grid/node-x19-y8 89T 67T 22T 75%
/dev/grid/node-x19-y9 92T 71T 21T 77%
/dev/grid/node-x19-y10 85T 64T 21T 75%
/dev/grid/node-x19-y11 89T 67T 22T 75%
/dev/grid/node-x19-y12 91T 72T 19T 79%
/dev/grid/node-x19-y13 88T 72T 16T 81%
/dev/grid/node-x19-y14 88T 67T 21T 76%
/dev/grid/node-x19-y15 87T 65T 22T 74%
/dev/grid/node-x19-y16 90T 65T 25T 72%
/dev/grid/node-x19-y17 94T 71T 23T 75%
/dev/grid/node-x19-y18 86T 64T 22T 74%
/dev/grid/node-x19-y19 85T 65T 20T 76%
/dev/grid/node-x19-y20 93T 67T 26T 72%
/dev/grid/node-x19-y21 85T 65T 20T 76%
/dev/grid/node-x19-y22 88T 70T 18T 79%
/dev/grid/node-x19-y23 93T 73T 20T 78%
/dev/grid/node-x19-y24 93T 66T 27T 70%
/dev/grid/node-x20-y0 88T 71T 17T 80%
/dev/grid/node-x20-y1 94T 67T 27T 71%
/dev/grid/node-x20-y2 94T 71T 23T 75%
/dev/grid/node-x20-y3 91T 67T 24T 73%
/dev/grid/node-x20-y4 88T 73T 15T 82%
/dev/grid/node-x20-y5 90T 65T 25T 72%
/dev/grid/node-x20-y6 85T 64T 21T 75%
/dev/grid/node-x20-y7 502T 497T 5T 99%
/dev/grid/node-x20-y8 94T 72T 22T 76%
/dev/grid/node-x20-y9 85T 72T 13T 84%
/dev/grid/node-x20-y10 92T 65T 27T 70%
/dev/grid/node-x20-y11 89T 65T 24T 73%
/dev/grid/node-x20-y12 87T 71T 16T 81%
/dev/grid/node-x20-y13 92T 70T 22T 76%
/dev/grid/node-x20-y14 91T 67T 24T 73%
/dev/grid/node-x20-y15 91T 65T 26T 71%
/dev/grid/node-x20-y16 89T 72T 17T 80%
/dev/grid/node-x20-y17 92T 66T 26T 71%
/dev/grid/node-x20-y18 91T 71T 20T 78%
/dev/grid/node-x20-y19 91T 69T 22T 75%
/dev/grid/node-x20-y20 89T 73T 16T 82%
/dev/grid/node-x20-y21 87T 72T 15T 82%
/dev/grid/node-x20-y22 86T 64T 22T 74%
/dev/grid/node-x20-y23 86T 67T 19T 77%
/dev/grid/node-x20-y24 94T 71T 23T 75%
/dev/grid/node-x21-y0 87T 70T 17T 80%
/dev/grid/node-x21-y1 90T 67T 23T 74%
/dev/grid/node-x21-y2 86T 72T 14T 83%
/dev/grid/node-x21-y3 90T 68T 22T 75%
/dev/grid/node-x21-y4 92T 69T 23T 75%
/dev/grid/node-x21-y5 90T 68T 22T 75%
/dev/grid/node-x21-y6 93T 72T 21T 77%
/dev/grid/node-x21-y7 507T 490T 17T 96%
/dev/grid/node-x21-y8 85T 64T 21T 75%
/dev/grid/node-x21-y9 85T 67T 18T 78%
/dev/grid/node-x21-y10 94T 73T 21T 77%
/dev/grid/node-x21-y11 87T 64T 23T 73%
/dev/grid/node-x21-y12 89T 64T 25T 71%
/dev/grid/node-x21-y13 92T 69T 23T 75%
/dev/grid/node-x21-y14 87T 72T 15T 82%
/dev/grid/node-x21-y15 92T 67T 25T 72%
/dev/grid/node-x21-y16 86T 72T 14T 83%
/dev/grid/node-x21-y17 94T 67T 27T 71%
/dev/grid/node-x21-y18 85T 71T 14T 83%
/dev/grid/node-x21-y19 88T 70T 18T 79%
/dev/grid/node-x21-y20 94T 72T 22T 76%
/dev/grid/node-x21-y21 86T 68T 18T 79%
/dev/grid/node-x21-y22 94T 65T 29T 69%
/dev/grid/node-x21-y23 86T 72T 14T 83%
/dev/grid/node-x21-y24 92T 65T 27T 70%
/dev/grid/node-x22-y0 85T 71T 14T 83%
/dev/grid/node-x22-y1 89T 71T 18T 79%
/dev/grid/node-x22-y2 91T 72T 19T 79%
/dev/grid/node-x22-y3 90T 70T 20T 77%
/dev/grid/node-x22-y4 86T 67T 19T 77%
/dev/grid/node-x22-y5 90T 66T 24T 73%
/dev/grid/node-x22-y6 93T 67T 26T 72%
/dev/grid/node-x22-y7 501T 490T 11T 97%
/dev/grid/node-x22-y8 89T 67T 22T 75%
/dev/grid/node-x22-y9 89T 71T 18T 79%
/dev/grid/node-x22-y10 90T 70T 20T 77%
/dev/grid/node-x22-y11 89T 67T 22T 75%
/dev/grid/node-x22-y12 85T 64T 21T 75%
/dev/grid/node-x22-y13 87T 68T 19T 78%
/dev/grid/node-x22-y14 88T 67T 21T 76%
/dev/grid/node-x22-y15 89T 68T 21T 76%
/dev/grid/node-x22-y16 88T 73T 15T 82%
/dev/grid/node-x22-y17 86T 69T 17T 80%
/dev/grid/node-x22-y18 88T 73T 15T 82%
/dev/grid/node-x22-y19 85T 68T 17T 80%
/dev/grid/node-x22-y20 85T 68T 17T 80%
/dev/grid/node-x22-y21 88T 68T 20T 77%
/dev/grid/node-x22-y22 85T 71T 14T 83%
/dev/grid/node-x22-y23 94T 65T 29T 69%
/dev/grid/node-x22-y24 90T 65T 25T 72%
/dev/grid/node-x23-y0 91T 64T 27T 70%
/dev/grid/node-x23-y1 92T 72T 20T 78%
/dev/grid/node-x23-y2 94T 69T 25T 73%
/dev/grid/node-x23-y3 90T 66T 24T 73%
/dev/grid/node-x23-y4 92T 71T 21T 77%
/dev/grid/node-x23-y5 90T 70T 20T 77%
/dev/grid/node-x23-y6 91T 66T 25T 72%
/dev/grid/node-x23-y7 506T 497T 9T 98%
/dev/grid/node-x23-y8 92T 70T 22T 76%
/dev/grid/node-x23-y9 90T 71T 19T 78%
/dev/grid/node-x23-y10 94T 70T 24T 74%
/dev/grid/node-x23-y11 86T 65T 21T 75%
/dev/grid/node-x23-y12 87T 65T 22T 74%
/dev/grid/node-x23-y13 93T 67T 26T 72%
/dev/grid/node-x23-y14 87T 66T 21T 75%
/dev/grid/node-x23-y15 87T 72T 15T 82%
/dev/grid/node-x23-y16 89T 65T 24T 73%
/dev/grid/node-x23-y17 87T 65T 22T 74%
/dev/grid/node-x23-y18 86T 70T 16T 81%
/dev/grid/node-x23-y19 89T 66T 23T 74%
/dev/grid/node-x23-y20 88T 68T 20T 77%
/dev/grid/node-x23-y21 94T 64T 30T 68%
/dev/grid/node-x23-y22 85T 66T 19T 77%
/dev/grid/node-x23-y23 85T 70T 15T 82%
/dev/grid/node-x23-y24 87T 69T 18T 79%
/dev/grid/node-x24-y0 87T 70T 17T 80%
/dev/grid/node-x24-y1 92T 64T 28T 69%
/dev/grid/node-x24-y2 86T 68T 18T 79%
/dev/grid/node-x24-y3 87T 70T 17T 80%
/dev/grid/node-x24-y4 90T 73T 17T 81%
/dev/grid/node-x24-y5 88T 69T 19T 78%
/dev/grid/node-x24-y6 93T 71T 22T 76%
/dev/grid/node-x24-y7 504T 497T 7T 98%
/dev/grid/node-x24-y8 87T 67T 20T 77%
/dev/grid/node-x24-y9 86T 68T 18T 79%
/dev/grid/node-x24-y10 91T 73T 18T 80%
/dev/grid/node-x24-y11 94T 65T 29T 69%
/dev/grid/node-x24-y12 93T 65T 28T 69%
/dev/grid/node-x24-y13 87T 70T 17T 80%
/dev/grid/node-x24-y14 90T 68T 22T 75%
/dev/grid/node-x24-y15 89T 72T 17T 80%
/dev/grid/node-x24-y16 93T 64T 29T 68%
/dev/grid/node-x24-y17 93T 70T 23T 75%
/dev/grid/node-x24-y18 91T 71T 20T 78%
/dev/grid/node-x24-y19 86T 71T 15T 82%
/dev/grid/node-x24-y20 87T 64T 23T 73%
/dev/grid/node-x24-y21 88T 66T 22T 75%
/dev/grid/node-x24-y22 92T 69T 23T 75%
/dev/grid/node-x24-y23 94T 73T 21T 77%
/dev/grid/node-x24-y24 92T 70T 22T 76%
/dev/grid/node-x25-y0 93T 64T 29T 68%
/dev/grid/node-x25-y1 91T 66T 25T 72%
/dev/grid/node-x25-y2 93T 64T 29T 68%
/dev/grid/node-x25-y3 93T 66T 27T 70%
/dev/grid/node-x25-y4 92T 71T 21T 77%
/dev/grid/node-x25-y5 90T 66T 24T 73%
/dev/grid/node-x25-y6 94T 73T 21T 77%
/dev/grid/node-x25-y7 504T 499T 5T 99%
/dev/grid/node-x25-y8 87T 72T 15T 82%
/dev/grid/node-x25-y9 86T 69T 17T 80%
/dev/grid/node-x25-y10 88T 73T 15T 82%
/dev/grid/node-x25-y11 86T 65T 21T 75%
/dev/grid/node-x25-y12 88T 72T 16T 81%
/dev/grid/node-x25-y13 93T 68T 25T 73%
/dev/grid/node-x25-y14 87T 72T 15T 82%
/dev/grid/node-x25-y15 86T 67T 19T 77%
/dev/grid/node-x25-y16 88T 67T 21T 76%
/dev/grid/node-x25-y17 94T 68T 26T 72%
/dev/grid/node-x25-y18 85T 73T 12T 85%
/dev/grid/node-x25-y19 87T 66T 21T 75%
/dev/grid/node-x25-y20 93T 65T 28T 69%
/dev/grid/node-x25-y21 86T 73T 13T 84%
/dev/grid/node-x25-y22 85T 68T 17T 80%
/dev/grid/node-x25-y23 93T 69T 24T 74%
/dev/grid/node-x25-y24 94T 64T 30T 68%
/dev/grid/node-x26-y0 88T 68T 20T 77%
/dev/grid/node-x26-y1 90T 65T 25T 72%
/dev/grid/node-x26-y2 93T 65T 28T 69%
/dev/grid/node-x26-y3 87T 72T 15T 82%
/dev/grid/node-x26-y4 94T 73T 21T 77%
/dev/grid/node-x26-y5 86T 68T 18T 79%
/dev/grid/node-x26-y6 91T 65T 26T 71%
/dev/grid/node-x26-y7 510T 496T 14T 97%
/dev/grid/node-x26-y8 91T 64T 27T 70%
/dev/grid/node-x26-y9 90T 68T 22T 75%
/dev/grid/node-x26-y10 91T 73T 18T 80%
/dev/grid/node-x26-y11 86T 64T 22T 74%
/dev/grid/node-x26-y12 90T 67T 23T 74%
/dev/grid/node-x26-y13 85T 64T 21T 75%
/dev/grid/node-x26-y14 89T 72T 17T 80%
/dev/grid/node-x26-y15 91T 66T 25T 72%
/dev/grid/node-x26-y16 86T 68T 18T 79%
/dev/grid/node-x26-y17 85T 73T 12T 85%
/dev/grid/node-x26-y18 94T 69T 25T 73%
/dev/grid/node-x26-y19 85T 71T 14T 83%
/dev/grid/node-x26-y20 86T 67T 19T 77%
/dev/grid/node-x26-y21 94T 64T 30T 68%
/dev/grid/node-x26-y22 89T 64T 25T 71%
/dev/grid/node-x26-y23 90T 68T 22T 75%
/dev/grid/node-x26-y24 89T 64T 25T 71%
/dev/grid/node-x27-y0 85T 72T 13T 84%
/dev/grid/node-x27-y1 94T 65T 29T 69%
/dev/grid/node-x27-y2 86T 68T 18T 79%
/dev/grid/node-x27-y3 87T 64T 23T 73%
/dev/grid/node-x27-y4 93T 67T 26T 72%
/dev/grid/node-x27-y5 85T 67T 18T 78%
/dev/grid/node-x27-y6 86T 69T 17T 80%
/dev/grid/node-x27-y7 505T 490T 15T 97%
/dev/grid/node-x27-y8 85T 71T 14T 83%
/dev/grid/node-x27-y9 85T 65T 20T 76%
/dev/grid/node-x27-y10 89T 68T 21T 76%
/dev/grid/node-x27-y11 85T 72T 13T 84%
/dev/grid/node-x27-y12 89T 72T 17T 80%
/dev/grid/node-x27-y13 85T 71T 14T 83%
/dev/grid/node-x27-y14 94T 70T 24T 74%
/dev/grid/node-x27-y15 87T 67T 20T 77%
/dev/grid/node-x27-y16 92T 68T 24T 73%
/dev/grid/node-x27-y17 89T 72T 17T 80%
/dev/grid/node-x27-y18 91T 64T 27T 70%
/dev/grid/node-x27-y19 86T 66T 20T 76%
/dev/grid/node-x27-y20 86T 72T 14T 83%
/dev/grid/node-x27-y21 91T 64T 27T 70%
/dev/grid/node-x27-y22 92T 64T 28T 69%
/dev/grid/node-x27-y23 91T 70T 21T 76%
/dev/grid/node-x27-y24 91T 71T 20T 78%
/dev/grid/node-x28-y0 92T 68T 24T 73%
/dev/grid/node-x28-y1 86T 73T 13T 84%
/dev/grid/node-x28-y2 89T 70T 19T 78%
/dev/grid/node-x28-y3 85T 69T 16T 81%
/dev/grid/node-x28-y4 86T 69T 17T 80%
/dev/grid/node-x28-y5 89T 64T 25T 71%
/dev/grid/node-x28-y6 92T 71T 21T 77%
/dev/grid/node-x28-y7 501T 493T 8T 98%
/dev/grid/node-x28-y8 93T 68T 25T 73%
/dev/grid/node-x28-y9 88T 70T 18T 79%
/dev/grid/node-x28-y10 94T 65T 29T 69%
/dev/grid/node-x28-y11 93T 70T 23T 75%
/dev/grid/node-x28-y12 86T 68T 18T 79%
/dev/grid/node-x28-y13 85T 67T 18T 78%
/dev/grid/node-x28-y14 90T 64T 26T 71%
/dev/grid/node-x28-y15 87T 64T 23T 73%
/dev/grid/node-x28-y16 91T 66T 25T 72%
/dev/grid/node-x28-y17 91T 71T 20T 78%
/dev/grid/node-x28-y18 85T 70T 15T 82%
/dev/grid/node-x28-y19 92T 66T 26T 71%
/dev/grid/node-x28-y20 89T 71T 18T 79%
/dev/grid/node-x28-y21 86T 68T 18T 79%
/dev/grid/node-x28-y22 86T 72T 14T 83%
/dev/grid/node-x28-y23 92T 65T 27T 70%
/dev/grid/node-x28-y24 90T 70T 20T 77%
/dev/grid/node-x29-y0 91T 65T 26T 71%
/dev/grid/node-x29-y1 85T 66T 19T 77%
/dev/grid/node-x29-y2 88T 73T 15T 82%
/dev/grid/node-x29-y3 85T 66T 19T 77%
/dev/grid/node-x29-y4 91T 67T 24T 73%
/dev/grid/node-x29-y5 86T 72T 14T 83%
/dev/grid/node-x29-y6 92T 66T 26T 71%
/dev/grid/node-x29-y7 507T 493T 14T 97%
/dev/grid/node-x29-y8 85T 68T 17T 80%
/dev/grid/node-x29-y9 85T 70T 15T 82%
/dev/grid/node-x29-y10 86T 67T 19T 77%
/dev/grid/node-x29-y11 89T 73T 16T 82%
/dev/grid/node-x29-y12 89T 70T 19T 78%
/dev/grid/node-x29-y13 89T 73T 16T 82%
/dev/grid/node-x29-y14 89T 67T 22T 75%
/dev/grid/node-x29-y15 93T 71T 22T 76%
/dev/grid/node-x29-y16 94T 72T 22T 76%
/dev/grid/node-x29-y17 94T 71T 23T 75%
/dev/grid/node-x29-y18 86T 64T 22T 74%
/dev/grid/node-x29-y19 90T 70T 20T 77%
/dev/grid/node-x29-y20 89T 69T 20T 77%
/dev/grid/node-x29-y21 88T 73T 15T 82%
/dev/grid/node-x29-y22 88T 66T 22T 75%
/dev/grid/node-x29-y23 85T 66T 19T 77%
/dev/grid/node-x29-y24 85T 69T 16T 81%
/dev/grid/node-x30-y0 88T 64T 24T 72%
/dev/grid/node-x30-y1 91T 73T 18T 80%
/dev/grid/node-x30-y2 94T 71T 23T 75%
/dev/grid/node-x30-y3 91T 68T 23T 74%
/dev/grid/node-x30-y4 85T 72T 13T 84%
/dev/grid/node-x30-y5 91T 72T 19T 79%
/dev/grid/node-x30-y6 87T 70T 17T 80%
/dev/grid/node-x30-y7 510T 492T 18T 96%
/dev/grid/node-x30-y8 94T 64T 30T 68%
/dev/grid/node-x30-y9 86T 65T 21T 75%
/dev/grid/node-x30-y10 86T 64T 22T 74%
/dev/grid/node-x30-y11 87T 67T 20T 77%
/dev/grid/node-x30-y12 88T 69T 19T 78%
/dev/grid/node-x30-y13 92T 72T 20T 78%
/dev/grid/node-x30-y14 93T 65T 28T 69%
/dev/grid/node-x30-y15 92T 65T 27T 70%
/dev/grid/node-x30-y16 89T 72T 17T 80%
/dev/grid/node-x30-y17 91T 73T 18T 80%
/dev/grid/node-x30-y18 91T 72T 19T 79%
/dev/grid/node-x30-y19 92T 68T 24T 73%
/dev/grid/node-x30-y20 85T 72T 13T 84%
/dev/grid/node-x30-y21 89T 69T 20T 77%
/dev/grid/node-x30-y22 89T 64T 25T 71%
/dev/grid/node-x30-y23 93T 64T 29T 68%
/dev/grid/node-x30-y24 90T 64T 26T 71%
/dev/grid/node-x31-y0 93T 70T 23T 75%
/dev/grid/node-x31-y1 91T 64T 27T 70%
/dev/grid/node-x31-y2 92T 67T 25T 72%
/dev/grid/node-x31-y3 87T 72T 15T 82%
/dev/grid/node-x31-y4 85T 65T 20T 76%
/dev/grid/node-x31-y5 86T 68T 18T 79%
/dev/grid/node-x31-y6 87T 67T 20T 77%
/dev/grid/node-x31-y7 509T 499T 10T 98%
/dev/grid/node-x31-y8 91T 71T 20T 78%
/dev/grid/node-x31-y9 88T 72T 16T 81%
/dev/grid/node-x31-y10 86T 64T 22T 74%
/dev/grid/node-x31-y11 87T 68T 19T 78%
/dev/grid/node-x31-y12 87T 71T 16T 81%
/dev/grid/node-x31-y13 93T 65T 28T 69%
/dev/grid/node-x31-y14 94T 68T 26T 72%
/dev/grid/node-x31-y15 94T 72T 22T 76%
/dev/grid/node-x31-y16 93T 69T 24T 74%
/dev/grid/node-x31-y17 87T 66T 21T 75%
/dev/grid/node-x31-y18 94T 71T 23T 75%
/dev/grid/node-x31-y19 86T 71T 15T 82%
/dev/grid/node-x31-y20 86T 67T 19T 77%
/dev/grid/node-x31-y21 89T 65T 24T 73%
/dev/grid/node-x31-y22 86T 64T 22T 74%
/dev/grid/node-x31-y23 94T 71T 23T 75%
/dev/grid/node-x31-y24 89T 73T 16T 82%
/dev/grid/node-x32-y0 93T 69T 24T 74%
/dev/grid/node-x32-y1 86T 68T 18T 79%
/dev/grid/node-x32-y2 90T 68T 22T 75%
/dev/grid/node-x32-y3 90T 64T 26T 71%
/dev/grid/node-x32-y4 88T 66T 22T 75%
/dev/grid/node-x32-y5 90T 67T 23T 74%
/dev/grid/node-x32-y6 94T 73T 21T 77%
/dev/grid/node-x32-y7 509T 493T 16T 96%
/dev/grid/node-x32-y8 91T 73T 18T 80%
/dev/grid/node-x32-y9 89T 71T 18T 79%
/dev/grid/node-x32-y10 92T 73T 19T 79%
/dev/grid/node-x32-y11 92T 65T 27T 70%
/dev/grid/node-x32-y12 94T 68T 26T 72%
/dev/grid/node-x32-y13 85T 69T 16T 81%
/dev/grid/node-x32-y14 93T 69T 24T 74%
/dev/grid/node-x32-y15 90T 72T 18T 80%
/dev/grid/node-x32-y16 87T 71T 16T 81%
/dev/grid/node-x32-y17 92T 66T 26T 71%
/dev/grid/node-x32-y18 85T 64T 21T 75%
/dev/grid/node-x32-y19 88T 72T 16T 81%
/dev/grid/node-x32-y20 86T 69T 17T 80%
/dev/grid/node-x32-y21 94T 69T 25T 73%
/dev/grid/node-x32-y22 87T 70T 17T 80%
/dev/grid/node-x32-y23 94T 72T 22T 76%
/dev/grid/node-x32-y24 87T 72T 15T 82%
/dev/grid/node-x33-y0 94T 64T 30T 68%
/dev/grid/node-x33-y1 94T 64T 30T 68%
/dev/grid/node-x33-y2 86T 66T 20T 76%
/dev/grid/node-x33-y3 90T 69T 21T 76%
/dev/grid/node-x33-y4 92T 71T 21T 77%
/dev/grid/node-x33-y5 85T 71T 14T 83%
/dev/grid/node-x33-y6 87T 72T 15T 82%
/dev/grid/node-x33-y7 510T 491T 19T 96%
/dev/grid/node-x33-y8 94T 70T 24T 74%
/dev/grid/node-x33-y9 93T 65T 28T 69%
/dev/grid/node-x33-y10 89T 66T 23T 74%
/dev/grid/node-x33-y11 90T 73T 17T 81%
/dev/grid/node-x33-y12 85T 69T 16T 81%
/dev/grid/node-x33-y13 87T 70T 17T 80%
/dev/grid/node-x33-y14 91T 70T 21T 76%
/dev/grid/node-x33-y15 90T 69T 21T 76%
/dev/grid/node-x33-y16 87T 68T 19T 78%
/dev/grid/node-x33-y17 93T 72T 21T 77%
/dev/grid/node-x33-y18 86T 67T 19T 77%
/dev/grid/node-x33-y19 88T 72T 16T 81%
/dev/grid/node-x33-y20 91T 66T 25T 72%
/dev/grid/node-x33-y21 92T 65T 27T 70%
/dev/grid/node-x33-y22 87T 69T 18T 79%
/dev/grid/node-x33-y23 93T 67T 26T 72%
/dev/grid/node-x33-y24 86T 65T 21T 75%
/dev/grid/node-x34-y0 86T 64T 22T 74%
/dev/grid/node-x34-y1 86T 65T 21T 75%
/dev/grid/node-x34-y2 94T 68T 26T 72%
/dev/grid/node-x34-y3 87T 72T 15T 82%
/dev/grid/node-x34-y4 86T 66T 20T 76%
/dev/grid/node-x34-y5 88T 67T 21T 76%
/dev/grid/node-x34-y6 90T 72T 18T 80%
/dev/grid/node-x34-y7 502T 495T 7T 98%
/dev/grid/node-x34-y8 93T 65T 28T 69%
/dev/grid/node-x34-y9 91T 71T 20T 78%
/dev/grid/node-x34-y10 91T 64T 27T 70%
/dev/grid/node-x34-y11 89T 68T 21T 76%
/dev/grid/node-x34-y12 93T 70T 23T 75%
/dev/grid/node-x34-y13 91T 71T 20T 78%
/dev/grid/node-x34-y14 87T 69T 18T 79%
/dev/grid/node-x34-y15 93T 72T 21T 77%
/dev/grid/node-x34-y16 86T 72T 14T 83%
/dev/grid/node-x34-y17 88T 68T 20T 77%
/dev/grid/node-x34-y18 88T 72T 16T 81%
/dev/grid/node-x34-y19 91T 68T 23T 74%
/dev/grid/node-x34-y20 89T 64T 25T 71%
/dev/grid/node-x34-y21 91T 67T 24T 73%
/dev/grid/node-x34-y22 89T 65T 24T 73%
/dev/grid/node-x34-y23 85T 67T 18T 78%
/dev/grid/node-x34-y24 88T 70T 18T 79%
/dev/grid/node-x35-y0 91T 71T 20T 78%
/dev/grid/node-x35-y1 92T 73T 19T 79%
/dev/grid/node-x35-y2 94T 67T 27T 71%
/dev/grid/node-x35-y3 88T 69T 19T 78%
/dev/grid/node-x35-y4 91T 69T 22T 75%
/dev/grid/node-x35-y5 90T 73T 17T 81%
/dev/grid/node-x35-y6 88T 65T 23T 73%
/dev/grid/node-x35-y7 506T 497T 9T 98%
/dev/grid/node-x35-y8 88T 71T 17T 80%
/dev/grid/node-x35-y9 85T 65T 20T 76%
/dev/grid/node-x35-y10 94T 66T 28T 70%
/dev/grid/node-x35-y11 88T 66T 22T 75%
/dev/grid/node-x35-y12 91T 64T 27T 70%
/dev/grid/node-x35-y13 85T 64T 21T 75%
/dev/grid/node-x35-y14 87T 71T 16T 81%
/dev/grid/node-x35-y15 93T 66T 27T 70%
/dev/grid/node-x35-y16 89T 64T 25T 71%
/dev/grid/node-x35-y17 93T 64T 29T 68%
/dev/grid/node-x35-y18 90T 66T 24T 73%
/dev/grid/node-x35-y19 91T 73T 18T 80%
/dev/grid/node-x35-y20 93T 69T 24T 74%
/dev/grid/node-x35-y21 94T 70T 24T 74%
/dev/grid/node-x35-y22 90T 73T 17T 81%
/dev/grid/node-x35-y23 89T 70T 19T 78%
/dev/grid/node-x35-y24 92T 72T 20T 78%
/dev/grid/node-x36-y0 94T 64T 30T 68%
/dev/grid/node-x36-y1 87T 67T 20T 77%
/dev/grid/node-x36-y2 93T 65T 28T 69%
/dev/grid/node-x36-y3 90T 72T 18T 80%
/dev/grid/node-x36-y4 85T 73T 12T 85%
/dev/grid/node-x36-y5 91T 64T 27T 70%
/dev/grid/node-x36-y6 87T 73T 14T 83%
/dev/grid/node-x36-y7 504T 499T 5T 99%
/dev/grid/node-x36-y8 90T 73T 17T 81%
/dev/grid/node-x36-y9 92T 70T 22T 76%
/dev/grid/node-x36-y10 89T 72T 17T 80%
/dev/grid/node-x36-y11 93T 70T 23T 75%
/dev/grid/node-x36-y12 85T 67T 18T 78%
/dev/grid/node-x36-y13 89T 67T 22T 75%
/dev/grid/node-x36-y14 94T 68T 26T 72%
/dev/grid/node-x36-y15 91T 72T 19T 79%
/dev/grid/node-x36-y16 87T 66T 21T 75%
/dev/grid/node-x36-y17 85T 65T 20T 76%
/dev/grid/node-x36-y18 90T 66T 24T 73%
/dev/grid/node-x36-y19 89T 69T 20T 77%
/dev/grid/node-x36-y20 88T 64T 24T 72%
/dev/grid/node-x36-y21 90T 66T 24T 73%
/dev/grid/node-x36-y22 93T 70T 23T 75%
/dev/grid/node-x36-y23 85T 71T 14T 83%
/dev/grid/node-x36-y24 89T 64T 25T 71%

@ -0,0 +1,26 @@
cpy a b
dec b
cpy a d
cpy 0 a
cpy b c
inc a
dec c
jnz c -2
dec d
jnz d -5
dec b
cpy b c
cpy c d
dec d
inc c
jnz d -2
tgl c
cpy -16 c
jnz 1 c
cpy 94 c
jnz 82 d
inc a
inc d
jnz d -2
inc c
jnz c -5

@ -0,0 +1,39 @@
#########################################################################################################################################################################################
#...#...............#.#...#.#.......#.....#.....#.....#...............#.....#.#.....#.....#.......#.........#.#.....#.....#.#.#...#...........#.................#.#...#.....#.....#...#.#
#.###.#.###.###.###.#.###.#.###.#####.###.#.#.#.#.#.#.#.#.###.#.#####.#.#.#.#.#.#.###.###.#.#.#.#.###.###.#.#.#.#.###.###.#.#.#.#.#####.#####.#.#.###########.###.#.#.#.###.#.###.#.#.#.#
#.#...#.....#.....#.#.#...#.#.....#.#.#...#.....#.#.#.....#.............#...#.....#...#.#.........#.#.....#.......#...#.#.#.#.#.........#.....#.#.#...#...#...#...#...#.....#.....#...#.#
#.#.###.#.#.#.#.###.#.#.###.#.#####.#.#.#.#.#####.#.#.#.###.#.#.#.#.###.#.#.###.#.#.#.#.###.###.#.#.###.#.#.#.###.###.#.#.#.#.###########.#.###.#.###.#.#.#.#.#.#.#.#.###.#.#.#.###.#.#.#
#...........#.#.#...#.#.....#.....#...........#...........#.....#.............#.......#.#...............#.....#.......#.....#...............#1....#.......#.#.....#.......#...#.....#...#
#.###.#.#.#.#.#.#.#.#########.#.#.#.#.#.###.#.#.#####.#.#.#.###.#.###.#########.#######.#.#.#.#.#############.#####.#.###.#.#.#.#.#####.#.#######.#####.#.#.#.#.#.#####.#.#.#.#.###.#.###
#...#.....#.....#.#.#.#.................#.#.#...#.......#...#...#.#...........#.#...#.......#.#.#...#...#.......#...#.#.#.#.#.....#.....#.....#.......#...#...#...#.......#...#.....#...#
#.#.#####.#.#####.#.#.#.#.###.###.#.#.###.#.#.#.#.#######.#.#.#.#.###.#.###.#####.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#######.#.#####.#.#.#.#######.#.#.#.#.#.#######.#.###.#.#.#.###.###.#.#.#
#...#.....#.......#.#...#.#...#...........#...#...#.#.....#...#.......#.......#.#.#.#...#.#.....#.#...#...#.....#.........#...#.........#.#.....#.....#...#.#.#...#...#.....#.#3#.#.....#
#.#.###.#.#.###.#######.#.#.#.#.###.###.#####.#.#.#.#.#.#.#.#.#.#####.#.###.###.###.#.#.#.#.#.#.#.###.#.#######.###.#.###.#.#.#.###.#.#.#.#.#.#.#.#.###.###.#.#.###.#.#.###.#.#.#.###.#.#
#.......#.#...#.#.#.....#...#...#0..#.#.....#.#.....#.#.#...#...#.....#.....#.#.....#...#.#...#.#...#.#.#...#...#...#...#.#.#.............#.#...#.......#...#...#...#.#.#.....#...#.#...#
#####.#####.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#.#.###.#.###.#.#.#.#.#.#.###.###.###.#.#####.#####.#.#.#.#.#.#.#.#.#.#.#.###.#.###.###########.#.#.#########.#.#.#.#.###.#.###.#.###.#.#.#.#
#...#...#.......#.#.#...#.......#...#...#.#...#.#...#.....#.....#.....#.#.#.........#.#.......#...#.#...#.#.........#...#.........#...#...#.#.....#.....#...#.#.......#.#.....#.........#
#.#.###.#.#####.###.###.#.#.###.###.#.###.#.#.#.#.#.#.#####.#.###.#.#.#.###.###.#####.#.#.#.#.#.###.###.#.#########.#.###.#.#.#.#.#.#.#.#.#.#####.###.#.#.#.#.#.#.#.#.#####.#.###.#.###.#
#.....#.#.#...#.#...#.#.....#.#...........#.....#...#.#...#.#.....#.#.#.....#.......#...#.#.#.......#.......#.........#.........#.#.#.#...#...#.#...#...#.......#.....#.....#.......#...#
###.#.#.#####.#.#.#.#.#.#.#.#.#.#.#.#.#.#######.###.#.#####.#####.###.#.#.#.###.#.#.###.#.#.#.#.#####.#.###.#.#.#.#########.#.###.#.#.#.#.#####.###.#.#.#.###.#####.#.#.#.#.#.#.#.#.#.###
#.#...#.#.......#.#.#...#.......#.#.....#.#.........#...#.....#.................#.........#...#...#.#...#.....#...#...#.#...#...#...#.....#...#.......#.......#.....#...#...#...#...#.#.#
#.#.#####.#.#####.###.#.###.#.###.#.#.#.#.#######.#.###.###.#.#.#########.#.###.#########.###.###.#.###.#.#####.#.###.#.#.#.#.#.#.#.#.###.#.#.#.#########.#####.#.#.###.#.#.#.#.#####.#.#
#.............#2#.#.....#.#.#...#...#.#...........#.........#...#.#.......#.#.........#.#.#.....#.#.......#...#.....#...#.#.#.......#...#.#.......#.......#...#.........#...#...#.....#.#
#.#.###.#.#.#.#.#.#.#.###.#.###.#.#####.###.###.#.#.#.#.#.#.#####.#.#.#.#.###.#.#####.#.#.#.#.#####.#.#####.###.###.#.#.#.#.#.#.#.#.#.#.#.#.###.#.###.#####.#######.#.#.#####.###.###.#.#
#...#...#...#...#.#.#.#...#.#.........#.#.#...............#.#...#...#.....#...#.#...#...#...........#.#.....#.....#...#.#.#...#...#.#.....#.....#...........#...#.....#.....#.#6#.....#.#
#####.#.#####.###.#.#.#.#.#.###.###.#.###.#.#########.#.###.#.#.#.###.###.#####.#####.###.###.#.#.#.###.#.#.#.#.###.#.###.#.#.#.#.###.#.#.#.###.#.#.#.#.#.###.#.#####.#.###.#.#.#.###.#.#
#...#...#.....#.....#...#...#...#.....#.....................#...#.....#.........#.....#.#.#...#.#.........#.....................#...#...#.....#...#...#.....#...#...#.....#.#.......#...#
#.###.#.#.#.#.###.#.###.#.#####.#.###.#.#####.#.#######.#.#.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#####.###.#####.#######.###.#.#.#######.###.#.###.###.#.#.###.#.#.#.#####.#.#.#######.#
#.#...#.........#...#.....#.......#.....#.#.....#.#...#.#...#.#...#.........#.....#.......#.......#.......#.......#...#...#.......#.....#.#...........#.........#.#.#...#.#.#.....#...#.#
#.#.#.#.#.#.#.#.#.#.#########.#####.#.###.#.#####.#.###.#.#.#.#.#########.#.#.#.#.###.###.#####.###.###.#.#.#.#####.#.#.#########.###.#.###.###.###.#.#######.#.###.###.#.###.###.#.###.#
#.....#.....#...#.#.........#...#.....#...#.............#.....#.#.........#...#.......#.................#...#.........#...#...........#.........#.....#.......#.....#.....#.#.#.#...#.#.#
#.###.#.###.#.#.#.#.#.#.#.###.###.#.#######.#.###.#####.#.###.#.#.#.#.#.#.#.#.#######.###.###.#######.#.###.###.#####.#.#.#.#.#.#.#.###.#.###.###.###.#.###.#.###.###.#####.#.#.###.#.###
#.....#...#.#.....#.#...#.....#.....#.#...#...#...........#.#.#...........#.#.#.....#.....#...#...#...#...#.....#.......#.......#.#.........#.....#.....#.#...#.......#.........#.......#
#.#.#.###.#.#.#.###.###.#.###.#####.#.#.#.#.#.#######.###.#.#.#.#####.###.#.#.###.###.#.#.#.#.#.###.#####.###.###.#######.###.#.#.#.#.#.#.#####.#########.#.#.#.#.#.###.#######.###.#.#.#
#.......#.#.#.....#.....#.#...#.....#...#.#.....#...#.#...#.....#.......#...#.#.#...#.....#.......#.......#...#.#.......#...#...#.#.#...#.......#.....#.#...#.#.#...#...#.......#.......#
#.###.###.#.#.###.#.#.#.#.#.#.#.#.#.###.###.#.#.###.#.###.###.#.#.#.#.#.#####.#.#.#.#.#.#########.#.###.#.#.#.#.#.#.#.#.#.#####.###.###.#.#.#.#.#.#.#.#.#.#.###.#.###.#.#####.#######.#.#
#.....#.#5......#.......#...#.#.#...#.#.#.#.....#.....#.#.....#.......#.#...#...#.....#.....#...........#...#.......#.#...#.........#.........#.........#...........#.#.#.....#7....#.#.#
#.#.#.#.###.#####.#####.#.###.#.#.#.#.###.#.#.#.#####.#.#.#.#.#.###.#.###.###.###.#.#.###.#.#.#.#.#######.#.#.#####.#.#.###.#.#####.#.#.#.#.#.#.#.#####.#.#.#.#.#####.#.#.#.#.#####.#.#.#
#...........#.#...#.........#...#.#.#.#.......#.#.....#...#...#.#.....#...#...#.......#.................................#...#...#.#.....#.....#...#...#.#...#...#.#.......#.........#.#.#
###.###.#.###.#.###.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.#.#.###.###.###.###.#.###.#.###.#####.#.#.###.###.#.#####.#.#.#.#####.#.###.#.#.#.#.###.#.###.###.#.#######.#.#.#.#.###.###.#.#.#.#.#
#.......#.#.........#...#.#.#.................#.......#...#.....#...............#...#.#...#...#.......#.#.#.......#.......#...............#4#.......#.....#...#...#.#...#.......#.....#.#
#########################################################################################################################################################################################

@ -0,0 +1,30 @@
cpy a d
cpy 7 c
cpy 365 b
inc d
dec b
jnz b -2
dec c
jnz c -5
cpy d a
jnz 0 0
cpy a b
cpy 0 a
cpy 2 c
jnz b 2
jnz 1 6
dec b
dec c
jnz c -4
inc a
jnz 1 -7
cpy 2 b
jnz c 2
jnz 1 4
dec b
dec c
jnz 1 -4
jnz 0 0
out b
jnz a -19
jnz 1 -21

@ -0,0 +1,3 @@
source 'https://rubygems.org'
gem 'minitest'

@ -0,0 +1,13 @@
GEM
remote: https://rubygems.org/
specs:
minitest (5.10.0)
PLATFORMS
ruby
DEPENDENCIES
minitest
BUNDLED WITH
1.13.6

@ -0,0 +1,72 @@
include Math
Instruction = Struct.new(:direction, :blocks) do
def initialize(direction, blocks)
super(direction, blocks.to_i)
end
end
Turtle = Struct.new(:orientation, :location) do
def self.run(input)
instructions = parse(input)
turtles = [Turtle.new(-PI/2, [0,0])]
instructions.each.with_object(turtles) do |instruction, turtles|
turtles << turtles.last.turn(instruction.direction).step
(instruction.blocks - 1).times do
turtles << turtles.last.step
end
end
turtles
end
def self.parse(input)
input.split(', ').map {|step|
Instruction.new(*step.scan(/(?<turn>\w)(?<blocks>\d+)/)[0])
}
end
def turn(direction)
angle = case direction
when ?R
PI/2
when ?L
-PI/2
else
raise "unexpected direction: #{direction}"
end
Turtle.new(orientation + angle, location)
end
def step
x = location[0] + cos(orientation).to_i
y = location[1] + sin(orientation).to_i
Turtle.new(orientation, [x, y])
end
end
require 'minitest'
# require 'minitest/autorun'
class TestInstructions < Minitest::Test
def test_instructions
assert_distance 5, 'R2, L3'
assert_distance 2, 'R2, R2, R2'
assert_distance 12, 'R5, L5, R5, R3'
end
def assert_distance(expected, instructions)
assert_equal expected, Turtle.run(instructions).last.location.map(&:abs).inject(:+)
end
end
if __FILE__ == $0
turtles = Turtle.run(DATA.read)
p turtles.last
locations = turtles.map(&:location)
p locations.find {|location| locations.count(location) > 1 }
end
__END__
R4, R3, L3, L2, L1, R1, L1, R2, R3, L5, L5, R4, L4, R2, R4, L3, R3, L3, R3, R4, R2, L1, R2, L3, L2, L1, R3, R5, L1, L4, R2, L4, R3, R1, R2, L5, R2, L189, R5, L5, R52, R3, L1, R4, R5, R1, R4, L1, L3, R2, L2, L3, R4, R3, L2, L5, R4, R5, L2, R2, L1, L3, R3, L4, R4, R5, L1, L1, R3, L5, L2, R76, R2, R2, L1, L3, R189, L3, L4, L1, L3, R5, R4, L1, R1, L1, L1, R2, L4, R2, L5, L5, L5, R2, L4, L5, R4, R4, R5, L5, R3, L1, L3, L1, L1, L3, L4, R5, L3, R5, R3, R3, L5, L5, R3, R4, L3, R3, R1, R3, R2, R2, L1, R1, L3, L3, L3, L1, R2, L1, R4, R4, L1, L1, R3, R3, R4, R1, L5, L2, R2, R3, R2, L3, R4, L5, R1, R4, R5, R4, L4, R1, L3, R1, R3, L2, L3, R1, L2, R3, L3, L1, L3, R4, L4, L5, R3, R5, R4, R1, L2, R3, R5, L5, L4, L1, L1

@ -0,0 +1,87 @@
class Keypad
MAP = [%w[ . . 1 . . ],
%w[ . 2 3 4 . ],
%w[ 5 6 7 8 9 ],
%w[ . A B C . ],
%w[ . . D . . ]]
attr_reader :x, :y
def initialize
@x, @y = 0, 2
end
def button
MAP[y][x]
end
def <<(dir)
delta = case dir
when ?U
[0, 1]
when ?D
[0, -1]
when ?L
[-1, 0]
when ?R
[1, 0]
else
raise "unexpected direction: '#{dir}'"
end
next_x = x + delta[0]
next_y = y - delta[1]
next_x = [[4, next_x].min, 0].max
next_y = [[4, next_y].min, 0].max
@x, @y = next_x, next_y if MAP[next_y][next_x] != ?.
end
end
if __FILE__ == $0
keypad = Keypad.new
code = DATA.read.lines.map {|line|
line.strip.chars.each do |char|
keypad << char
end
keypad.button
}
puts code.join
end
require 'minitest'
# require 'minitest/autorun'
class TestDay2 < Minitest::Test
def test_day2
keypad = Keypad.new
assert_equal ?5, keypad.button
'ULL'.chars.each do |char|
keypad << char
end
assert_equal ?5, keypad.button
'RRDDD'.chars.each do |char|
keypad << char
end
assert_equal ?D, keypad.button
'LURDL'.chars.each do |char|
keypad << char
end
assert_equal ?B, keypad.button
'UUUUD'.chars.each do |char|
keypad << char
end
assert_equal ?3, keypad.button
end
end
__END__
RDRRDLRRUDRUUUULDDRDUULLDUULDURDDUDRULDLUDDRLRDUDDURRRRURDURLLRDRUUULDLLLURDRLLULLUULULLLDLLLRRURRLRDUULRURRUDRRDRLURLRURLLULRUURRUURDDLDRDLDLLUDUULLLUUUUDULLDRRUURLDURDDDDDRLLRRURDLUDRRUUDLRRLLRDURDUDDDLRDDRDLRULLUULRULRLLULDDRURUUDLDDULDRLLURDDUDDUDRDUDLDRRRDURRLDRDRLDLLDUDDDULULRRULRLLURDRRDDUUUUUULRUDLRRDURDLRDLUDLDURUDDUUURUDLUUULDLRDURDLDUUDLDDDURUUDUUDRLRDULLDUULUDRUDRLRRRDLLDRUDULRRUDDURLDRURRLLRRRDRLLDLULULRRUURRURLLUDRRLRULURLDDDDDURUDRRRRULLUUDLDDLUUL
ULURUDLULDULDLLDDLLLDRRLLUDRRDRDUDURUDLRRRRUDRDDURLRRULLDLURLDULLUDDLUDURDUURRRRLDLRLDDULLRURLULLDDRUDLRRRLDRRRDLDRLLDDRRDDLUUDRUDDLULRURLDURRLLDLRUDLLRRUULUDRLLLRLDULURRRRRDDUURDRRUUDULRUULDDULRLUDLUDDULLRLRDDLRLLURRRULDLRRRUURRLDDRDLRDLRRDRDLDRDUDRDURUUDRLRRULRDLLDLLRRRDRLDRLRLRLLLURURDULUUDDRLLDDDRURRURLRDDULLRURUDRRDRLRRRLDLRLRULDRLUURRUUULRLDLLURLLLDLLLDRRDULRURRRRLUDLLRRUDLRUDRURDRRDLUUURRDLRLRUUUDURDLUDURRUUDURLUDDDULLDRDLLDDDRLDDDRLDLDDDDUDUUDURUUDULRDDLULDRDRLURLUDRDLUULLULRLULRDDRULDUDDURUURULUDLUURLURU
URLURDDRLLURRRLDLDLUDUURDRUDLLLRRDLUUULRRLURRRLUDUDLRLDDRUDLRRRULUDUDLLLULULLLRUDULDDDLLLRRRLRURDULUDDDULDLULURRRDLURDLRLLDUDRUDURDRRURULDRDUDLLRDDDUDDURLUULLULRDRRLDDLDURLRRRLDRDLDULRULRRRLRLLDULRDLURLRUUDURRUUDLLUDRUDLRLDUUDLURRRDDUUDUDRLDLDDRURDDLLDDRDLRLRDLLLUDLUUDRLRLRDDRDLRDLLUULLLLUULLDLLDLRDLRLRRLUUDLLRLRUDRURULRLRLULUDRLLUDDUDDULRLDDRUUUURULDRRULLLDUURULUDRLLURLRRLDLRRLDDRRRDUDDUDLDDLULUDDUURDLLLRLDLRDRUUUUUDDDLDRDDRRRLRURRRRDURDRURUDLURRURDRLRUUDDLDRRULLDURDRLRRDURURUULRDUDLDRDDLULULRDRRUDDRLLRLULRLLUUDRDUUDDUDLRUUDLLUULLRUULUDDLURRRLLDRLRRLLRULLDUULURLLLLUUULDR
LDUURULLRLDRRUUDUUUURUUUDDDURRDDLRDLLRDDRULDDUURUDDURLLUDRDUDRDULDRRRLULUDRULLLLDRLLDRDLDLLRURULUDDDDURDDDRLLUDLDRULRDLDUDDDUUDLLRLLLDLRLRLRRUDDULDDDUDLDDLUDDULDLLLLULLLLDDURDDURRRDDRLRLLUDLLUDDDUDURUDRLRDRULULDDRULDLULULLRUULRLDULUURRDRDRRDLDDDRRLUULDLUDRDDUDLRURULLDDURLDDRULUDLDDDRDRLLRDLLUURRRURDRLRURLDDLURDRURDDURLLRLRUDUUDLDUDURRDDURDRDDUDDDUDUURURDDLLRUUDDRRDULDDLLDLRULUULRUUDLLDRLULDULDDUDLULRULDRLLDUULDDDLRLLRLULDDULDDRRRLDRRLURULRDDRDLRRDUDDRDRRRRUDUDLLRRDRRURRUURDRULDDUDURLUDDURDUDRDUULLDRURUURURDRRLDDLDLUURLULRUDURDRUUURRURRDRUDRUURDURLRULULLLULDLLDLRRLDRDLUULUDDDLRDRLRLDRUDUDRLLRL
LURLUURLURDUUDRUDLDLLURRRDLDRRRULDDRRDRDUUDRUDURDDDURLUDDLULUULRRLLRULUDRDDRRRLDURDUDDURDDDLRLDDLULLDRDDLUUDUURRRLULRUURRRRLLULDUDRDUURRRURRDRDUDUDLUDULLDLDDRLUDRURDULURLURRLLURLLLRLUURLRUDLUDDRLURRUULULRLURRURUDURDLDLDDUDDRDLLRLLRRULDDRUDURUDDDUDLLRDLRUDULLLRRRUURUDUUULLRDUDRURUDULLDLLUUUDRULRLLRRDDDDUDULDRDRLLDDLLDDDURRUDURLDLRDRUURDDURLRDRURLRRLLRLULDRRLRUDURDUURRLUUULUDDDLRLULRDRLLURRRDLURDUUDRRRLUURRLLUDLUDLUULLRRDLLRDDRURRUURLDDLRLRLRUDLDLRLRDRRDLLLRDLRDUDLLDDDRD

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,22 @@
require 'digest/md5'
door_id = 'wtnhxymk'
password = Array.new(8, nil)
VALID = (0..7).map(&:to_s).to_a
index = 0
while password.any?(&:nil?)
puts index if index % 1000000 == 0
hash = Digest::MD5.hexdigest("#{door_id}#{index}")
if hash.start_with?('00000')
i = hash[5]
if VALID.include?(i) && password[i.to_i].nil?
password[i.to_i] = hash[6]
p hash, password
end
end
index += 1
end
puts password.join

@ -0,0 +1,607 @@
counts = Array.new(8) { Hash.new(0) }
DATA.read.lines.each.with_object(counts) do |line, counts|
(0..7).each do |i|
counts[i][line[i]] += 1
end
end
p counts.map {|h| h.sort_by(&:last).first.first }.join
__END__
eqvmfqnf
jvkezmqt
zcssqwlw
cuacncgg
ikmpzpoh
dzpzobdl
qlsnuhuq
fwqnoklz
cibgplfq
ktsqfcrv
vcknjnnx
upaiaprz
bpqmolbq
dflhnpnk
heqjflch
cmewgodc
aaorgxkn
plekphpw
fcofrbnm
bmnrygtb
rqsqsqio
rnlntwxa
cxjqqfyl
jxjnxchb
kfgutxmi
cbciszxd
irakoonu
pcgfnycg
fgeivexo
ujxdaehw
ejkvrych
nhlklbgr
etjuhgry
mkgkmykm
teuhrfto
juqfslbn
tbwxabzi
ngdnwsey
amcibkyo
xlvxwqpj
vdbzuvkh
gkagbzep
kqxzkeip
bxccztho
vqrywqlc
jbzhecjc
ozkulgxo
uiwbofuk
vfwhdnao
tycxucwd
jvhuljfs
xxhqhruc
upnndiiz
andxywil
lowofbqv
iroqzrry
nmkkqqjb
daijrfna
jmcstxlq
jdefvuaa
nkbmowfi
agotazda
kufoymrn
yijwfjyi
hyqvaouj
soueuhln
oomsbkmh
buadtssf
rvgpeeza
hjiymcmd
ebgivdap
xzieipbg
ttpudwqt
hndwuncw
wqypfkvf
jqxuaipm
fzwlgxxq
ddshbtya
ardlcgyi
soznvuyw
vyizuolp
ckfaxyvs
nbsjkibi
lsrkrdzp
oqoffwxa
bdugjlsm
rtcsylfd
fezoiliq
zwpaphcb
sdlouhyf
cfejwvls
xehddxku
edhrtdcv
ehouagvy
hoyxjfsj
quggpnpx
muqbijbe
rcnniddd
kzfeiaui
sywienef
xpxftuvq
dtbhnslt
mpcpkmfa
wysutlci
fmqomicz
mhshprxr
uxwfcftt
ehbonsrl
pjobilxx
chiebfox
lqfxgyqg
vupcjatm
wfljafhc
iygojeny
gqxmgneu
nhlwllak
xnkqpulv
awijbvef
pbcrrwqo
dobsejtb
dqdoapkc
hngrxdtx
dodsxysb
bmtyelak
cctuwwvt
rytlmoyr
fqnbuxdi
irrqladc
wnvtsneg
ugqqdmlj
nljnjiod
knidxxzh
dfymoqgt
fwgtjafh
fpdioivz
tqbewmti
mcqtbbee
pivfrpou
tdyguuos
eldmvvmi
oaiqnizz
fyqpxgwa
lzcxsazq
zhsoljwz
qnzafmjl
oopnnndl
cozehoor
bspuwzxm
ubtunnep
smdhpvxr
nsvxiwje
mmqcklsm
hhxaciaq
zzgoxhws
fvntouun
skxzmzyg
znptwuqu
aknwvojo
wftmjrsf
gahrordj
oegnykag
lvlqswph
qsowvoem
sjspasfp
ygjohzfd
jeuxigsi
lgxdtudx
qadlkrel
lpfxosdq
sgaoqkzr
rtlvuhfv
ftbbsgbn
kjxttiqu
gylikswu
lquhgmrs
hxrjagjm
epxxekgx
uwwlcbrx
feincdjp
uyxhfhsc
nojuykoh
psjuuqwu
gtlohqkz
sbzsbgrw
nbhwuxfb
phmtunrh
zmfbkvgv
mjumfpia
gkubcshe
jmavrhyd
cgffkftg
msurhdct
bvchukal
psxaluvg
tvgwjhhp
chyizcxv
dumebzkd
cjpzbkzk
ngrgseyn
xmwcmaaz
puyrbiup
xxkpznis
rguwrpua
jmolhvnn
kpeqtlan
zzgvoxlp
erbintcn
kcykvysv
ixildajc
tnvgihwe
iqwgozpj
txkgyflb
vsyzebrw
ehnbcjef
hfevkbhf
wihlqtmp
vmrmnygo
ulvsuvsn
wgxnwihd
lexgbpsv
kxqcjoeb
daodpsbb
azyqmyhv
mvzcatwb
jtvqkjrv
rtdsaqqd
xrhzmnzl
wgfiwjrh
hgrgqqxm
nwwcxoyq
qlqyhpzs
ovujfily
pzvyeryk
strswprn
nrxclypc
sfusjxzi
pclbdadw
sjhggndb
xjcutuyt
qjjjeytj
qqjrkdlb
pyzodjdh
brnmlkmi
lgipidfp
ttrfbjry
iidwekro
vnwlnyma
ylxatduo
eiokdbqr
laezjjte
kkjhfsvp
buaegtpg
vzgqletc
pkdseade
nvpyxokq
yiysgxpe
xqhtubam
lcstpvke
nnskqssg
mkrbdovg
camkeppm
iqjvotay
bodlfgkj
jiigwvzc
ixpghywy
qlzyjgue
ugyjqtzn
odeuuiir
yfhianfx
seewayqj
lstpeuja
paqqnxsr
guwkidny
susussgu
ezcayehr
tdzgvcqf
vckcnsio
obawbapm
ipebazzk
tmcpmiou
hpdlfwor
ygxlfzzr
ltyxhtbx
olzqonbx
grsxreqs
bvkjcoux
fxtuxuub
fcbxdenm
smilcfvz
ewbndkiz
httsnfqu
ghorvefw
anevvqir
sajdzwho
becdemdn
vxktmxsj
xyawkeuw
pdefbxmh
yejymgfr
mipvhnsc
tjdyqpzd
rbvqirmd
mscuflvd
draqqcda
xfegqcjg
auypywpb
gitgzstq
zveqbzgt
wxrpedre
haptyecu
tkeexmhe
ujijprbd
xjiyczwq
ehpygnrr
guvejwyt
zmtsftky
wqtklwiz
lwlessio
lrknmhzd
pkdkwevt
ncryoeth
hjsqtpxu
ivmqrwok
qozgijgu
ueujvbbe
nfxgrmsd
zeetrgdl
drfbcgxo
rjjeraeb
hshozlgv
sfgvrnez
zaoctlsa
hebtzqvy
qckvuyif
wxyszmev
ddxfwklt
jqlzpfvu
wimoefwx
kabvtrno
pbebkvkm
govfwjof
xfjkvoup
fuzxcese
zbavvmyy
mwvkrnjg
gtkyelff
bffyzhnt
vlffqryw
ofncqcqw
cnzzrjjj
txpzvykz
ukkgeavq
wdnieioq
avosnedk
ipaavrqp
eeuurfat
sfhhwqzw
vjzopzad
kdbjonqz
uaksjfuc
lumpaomf
ysebmwel
dobryhxj
oaymjqwh
qjfflojj
zqmfgwre
uimjngfs
ihwelccg
yetrodjy
aifvwtws
xiyruzqr
anuvhykm
lelbjsno
csjwqotd
pptsysey
joptcdmq
tghbxpmq
jduwbxiy
obcdlahg
dxwrzytc
axfrxlgz
gepnmvel
ztmcynch
otnicgga
bdzobaoe
vkljxwnm
qvhmitgh
yflyxbjn
qshihqki
debaxqpw
fhfcjogj
huwpnaxx
jpwnrjbc
waylsrcm
aurdpcqc
yanpouht
ybwbpcak
uzvvspnj
tftluckv
uwmditoa
wsndxybi
dotcxasi
lxgmptwn
bpdmcbgt
dpjqvvck
jmgwudli
rimvxcoa
vdlacqbl
qtzwuqny
olzuzuuq
grlyyegi
mhgtadti
yrfdffzj
wbxadryy
bhaniozq
jdishqcx
kmiatkjj
asmxdrmv
riqdknna
fsuetmeg
iikajhgb
ioswsaws
yygpvtfb
egjoltik
bypcbzpk
zaumpggx
sdizezlv
xoyallwy
gicvajdl
qzowhuxa
iyftbzns
srzjxhve
xwasqzay
qznuxpqj
mlnjztxf
rxkcymao
huvxpllx
fmnrqasq
mwwigmka
yovjkmou
kvdrltte
nymvepew
vnrjykzc
unoegpvv
trrejbob
zwsdnqnb
ljsztmgl
tiznomfv
zxtxholt
csufzpiw
jgbjpucz
mpakkeil
ixmbvvbi
ejkhcxjj
zaokljpl
oeocaxdv
ytlpsbcx
hpfserxf
nzregysc
etevckof
bcqkqdvb
xzdhhick
gystpgoo
ciiyzxxr
kwstdxnn
ztregxhx
qhvkjoqe
ugirgwax
nhukpdut
yfiibmmd
cwkayjcp
ebmlabrp
kvjhyrag
wbphpfkc
ucqvhibs
dwuavsyy
jwrdsobl
hytijctt
plcumjhv
hwexsihm
ppmfzgqt
moumyuiw
zvgbsabj
yraygmws
vopzuhor
hafhljwp
gmqpchdg
yyahpihs
xvqakyyp
deamarun
yunihcvw
gcdjqqmu
kctibuxy
gcvlcfhc
ydwoxfvg
epszfvuh
xjjvwpbz
gzpdnthj
mnkrjgwz
ldfwvvfq
tydqesvl
envwzaqv
xvwyzkpe
rmpgcjeo
pkupgxup
ekqizsjl
agvenhgu
vscaqtri
rwfjrjpg
imthkcta
sjpmwqmg
fptfgekn
ohbwdbjm
ccfrphaj
gyeaqkog
onybscve
qztmoant
abjnbrpd
zompdzuf
bamomvbw
kzmmgexu
wzoxohtn
wvgmvwdt
nlgkxmbu
vyoddxyf
phmrizhk
zhksysjf
atcfvzlx
iyabqkly
rnwidjpm
cgwddumw
fcoylnzw
lsxosfra
vbcdgfiw
aenlmdgh
fvtmormn
rllxkznc
asocydmo
zcltimlr
hrqmccpt
dfmlsvtz
ntuhkbws
oziqleds
wkzbguis
coapfihl
irzpsuql
uxaowrls
tdbefhcf
wsyusuph
lpbdrmyn
slrzkkms
wqvzwiyq
vinahrsd
thsnmqjr
kwrzmakz
ifhclifl
wkqahikb
rwnchlkr
rkhpdbbk
vqnzigbf
olzziafs
qcylpbtk
fzhtmgji
qvnyctmb
ouolgwup
xkbrykjx
apbamszk
mlrlmpoh
kdneakuk
rrhhrtfk
cbgzlbgz
mfxencal
bkctqwpe
rjdxhqof
ogcbntmp
bbftqdfk
kikdidvm
mnjgwven
yurxwsge
qlrdtzad
jalffvnu
tayfycwr
jhivnvaw
yuvffepz
mwhczdkv
xltzklis
iellkyqk
krpktxhh
rkawdywu
pqqitomj
nrhhtvtv
gwerzhwc
qlsgifir
ssvyspem
udnnmvxk
albkdbsh
obxcrucu
dnyytrcx

File diff suppressed because it is too large Load Diff

@ -0,0 +1,258 @@
class Screen
attr_reader :width, :height, :pixels
def initialize(width, height)
@width, @height = width, height
@pixels = Array.new(height) { Array.new(width, false) }
end
def to_s
pixels.map {|row| row.map {|pixel| pixel ? ?# : ?. }.join }.join("\n")
end
def <<(instruction)
case instruction
when /rect (\d+)x(\d+)/
$1.to_i.times do |x|
$2.to_i.times do |y|
pixels[y][x] = true
end
end
when /rotate column x=(\d+) by (\d+)/
col = pixels.map {|row| row[$1.to_i] }.rotate(-$2.to_i)
pixels.each do |row|
row[$1.to_i] = col.shift
end
when /rotate row y=(\d+) by (\d+)/
row = pixels[$1.to_i].rotate(-$2.to_i)
pixels[$1.to_i] = row
end
end
end
if __FILE__ == $0
screen = Screen.new(50, 6)
DATA.lines.each do |line|
screen << line
end
puts screen
puts screen.pixels.map {|row| row.count {|pixel| pixel }}.inject(:+)
end
require 'minitest'
# require 'minitest/autorun'
class TestScreen < Minitest::Test
def test_screen
screen = Screen.new(7, 3)
assert_equal <<-PIXELS.chomp, screen.to_s
.......
.......
.......
PIXELS
screen << 'rect 3x2'
assert_equal <<-PIXELS.chomp, screen.to_s
###....
###....
.......
PIXELS
screen << 'rotate column x=1 by 1'
assert_equal <<-PIXELS.chomp, screen.to_s
#.#....
###....
.#.....
PIXELS
screen << 'rotate row y=0 by 4'
assert_equal <<-PIXELS.chomp, screen.to_s
....#.#
###....
.#.....
PIXELS
screen << 'rotate column x=1 by 1'
assert_equal <<-PIXELS.chomp, screen.to_s
.#..#.#
#.#....
.#.....
PIXELS
end
end
__END__
rect 1x1
rotate row y=0 by 20
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 4
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 3
rect 2x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 5
rect 1x1
rotate row y=0 by 2
rect 1x1
rotate row y=0 by 6
rect 5x1
rotate row y=0 by 2
rect 1x3
rotate row y=2 by 8
rotate row y=0 by 8
rotate column x=0 by 1
rect 7x1
rotate row y=2 by 24
rotate row y=0 by 20
rotate column x=5 by 1
rotate column x=4 by 2
rotate column x=2 by 2
rotate column x=0 by 1
rect 7x1
rotate column x=34 by 2
rotate column x=22 by 1
rotate column x=15 by 1
rotate row y=2 by 18
rotate row y=0 by 12
rotate column x=8 by 2
rotate column x=7 by 1
rotate column x=5 by 2
rotate column x=2 by 1
rotate column x=0 by 1
rect 9x1
rotate row y=3 by 28
rotate row y=1 by 28
rotate row y=0 by 20
rotate column x=18 by 1
rotate column x=15 by 1
rotate column x=14 by 1
rotate column x=13 by 1
rotate column x=12 by 2
rotate column x=10 by 3
rotate column x=8 by 1
rotate column x=7 by 2
rotate column x=6 by 1
rotate column x=5 by 1
rotate column x=3 by 1
rotate column x=2 by 2
rotate column x=0 by 1
rect 19x1
rotate column x=34 by 2
rotate column x=24 by 1
rotate column x=23 by 1
rotate column x=14 by 1
rotate column x=9 by 2
rotate column x=4 by 2
rotate row y=3 by 5
rotate row y=2 by 3
rotate row y=1 by 7
rotate row y=0 by 5
rotate column x=0 by 2
rect 3x2
rotate column x=16 by 2
rotate row y=3 by 27
rotate row y=2 by 5
rotate row y=0 by 20
rotate column x=8 by 2
rotate column x=7 by 1
rotate column x=5 by 1
rotate column x=3 by 3
rotate column x=2 by 1
rotate column x=1 by 2
rotate column x=0 by 1
rect 9x1
rotate row y=4 by 42
rotate row y=3 by 40
rotate row y=1 by 30
rotate row y=0 by 40
rotate column x=37 by 2
rotate column x=36 by 3
rotate column x=35 by 1
rotate column x=33 by 1
rotate column x=32 by 1
rotate column x=31 by 3
rotate column x=30 by 1
rotate column x=28 by 1
rotate column x=27 by 1
rotate column x=25 by 1
rotate column x=23 by 3
rotate column x=22 by 1
rotate column x=21 by 1
rotate column x=20 by 1
rotate column x=18 by 1
rotate column x=17 by 1
rotate column x=16 by 3
rotate column x=15 by 1
rotate column x=13 by 1
rotate column x=12 by 1
rotate column x=11 by 2
rotate column x=10 by 1
rotate column x=8 by 1
rotate column x=7 by 2
rotate column x=5 by 1
rotate column x=3 by 3
rotate column x=2 by 1
rotate column x=1 by 1
rotate column x=0 by 1
rect 39x1
rotate column x=44 by 2
rotate column x=42 by 2
rotate column x=35 by 5
rotate column x=34 by 2
rotate column x=32 by 2
rotate column x=29 by 2
rotate column x=25 by 5
rotate column x=24 by 2
rotate column x=19 by 2
rotate column x=15 by 4
rotate column x=14 by 2
rotate column x=12 by 3
rotate column x=9 by 2
rotate column x=5 by 5
rotate column x=4 by 2
rotate row y=5 by 5
rotate row y=4 by 38
rotate row y=3 by 10
rotate row y=2 by 46
rotate row y=1 by 10
rotate column x=48 by 4
rotate column x=47 by 3
rotate column x=46 by 3
rotate column x=45 by 1
rotate column x=43 by 1
rotate column x=37 by 5
rotate column x=36 by 5
rotate column x=35 by 4
rotate column x=33 by 1
rotate column x=32 by 5
rotate column x=31 by 5
rotate column x=28 by 5
rotate column x=27 by 5
rotate column x=26 by 3
rotate column x=25 by 4
rotate column x=23 by 1
rotate column x=17 by 5
rotate column x=16 by 5
rotate column x=13 by 1
rotate column x=12 by 5
rotate column x=11 by 5
rotate column x=3 by 1
rotate column x=0 by 1

File diff suppressed because one or more lines are too long

@ -0,0 +1,341 @@
class Factory
attr_reader :bots, :bins
def initialize
@bots = Hash.new {|h,k| h[k] = Bot.new(self) }
@bins = Hash.new {|h,k| h[k] = Bin.new }
end
def <<(instruction)
case instruction
when /value (\d+) goes to bot (\d+)/
bots[$2.to_i] << $1.to_i
when /bot (\d+) gives low to (.+) (\d+) and high to (.+) (\d+)/
bot = bots[$1.to_i]
bot.outs = [out($2, $3.to_i),
out($4, $5.to_i)]
else
raise "invalid instruction: #{instruction}"
end
end
private
def out(type, id)
case type
when 'bot'
bots[id]
when 'output'
bins[id]
else
raise "invalid type: #{type}"
end
end
end
class Bot
attr_reader :factory, :values, :outs, :log
def initialize(factory)
@factory = factory
@values = []
@log = []
end
def <<(value)
values << value
try_run
end
def outs=(outs)
@outs = outs
try_run
end
private
def try_run
return unless outs && values.size == 2
log << values.sort
low, high = values.sort
values.clear
outs[0] << low
outs[1] << high
end
end
class Bin
attr_reader :value
def <<(value)
@value = value
end
end
if __FILE__ == $0
factory = Factory.new
DATA.each_line do |line|
factory << line
end
p factory.bins.values_at(0, 1, 2).map(&:value).inject(:*)
end
require 'minitest'
# require 'minitest/autorun'
class TestDay10 < Minitest::Test
def test_day_10
instructions = <<INSTRUCTIONS
value 5 goes to bot 2
bot 2 gives low to bot 1 and high to bot 0
value 3 goes to bot 1
bot 1 gives low to output 1 and high to bot 0
bot 0 gives low to output 2 and high to output 0
value 2 goes to bot 2
INSTRUCTIONS
factory = Factory.new
instructions.lines.each do |line|
factory << line
end
assert_equal [5, 2, 3], factory.bins.sort_by {|k,_| k }.map(&:last).map(&:value)
end
end
__END__
bot 135 gives low to bot 27 and high to bot 166
bot 57 gives low to bot 4 and high to bot 186
bot 115 gives low to output 2 and high to bot 80
bot 44 gives low to bot 175 and high to bot 88
bot 167 gives low to bot 42 and high to bot 168
bot 18 gives low to bot 32 and high to bot 89
bot 199 gives low to bot 75 and high to bot 40
bot 129 gives low to bot 178 and high to bot 147
bot 163 gives low to bot 49 and high to bot 160
value 2 goes to bot 143
bot 176 gives low to bot 139 and high to bot 117
bot 194 gives low to bot 11 and high to bot 37
bot 99 gives low to bot 163 and high to bot 138
value 53 goes to bot 9
bot 159 gives low to output 1 and high to bot 207
bot 0 gives low to bot 105 and high to bot 13
bot 6 gives low to bot 66 and high to bot 116
bot 81 gives low to bot 54 and high to bot 10
bot 27 gives low to bot 188 and high to bot 199
bot 186 gives low to bot 84 and high to bot 123
bot 154 gives low to bot 21 and high to bot 107
bot 188 gives low to bot 92 and high to bot 75
bot 164 gives low to bot 115 and high to bot 28
bot 106 gives low to bot 48 and high to bot 155
bot 193 gives low to bot 101 and high to bot 110
bot 136 gives low to bot 166 and high to bot 152
bot 7 gives low to bot 156 and high to bot 24
bot 103 gives low to bot 182 and high to bot 0
bot 101 gives low to bot 16 and high to bot 72
bot 86 gives low to bot 102 and high to bot 48
bot 78 gives low to bot 177 and high to bot 113
value 17 goes to bot 198
bot 54 gives low to bot 161 and high to bot 111
bot 46 gives low to bot 74 and high to bot 39
bot 22 gives low to bot 56 and high to bot 161
bot 5 gives low to bot 186 and high to bot 123
bot 137 gives low to bot 202 and high to bot 85
bot 202 gives low to bot 108 and high to bot 118
bot 174 gives low to bot 0 and high to bot 21
bot 119 gives low to bot 68 and high to bot 53
bot 151 gives low to bot 83 and high to bot 164
bot 160 gives low to bot 33 and high to bot 97
bot 76 gives low to bot 40 and high to bot 120
bot 60 gives low to bot 103 and high to bot 174
bot 203 gives low to bot 120 and high to bot 132
bot 157 gives low to bot 116 and high to bot 11
bot 98 gives low to bot 208 and high to bot 16
bot 142 gives low to bot 114 and high to bot 71
bot 143 gives low to bot 198 and high to bot 146
bot 30 gives low to bot 59 and high to bot 135
bot 87 gives low to bot 39 and high to bot 104
bot 161 gives low to bot 173 and high to bot 125
bot 104 gives low to bot 34 and high to bot 68
bot 70 gives low to bot 112 and high to bot 176
bot 92 gives low to bot 122 and high to bot 46
bot 148 gives low to bot 28 and high to bot 58
bot 49 gives low to output 0 and high to bot 33
bot 140 gives low to bot 136 and high to bot 134
bot 16 gives low to bot 170 and high to bot 79
bot 13 gives low to bot 204 and high to bot 22
bot 189 gives low to bot 148 and high to bot 45
bot 89 gives low to bot 73 and high to bot 86
value 31 goes to bot 50
bot 166 gives low to bot 199 and high to bot 76
bot 178 gives low to output 5 and high to bot 159
bot 58 gives low to bot 167 and high to bot 126
bot 149 gives low to bot 180 and high to bot 153
bot 131 gives low to bot 97 and high to bot 66
bot 64 gives low to bot 192 and high to bot 44
bot 117 gives low to bot 140 and high to bot 134
bot 156 gives low to bot 174 and high to bot 154
value 11 goes to bot 19
bot 1 gives low to bot 26 and high to bot 144
bot 171 gives low to output 7 and high to bot 150
bot 31 gives low to bot 110 and high to bot 127
value 5 goes to bot 162
bot 9 gives low to bot 8 and high to bot 128
bot 93 gives low to bot 109 and high to bot 188
value 47 goes to bot 184
bot 80 gives low to output 19 and high to bot 42
bot 155 gives low to bot 149 and high to bot 52
bot 108 gives low to output 14 and high to bot 47
bot 165 gives low to bot 200 and high to bot 141
bot 184 gives low to bot 162 and high to bot 20
bot 50 gives low to bot 143 and high to bot 4
bot 28 gives low to bot 80 and high to bot 167
bot 66 gives low to bot 151 and high to bot 55
bot 201 gives low to bot 124 and high to bot 41
bot 204 gives low to bot 94 and high to bot 56
bot 134 gives low to bot 152 and high to bot 203
bot 51 gives low to bot 36 and high to bot 142
bot 2 gives low to bot 52 and high to bot 201
bot 183 gives low to bot 38 and high to bot 78
bot 26 gives low to bot 142 and high to bot 69
bot 182 gives low to bot 3 and high to bot 105
bot 72 gives low to bot 79 and high to bot 209
bot 8 gives low to bot 185 and high to bot 65
bot 75 gives low to bot 46 and high to bot 87
bot 38 gives low to bot 82 and high to bot 177
bot 147 gives low to bot 159 and high to bot 207
bot 195 gives low to bot 104 and high to bot 119
bot 63 gives low to bot 126 and high to bot 172
bot 144 gives low to bot 69 and high to bot 82
bot 83 gives low to output 3 and high to bot 115
bot 43 gives low to bot 194 and high to bot 91
value 37 goes to bot 8
bot 82 gives low to bot 193 and high to bot 31
bot 150 gives low to output 18 and high to bot 49
value 23 goes to bot 182
bot 67 gives low to bot 61 and high to bot 165
bot 77 gives low to bot 107 and high to bot 122
bot 130 gives low to bot 141 and high to bot 30
value 73 goes to bot 12
bot 41 gives low to bot 99 and high to bot 208
bot 170 gives low to bot 131 and high to bot 6
bot 120 gives low to bot 195 and high to bot 132
bot 118 gives low to bot 47 and high to bot 129
bot 100 gives low to bot 150 and high to bot 163
value 67 goes to bot 185
bot 152 gives low to bot 76 and high to bot 203
bot 162 gives low to bot 67 and high to bot 205
value 7 goes to bot 32
bot 121 gives low to bot 172 and high to bot 158
bot 65 gives low to bot 57 and high to bot 5
bot 122 gives low to bot 81 and high to bot 74
bot 21 gives low to bot 13 and high to bot 17
bot 23 gives low to bot 133 and high to bot 1
bot 36 gives low to bot 201 and high to bot 114
bot 138 gives low to bot 160 and high to bot 131
bot 55 gives low to bot 164 and high to bot 148
bot 123 gives low to bot 70 and high to bot 176
value 61 goes to bot 61
bot 107 gives low to bot 17 and high to bot 81
bot 19 gives low to bot 60 and high to bot 156
value 41 goes to bot 12
value 29 goes to bot 18
value 13 goes to bot 60
bot 62 gives low to bot 20 and high to bot 64
bot 40 gives low to bot 87 and high to bot 195
bot 90 gives low to bot 64 and high to bot 112
bot 69 gives low to bot 71 and high to bot 193
bot 35 gives low to output 4 and high to bot 108
bot 177 gives low to bot 31 and high to bot 113
bot 59 gives low to bot 93 and high to bot 27
bot 187 gives low to bot 89 and high to bot 94
bot 73 gives low to output 9 and high to bot 102
bot 45 gives low to bot 58 and high to bot 63
bot 39 gives low to bot 23 and high to bot 34
bot 110 gives low to bot 72 and high to bot 190
bot 181 gives low to bot 15 and high to bot 93
bot 95 gives low to bot 7 and high to bot 15
bot 33 gives low to output 13 and high to bot 169
bot 20 gives low to bot 205 and high to bot 192
bot 158 gives low to bot 85 and high to bot 29
bot 61 gives low to bot 14 and high to bot 200
value 71 goes to bot 103
bot 192 gives low to bot 130 and high to bot 175
bot 112 gives low to bot 44 and high to bot 139
bot 96 gives low to bot 144 and high to bot 38
bot 32 gives low to output 11 and high to bot 73
bot 180 gives low to output 10 and high to bot 171
value 59 goes to bot 3
bot 208 gives low to bot 138 and high to bot 170
bot 198 gives low to bot 184 and high to bot 62
bot 207 gives low to output 16 and high to output 8
bot 196 gives low to bot 43 and high to bot 91
bot 10 gives low to bot 111 and high to bot 133
bot 168 gives low to bot 35 and high to bot 202
bot 113 gives low to bot 127 and high to bot 196
bot 169 gives low to output 20 and high to bot 83
bot 3 gives low to bot 18 and high to bot 187
bot 52 gives low to bot 153 and high to bot 124
bot 190 gives low to bot 209 and high to bot 43
bot 125 gives low to bot 2 and high to bot 36
bot 173 gives low to bot 155 and high to bot 2
bot 153 gives low to bot 171 and high to bot 100
bot 34 gives low to bot 1 and high to bot 96
bot 84 gives low to bot 90 and high to bot 70
bot 12 gives low to bot 9 and high to bot 128
bot 24 gives low to bot 154 and high to bot 77
bot 179 gives low to bot 63 and high to bot 121
bot 85 gives low to bot 118 and high to bot 29
bot 11 gives low to bot 189 and high to bot 145
bot 116 gives low to bot 55 and high to bot 189
bot 132 gives low to bot 119 and high to bot 53
bot 15 gives low to bot 24 and high to bot 109
bot 102 gives low to output 15 and high to bot 197
value 43 goes to bot 206
bot 37 gives low to bot 145 and high to bot 25
bot 53 gives low to bot 183 and high to bot 78
bot 197 gives low to output 12 and high to bot 180
bot 47 gives low to output 17 and high to bot 178
bot 17 gives low to bot 22 and high to bot 54
bot 56 gives low to bot 106 and high to bot 173
bot 191 gives low to bot 135 and high to bot 136
bot 127 gives low to bot 190 and high to bot 196
bot 172 gives low to bot 137 and high to bot 158
bot 4 gives low to bot 146 and high to bot 84
bot 42 gives low to output 6 and high to bot 35
bot 145 gives low to bot 45 and high to bot 179
bot 133 gives low to bot 51 and high to bot 26
bot 139 gives low to bot 88 and high to bot 117
bot 105 gives low to bot 187 and high to bot 204
bot 126 gives low to bot 168 and high to bot 137
bot 128 gives low to bot 65 and high to bot 5
bot 114 gives low to bot 41 and high to bot 98
bot 14 gives low to bot 206 and high to bot 95
bot 91 gives low to bot 37 and high to bot 25
bot 206 gives low to bot 19 and high to bot 7
value 19 goes to bot 14
bot 185 gives low to bot 50 and high to bot 57
bot 205 gives low to bot 165 and high to bot 130
bot 109 gives low to bot 77 and high to bot 92
bot 175 gives low to bot 30 and high to bot 191
bot 29 gives low to bot 129 and high to bot 147
bot 74 gives low to bot 10 and high to bot 23
bot 94 gives low to bot 86 and high to bot 106
bot 25 gives low to bot 179 and high to bot 121
bot 71 gives low to bot 98 and high to bot 101
bot 209 gives low to bot 157 and high to bot 194
bot 88 gives low to bot 191 and high to bot 140
bot 124 gives low to bot 100 and high to bot 99
bot 97 gives low to bot 169 and high to bot 151
bot 141 gives low to bot 181 and high to bot 59
bot 146 gives low to bot 62 and high to bot 90
bot 200 gives low to bot 95 and high to bot 181
bot 79 gives low to bot 6 and high to bot 157
bot 48 gives low to bot 197 and high to bot 149
value 3 goes to bot 67
bot 68 gives low to bot 96 and high to bot 183
bot 111 gives low to bot 125 and high to bot 51

@ -0,0 +1,203 @@
require 'delegate'
State = Struct.new(:floors, :elevator) do
def self.from_s(input)
elevator = nil
floors = input.lines.reverse.map.with_index {|line, index|
_, e, *items = line.split(/\s+/)
elevator = index if e == ?E
Floor.new(items.reject {|item| item == ?. })
}
new(floors, elevator)
end
def ==(state)
eql?(state)
end
def eql?(state)
elevator == state.elevator && floors.zip(state.floors).all? {|a,b| a.eql?(b) }
end
def candidates
[-1, 1].flat_map {|delta|
next_floor = elevator + delta
next [] unless (0...floors.size).cover?(next_floor)
elevator_items = [1, 2].flat_map {|n| current_floor.to_a.combination(n).to_a }
elevator_items.map {|items| move(items, elevator, next_floor) }
}
end
def irradiated?
floors.any?(&:irradiated?)
end
def to_s
floors.map.with_index {|floor, index|
"#{elevator == index ??E:?.} #{floor.inspect}"
}.reverse.join("\n")
end
private
def current_floor
floors[elevator]
end
def move(items, from, to)
from_floor = Floor.new(floors[from] - items)
to_floor = Floor.new(floors[to] + items)
floors = self.floors.clone
floors[from] = from_floor
floors[to] = to_floor
self.class.new(floors, to)
end
end
class Floor < SimpleDelegator
attr_reader :source
def initialize(items)
@source = super(Set.new(items))
end
def microchips
source.select {|item| item.end_with?(?M) }.map {|item| item.chomp(?M) }
end
def generators
source.select {|item| item.end_with?(?G) }.map {|item| item.chomp(?G) }
end
def shielded
microchips & generators
end
def irradiated?
!(generators.empty? || (microchips - generators).empty?)
end
def hash
id.hash
end
def eql?(floor)
id == floor.id
end
def id
[shielded.size, (microchips - shielded).size, (generators - shielded).size]
end
end
if __FILE__ == $0
INPUT = <<-INPUT
F4 .
F3 . CoM CuM RM PlM
F2 . CoG CuG RG PlG
F1 E PrG PrM EG EM DG DM
INPUT
Step = Struct.new(:state, :count)
seen = Set.new
steps = [Step.new(State.from_s(INPUT), 0)]
until steps.empty? do
step = steps.shift
# puts
# puts "Steps: #{step.count}"
# puts step.state
if step.state.floors[0..-2].all?(&:empty?)
puts
puts "Steps: #{step.count}"
puts step.state
exit
end
step.state.candidates.each do |candidate|
next if seen.include?(candidate)
seen << candidate
next if candidate.irradiated?
steps << Step.new(candidate, step.count + 1)
end
end
end
require 'minitest/autorun'
class TestDay11 < Minitest::Test
INPUT = <<-INPUT
F4 . . . . .
F3 . . . LG .
F2 . HG . . .
F1 E . HM . LM
INPUT
def setup
@state = State.from_s(INPUT)
end
def test_initialize
assert_equal 4, @state.floors.size
assert_equal 0, @state.elevator
floor = @state.floors[0]
assert_equal 2, floor.size
assert_equal %w[ H L ], floor.microchips
assert_empty floor.generators
end
def test_equality
state = State.from_s(<<-INPUT)
F4 . . . . .
F3 . . . HG .
F2 . LG . . .
F1 E . HM . LM
INPUT
assert_equal @state, state
assert_equal @state.hash, state.hash
assert @state.eql?(state)
set = Set.new
set << @state
assert_includes set, @state
assert_includes set, state
end
def test_candidates
candidates = @state.candidates
assert_equal 3, candidates.size
candidate = candidates[0]
assert_equal 1, candidate.elevator
assert_equal %W[ LM ], candidate.floors[0].to_a
assert_equal %W[ HG HM ], candidate.floors[1].to_a
candidate = candidates[1]
assert_equal 1, candidate.elevator
assert_equal %W[ HM ], candidate.floors[0].to_a
assert_equal %W[ HG LM ], candidate.floors[1].to_a
candidate = candidates[2]
assert_equal 1, candidate.elevator
assert_empty candidate.floors[0]
assert_equal %W[ HG HM LM ], candidate.floors[1].to_a
end
def test_irradiated
refute Floor.new(%w[]).irradiated?
refute Floor.new(%w[ BM ]).irradiated?
refute Floor.new(%w[ BG ]).irradiated?
refute Floor.new(%w[ BM BG ]).irradiated?
refute Floor.new(%w[ BM BG LG ]).irradiated?
assert Floor.new(%w[ BM LG ]).irradiated?
end
end

@ -0,0 +1,51 @@
registers = { ?a => 0, ?b => 0, ?c => 1, ?d => 0 }
pc = 0
data = DATA.each_line.to_a
while pc < data.size
line = data[pc]
case line
when /cpy ([a-d]|\d+) ([a-d])/
value = registers.fetch($1) { $1.to_i }
registers[$2] = value
pc += 1
when /inc ([a-d])/
registers[$1] += 1
pc += 1
when /dec ([a-d])/
registers[$1] -= 1
pc += 1
when /jnz ([a-d]|\d+) (-?\d+)/
value = registers.fetch($1) { $1.to_i }
pc += value.zero? ? 1 : $2.to_i
else
raise "invalid line: #{line}"
end
end
p registers
__END__
cpy 1 a
cpy 1 b
cpy 26 d
jnz c 2
jnz 1 5
cpy 7 c
inc d
dec c
jnz c -2
cpy a c
inc a
dec b
jnz b -2
cpy c b
dec d
jnz d -6
cpy 16 c
cpy 17 d
inc a
dec d
jnz d -2
dec c
jnz c -5

@ -0,0 +1,87 @@
class Maze
attr_reader :walls
def initialize(seed)
@walls = Hash.new {|h,(x,y)|
num = x*x + 3*x + 2*x*y + y + y*y + seed
h[[x,y]] = num.to_s(2).chars.count {|c| c == ?1 }.odd?
}
end
def [](x,y)
walls[[x, y]]
end
def solve(start)
Solver.new(self, start)
end
class Solver
attr_reader :maze, :seen, :current
def initialize(maze, start)
@maze = maze
@seen = Set.new
@current = [[start, 0]]
end
def walk
return enum_for(__method__) unless block_given?
loop do
pos, count = current.shift
seen << pos
x,y = pos
[[1,0], [-1,0], [0,1], [0,-1]].map {|dx, dy|
[x + dx, y + dy]
}.reject {|x,y|
x.negative? || y.negative?
}.reject {|x,y|
maze[x,y]
}.reject {|pos|
seen.include?(pos)
}.each do |pos|
current << [pos, count + 1]
end
yield [pos, count]
end
end
end
end
if __FILE__ == $0
maze = Maze.new(1358)
p maze.solve([1,1]).walk.take_while {|pos,count| count < 51 }.map(&:first).uniq.size
end
require 'minitest'
# require 'minitest/autorun'
class TestMaze < Minitest::Test
def setup
@maze = Maze.new(10)
end
def test_maze
maze_s = <<-MAZE.chomp.split("\n").map(&:chars)
.#.####.##
..#..#...#
#....##...
###.#.###.
.##..#..#.
..##....#.
#...##.###
MAZE
maze_s.each.with_index do |row, y|
row.each.with_index do |c, x|
assert_equal c, @maze[x,y] ??#:?.
end
end
end
def test_solve
assert_equal 11, @maze.solve([1,1], [7,4])
end
end

@ -0,0 +1,33 @@
require 'digest/md5'
class Keys
attr_reader :seed, :hash
def initialize(seed)
@seed = seed
@hash = Hash.new {|h,k|
hash = Digest::MD5.hexdigest("#{seed}#{k}")
2016.times do
hash = Digest::MD5.hexdigest(hash)
end
h[k] = hash
}
end
def each
return enum_for(__method__) unless block_given?
(0..Float::INFINITY).each do |index|
next unless /(.)\1\1/ =~ hash[index]
needle = $1 * 5
stream = (1..1000).map {|i| hash[index + i] }
next unless stream.any? {|h| h.include?(needle) }
yield [index, hash[index]]
end
end
end
keys = Keys.new('qzyelonm')
p keys.each.take(64).last

@ -0,0 +1,25 @@
Disc = Struct.new(:positions, :start_position) do
def position_at(time)
(start_position + time) % positions
end
end
discs = DATA.each_line.map {|line|
/Disc #\d has (?<positions>\d+) positions; at time=0, it is at position (?<position>\d+)./ =~ line
Disc.new(positions.to_i, position.to_i)
}
discs << Disc.new(11, 0)
p (0..Float::INFINITY).find {|t|
discs.each.with_index.all? {|disc, index|
disc.position_at(t + index) == 0
}
}
__END__
Disc #1 has 17 positions; at time=0, it is at position 15.
Disc #2 has 3 positions; at time=0, it is at position 2.
Disc #3 has 19 positions; at time=0, it is at position 4.
Disc #4 has 13 positions; at time=0, it is at position 2.
Disc #5 has 7 positions; at time=0, it is at position 2.
Disc #6 has 5 positions; at time=0, it is at position 0.

@ -0,0 +1,24 @@
def step(a)
b = a.reverse.tr('10', '01')
"#{a}0#{b}"
end
def checksum(data)
checksum = data.chars
loop do
checksum = checksum.each_slice(2).map {|a,b| (a == b) ??1:?0 }
break if checksum.length.odd?
end
checksum.join
end
seed = '10001110011110000'
target_length = 35651584
state = seed
while state.length < target_length
state = step(state)
end
data = state[0...target_length]
puts checksum(data)

@ -0,0 +1,46 @@
require 'digest/md5'
State = Struct.new(:location, :path)
Maze = Struct.new(:passcode, :size) do
def walk
return enum_for(__method__) unless block_given?
states = [State.new([0,0], '')]
until states.empty?
state = states.shift
yield state
next if state.location == [3,3]
hash = Digest::MD5.hexdigest("#{passcode}#{state.path}")[0,4]
open_doors = %i[ U D L R ].select.with_index {|_, index|
'bcdef'.include?(hash[index])
}
{
U: [ 0, -1],
D: [ 0, 1],
L: [-1, 0],
R: [ 1, 0],
}.select {|door, _|
open_doors.include?(door)
}.map {|door, (dx, dy)|
x = state.location[0] + dx
y = state.location[1] + dy
location = [x, y]
path = state.path + door.to_s
State.new(location, path)
}.select {|state|
state.location.all? {|i| (0...size).cover?(i) }
}.each do |state|
states << state
end
end
end
end
p Maze.new('yjjvjgan', 4).walk.select {|state|
state.location == [3, 3]
}.map(&:path).map(&:length).max

@ -0,0 +1,50 @@
Row = Struct.new(:tiles) do
INPUT_MAP = { ?. => :safe, ?^ => :trap }
def self.from_s(input)
new(input.chars.map {|char| INPUT_MAP.fetch(char) })
end
def next
self.class.new(
%i[ safe safe ].insert(1, *tiles).each_cons(3).map {|l,c,r|
if l == :trap && c == :trap && r == :safe
:trap
elsif l == :safe && c == :trap && r == :trap
:trap
elsif l == :trap && c == :safe && r == :safe
:trap
elsif l == :safe && c == :safe && r == :trap
:trap
else
:safe
end
}
)
end
end
if __FILE__ == $0
row = Row.from_s(DATA.read.chomp)
count = 0
400_000.times do
count += row.tiles.count(:safe)
row = row.next
end
p count
end
require 'minitest'
# require 'minitest/autorun'
class TestRow < Minitest::Test
def test_row
row = Row.from_s('..^^.')
assert_equal %i[ safe safe trap trap safe ], row.tiles
assert_equal Row.from_s('.^^^^'), row.next
end
end
__END__
^^.^..^.....^..^..^^...^^.^....^^^.^.^^....^.^^^...^^^^.^^^^.^..^^^^.^^.^.^.^.^.^^...^^..^^^..^.^^^^

@ -0,0 +1,35 @@
def solve(n, debug: false)
elves = Array.new(n) {|i| i+1 }
until elves.size == 1
across = elves.size / 2
elves.delete_at(across)
elves.rotate!
end
elves.first
end
# This takes too long
# n = 3017957
# puts solve(n)
# So instead use this to find the pattern!
(1..100).each do |i|
puts "#{i}: #{solve(i)}"
end
# At 3**n, the counter resets
# At 2*3**n, the counter goes up by two instead of one
include Math
def formula(n)
x = log(n, 3).to_i
a = 3**x
b = 2*a
(n == a) ? a : n - a + [(n - b), 0].max
end
(1..100).each do |n|
puts "#{n}: #{solve(n)} #{formula(n)}"
end

@ -0,0 +1,14 @@
blacklist = ARGF.read.split("\n").map {|line| Range.new(*line.split(?-).map(&:to_i)) }
ip = 0
count = 0
until ip > 4294967295
range = blacklist.find {|range| range.cover?(ip) }
if range.nil?
count += 1
ip += 1
else
ip = range.end + 1
end
end
puts count

@ -0,0 +1,48 @@
INSTRUCTIONS = ARGF.read.split("\n")
def scramble(input)
INSTRUCTIONS.each do |instruction|
case instruction
when /swap position (\d+) with position (\d+)/
x = $1.to_i
y = $2.to_i
input[x], input[y] = input[y], input[x]
when /swap letter (\w+) with letter (\w+)/
x = $1
y = $2
input.tr!("#{x}#{y}", "#{y}#{x}")
when /rotate (left|right) (\d+) steps?/
steps = $2.to_i
steps = -steps if $1 == 'right'
input = input.chars.rotate(steps).join
when /rotate based on position of letter (\w+)/
index = input.index($1)
index += 1 if index >= 4
index += 1
index = -index
input = input.chars.rotate(index).join
when /reverse positions (\d+) through (\d+)/
x = $1.to_i
y = $2.to_i
input[x..y] = input[x..y].reverse
when /move position (\d+) to position (\d+)/
x = $1.to_i
x = input[x]
input[x] = ''
y = $2.to_i
input.insert(y, x)
else
raise "invalid instruction: '#{instruction}'"
end
end
input
end
input = 'abcdefgh'.chars
input.permutation.each do |candidate|
if scramble(candidate.join) == 'fbgdceah'
puts candidate.join
exit
end
end

@ -0,0 +1,10 @@
Node = Struct.new(*%i[x y size used avail use])
nodes = ARGF
.read
.scan(%r|/dev/grid/node-x(\d+)-y(\d+)\s+(\d+)T\s+(\d+)T\s+(\d+)T\s*(\d+)%|)
.map {|match| Node.new(*match.map(&:to_i)) }
p nodes.permutation(2).count {|a,b|
a.used != 0 && a.used <= b.avail
}

@ -0,0 +1,81 @@
registers = { ?a => 7, ?b => 0, ?c => 0, ?d => 0 }
pc = 0
data = DATA.each_line.map(&:chomp).to_a
while pc < data.size
line = data[pc]
puts "#{registers}"
puts "#{pc}: #{line}"
case line
when /cpy ([a-d]|-?\d+) ([a-d])/
value = registers.fetch($1) { $1.to_i }
registers[$2] = value
pc += 1
when /inc ([a-d])/
registers[$1] += 1
pc += 1
when /dec ([a-d])/
registers[$1] -= 1
pc += 1
when /jnz ([a-d]|\d+) ([a-d]|-?\d+)/
value = registers.fetch($1) { $1.to_i }
count = registers.fetch($2) { $2.to_i }
pc += value.zero? ? 1 : count
when /tgl ([a-d]|-?\d+)/
value = registers.fetch($1) { $1.to_i }
line = data[pc + value]
if line.nil?
pc +=1
next
end
instruction, *args = line.split(/\s+/)
case args.size
when 1
instruction = (instruction == 'inc') ? 'dec' : 'inc'
when 2
instruction = (instruction == 'jnz') ? 'cpy' : 'jnz'
else
raise 'omg'
end
data[pc + value] = "#{instruction} #{args.join(' ')}"
pc += 1
else
puts "skipping line: #{line}"
pc += 1
end
end
p registers
__END__
cpy a b
dec b
cpy a d
cpy 0 a
cpy b c
inc a
dec c
jnz c -2
dec d
jnz d -5
dec b
cpy b c
cpy c d
dec d
inc c
jnz d -2
tgl c
cpy -16 c
jnz 1 c
cpy 94 c
jnz 82 d
inc a
inc d
jnz d -2
inc c
jnz c -5

@ -0,0 +1,136 @@
class Solver
def initialize(maze)
@maze = maze
end
def solve(from, to)
seen = Set.new(from)
queue = [[from, 0]]
current = queue.shift
loop do
location = current[0]
break if location == to
if seen.include?(location)
current = queue.shift
next
end
seen << location
neighbors = maze
.open_neighbors(location[0], location[1])
.reject {|location| seen.include?(location) }
queue.concat(neighbors.map {|location| [location, current[1] + 1] })
return nil if queue.empty?
current = queue.shift
end
current[1]
end
private
attr_reader :maze
end
class Maze
attr_reader :locations
def initialize(input)
@maze = Hash.new
@locations = Hash.new
x, y = 0, 0
input.chars.each do |char|
case char
when /\d/
@locations[char.to_i] = [x,y]
char = ?.
when "\n"
x = -1
y += 1
else
# no-op
end
@maze[[x,y]] = char
x += 1
end
end
def [](x,y)
maze[[x,y]]
end
def open_neighbors(x, y)
[[-1, 0],
[ 1, 0],
[ 0, -1],
[ 0, 1]].map {|dx,dy|
[x+dx, y+dy]
}.select {|x,y|
self[x,y] == ?.
}
end
private
attr_reader :maze
end
if __FILE__ == $0
maze = Maze.new(ARGF.read)
solver = Solver.new(maze)
hash = maze.locations.to_a.combination(2).each.with_object({}) {|(a, b), hash|
steps = solver.solve(a[1], b[1])
hash[[a[0],b[0]]] = steps
hash[[b[0],a[0]]] = steps
}
p maze
.locations
.map(&:first)
.permutation
.select {|route| route[0] == 0 }
.map {|route| route + [0] }
.map {|route|
[route, route.each_cons(2).map {|a,b| hash[[a,b]] }.inject(:+)]
}.sort_by(&:last)
.first
end
require 'minitest'
# require 'minitest/autorun'
class TestMaze < Minitest::Test
def test_maze
maze = Maze.new(<<-MAZE)
###########
#0.1.....2#
#.#######.#
#4.......3#
###########
MAZE
assert_equal [1,1], maze.locations[0]
assert_equal [[2,1], [1,2]], maze.open_neighbors(1,1)
end
end
class TestSolver < Minitest::Test
def test_solver
maze = Maze.new(<<-MAZE)
###########
#0.1.....2#
#.#######.#
#4.......3#
###########
MAZE
solver = Solver.new(maze)
assert_equal 2, solver.solve(maze.locations[0], maze.locations[4])
end
end

@ -0,0 +1,43 @@
class Assembunny
attr_reader :data
def initialize(data)
@data = data
end
def run(input)
return enum_for(__method__, input) unless block_given?
registers = { ?a => input, ?b => 0, ?c => 0, ?d => 0 }
pc = 0
while pc < data.size
line = data[pc]
case line
when /cpy ([a-d]|\d+) ([a-d])/
value = registers.fetch($1) { $1.to_i }
registers[$2] = value
pc += 1
when /inc ([a-d])/
registers[$1] += 1
pc += 1
when /dec ([a-d])/
registers[$1] -= 1
pc += 1
when /jnz ([a-d]|\d+) (-?\d+)/
value = registers.fetch($1) { $1.to_i }
pc += value.zero? ? 1 : $2.to_i
when /out ([a-d])/
yield registers.fetch($1)
pc += 1
else
raise "invalid line: #{line}"
end
end
end
end
assembunny = Assembunny.new(ARGF.read.split("\n"))
needle = ('01' * 6).chars.map(&:to_i)
puts (1..Float::INFINITY).find {|i| assembunny.run(i).take(12) == needle }

@ -0,0 +1 @@
target

173
2016/rust/Cargo.lock generated

@ -0,0 +1,173 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "advent_of_code_2016"
version = "0.1.0"
dependencies = [
"error-chain",
"regex",
"rust-crypto",
]
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]]
name = "backtrace"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f551bc2ddd53aea015d453ef0b635af89444afa5ed2405dd0b2062ad5d600d80"
dependencies = [
"backtrace-sys",
"cfg-if",
"dbghelp-sys",
"kernel32-sys",
"libc",
"rustc-demangle",
"winapi",
]
[[package]]
name = "backtrace-sys"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3602e8d8c43336088a8505fa55cae2b3884a9be29440863a11528a42f46f6bb7"
dependencies = [
"gcc",
"libc",
]
[[package]]
name = "cfg-if"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de1e760d7b6535af4241fca8bd8adf68e2e7edacc6b29f5d399050c5e48cf88c"
[[package]]
name = "dbghelp-sys"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"
dependencies = [
"winapi",
"winapi-build",
]
[[package]]
name = "error-chain"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cd681735364a04cd5d69f01a4f6768e70473941f8d86d8c224faf6955a75799"
dependencies = [
"backtrace",
]
[[package]]
name = "gcc"
version = "0.3.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "771e4a97ff6f237cf0f7d5f5102f6e28bb9743814b6198d684da5c58b76c11e0"
[[package]]
name = "kernel32-sys"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
dependencies = [
"winapi",
"winapi-build",
]
[[package]]
name = "libc"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
[[package]]
name = "memchr"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "rand"
version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d"
dependencies = [
"libc",
]
[[package]]
name = "regex"
version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.6.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
[[package]]
name = "rust-crypto"
version = "0.2.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a"
dependencies = [
"gcc",
"libc",
"rand",
"rustc-serialize",
"time",
]
[[package]]
name = "rustc-demangle"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1430d286cadb237c17c885e25447c982c97113926bb579f4379c0eca8d9586dc"
[[package]]
name = "rustc-serialize"
version = "0.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bff9fc1c79f2dec76b253273d07682e94a978bd8f132ded071188122b2af9818"
[[package]]
name = "time"
version = "0.1.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c7ec6d62a20df54e07ab3b78b9a3932972f4b7981de295563686849eb3989af"
dependencies = [
"kernel32-sys",
"libc",
"winapi",
]
[[package]]
name = "winapi"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
[[package]]
name = "winapi-build"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"

@ -0,0 +1,9 @@
[package]
name = "advent_of_code_2016"
version = "0.1.0"
authors = ["Alpha Chen <alpha.chen@gmail.com>"]
[dependencies]
error-chain = "0.7"
regex = "1.5"
rust-crypto = "0.2"

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save