From 1fd77f3b837d74617f3e596ad54daaa07bae13f9 Mon Sep 17 00:00:00 2001 From: Anders Olsson Date: Fri, 7 Dec 2018 08:23:44 +0100 Subject: [PATCH] 2018/03 --- 2018/03/Cargo.lock | 95 ++++ 2018/03/Cargo.toml | 8 + 2018/03/input.txt | 1229 +++++++++++++++++++++++++++++++++++++++++++ 2018/03/src/main.rs | 112 ++++ 4 files changed, 1444 insertions(+) create mode 100644 2018/03/Cargo.lock create mode 100644 2018/03/Cargo.toml create mode 100644 2018/03/input.txt create mode 100644 2018/03/src/main.rs diff --git a/2018/03/Cargo.lock b/2018/03/Cargo.lock new file mode 100644 index 0000000..e736a6b --- /dev/null +++ b/2018/03/Cargo.lock @@ -0,0 +1,95 @@ +[[package]] +name = "aho-corasick" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cfg-if" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "day-03" +version = "0.1.0" +dependencies = [ + "regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "lazy_static" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "libc" +version = "0.2.44" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "memchr" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)", + "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "regex-syntax" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "thread_local" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ucd-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "utf8-ranges" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[metadata] +"checksum aho-corasick 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9a933f4e58658d7b12defcf96dc5c720f20832deebe3e0a19efd3b6aaeeb9e" +"checksum cfg-if 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "082bb9b28e00d3c9d39cc03e64ce4cea0f1bb9b3fde493f0cbc008472d22bdf4" +"checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" +"checksum libc 0.2.44 (registry+https://github.com/rust-lang/crates.io-index)" = "10923947f84a519a45c8fefb7dd1b3e8c08747993381adee176d7a82b4195311" +"checksum memchr 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0a3eb002f0535929f1199681417029ebea04aadc0c7a4224b46be99c7f5d6a16" +"checksum regex 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "37e7cbbd370869ce2e8dff25c7018702d10b21a20ef7135316f8daecd6c25b7f" +"checksum regex-syntax 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "4e47a2ed29da7a9e1960e1639e7a982e6edc6d49be308a3b02daf511504a16d1" +"checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" +"checksum ucd-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535c204ee4d8434478593480b8f86ab45ec9aae0e83c568ca81abf0fd0e88f86" +"checksum utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "796f7e48bef87609f7ade7e06495a87d5cd06c7866e6a5cbfceffc558a243737" +"checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" diff --git a/2018/03/Cargo.toml b/2018/03/Cargo.toml new file mode 100644 index 0000000..c85ba18 --- /dev/null +++ b/2018/03/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day-03" +version = "0.1.0" +authors = ["Anders Olsson "] +edition = "2018" + +[dependencies] +regex = "1.1" diff --git a/2018/03/input.txt b/2018/03/input.txt new file mode 100644 index 0000000..e951b05 --- /dev/null +++ b/2018/03/input.txt @@ -0,0 +1,1229 @@ +#1 @ 469,741: 22x26 +#2 @ 290,985: 25x11 +#3 @ 794,639: 21x28 +#4 @ 969,266: 13x11 +#5 @ 465,103: 24x10 +#6 @ 537,925: 7x9 +#7 @ 276,540: 17x25 +#8 @ 386,614: 12x8 +#9 @ 38,207: 12x21 +#10 @ 836,338: 29x21 +#11 @ 728,948: 19x23 +#12 @ 555,514: 18x14 +#13 @ 572,754: 29x12 +#14 @ 181,225: 21x21 +#15 @ 383,414: 21x14 +#16 @ 22,726: 29x29 +#17 @ 989,671: 11x17 +#18 @ 750,176: 13x26 +#19 @ 492,757: 29x11 +#20 @ 330,179: 28x25 +#21 @ 192,230: 15x24 +#22 @ 495,968: 21x24 +#23 @ 413,522: 13x16 +#24 @ 888,886: 25x14 +#25 @ 936,937: 21x23 +#26 @ 52,514: 16x21 +#27 @ 945,96: 19x29 +#28 @ 579,629: 23x13 +#29 @ 911,98: 11x10 +#30 @ 409,513: 28x11 +#31 @ 423,214: 11x22 +#32 @ 554,56: 14x26 +#33 @ 151,441: 28x22 +#34 @ 779,602: 24x23 +#35 @ 147,921: 29x27 +#36 @ 38,157: 22x10 +#37 @ 666,649: 14x18 +#38 @ 759,939: 10x16 +#39 @ 83,579: 21x19 +#40 @ 299,958: 13x18 +#41 @ 507,864: 27x20 +#42 @ 487,278: 19x22 +#43 @ 702,98: 27x10 +#44 @ 172,87: 21x18 +#45 @ 960,948: 16x14 +#46 @ 118,179: 14x25 +#47 @ 38,45: 28x12 +#48 @ 862,569: 11x12 +#49 @ 819,823: 24x11 +#50 @ 659,612: 11x18 +#51 @ 289,496: 19x28 +#52 @ 966,763: 28x13 +#53 @ 870,107: 12x12 +#54 @ 596,310: 23x15 +#55 @ 510,471: 27x13 +#56 @ 251,311: 22x22 +#57 @ 446,892: 17x28 +#58 @ 520,968: 18x11 +#59 @ 639,93: 22x15 +#60 @ 636,43: 10x22 +#61 @ 879,918: 15x16 +#62 @ 564,413: 15x11 +#63 @ 139,704: 15x25 +#64 @ 924,977: 16x19 +#65 @ 207,812: 11x28 +#66 @ 410,46: 12x17 +#67 @ 513,601: 14x25 +#68 @ 234,532: 11x16 +#69 @ 554,686: 29x26 +#70 @ 764,751: 26x10 +#71 @ 249,738: 11x23 +#72 @ 17,837: 23x20 +#73 @ 761,723: 16x18 +#74 @ 771,603: 27x21 +#75 @ 431,538: 16x25 +#76 @ 255,944: 13x25 +#77 @ 126,772: 24x19 +#78 @ 338,337: 28x28 +#79 @ 13,412: 18x13 +#80 @ 493,528: 27x19 +#81 @ 586,931: 15x20 +#82 @ 957,691: 17x16 +#83 @ 902,625: 16x15 +#84 @ 109,450: 12x27 +#85 @ 873,365: 12x19 +#86 @ 136,266: 16x24 +#87 @ 909,449: 27x19 +#88 @ 553,696: 12x19 +#89 @ 301,570: 26x23 +#90 @ 513,844: 13x23 +#91 @ 926,139: 11x24 +#92 @ 846,542: 24x14 +#93 @ 741,703: 22x23 +#94 @ 146,125: 13x25 +#95 @ 117,380: 27x27 +#96 @ 62,411: 16x25 +#97 @ 742,752: 14x17 +#98 @ 756,928: 11x22 +#99 @ 838,855: 12x17 +#100 @ 810,43: 28x14 +#101 @ 53,936: 16x14 +#102 @ 27,598: 11x16 +#103 @ 283,930: 23x22 +#104 @ 975,34: 18x21 +#105 @ 529,2: 12x14 +#106 @ 580,225: 19x27 +#107 @ 881,398: 7x15 +#108 @ 719,757: 22x10 +#109 @ 81,146: 28x19 +#110 @ 238,718: 11x10 +#111 @ 239,542: 20x27 +#112 @ 649,585: 25x11 +#113 @ 870,537: 27x23 +#114 @ 505,955: 21x20 +#115 @ 412,613: 29x14 +#116 @ 223,845: 11x24 +#117 @ 362,895: 10x22 +#118 @ 530,1: 15x20 +#119 @ 169,850: 18x13 +#120 @ 676,524: 18x16 +#121 @ 981,49: 12x21 +#122 @ 731,694: 21x10 +#123 @ 381,400: 11x14 +#124 @ 778,399: 25x16 +#125 @ 334,908: 16x15 +#126 @ 597,182: 24x15 +#127 @ 34,895: 10x21 +#128 @ 421,851: 28x21 +#129 @ 194,428: 19x12 +#130 @ 720,837: 27x10 +#131 @ 959,532: 24x16 +#132 @ 340,684: 20x20 +#133 @ 969,166: 20x21 +#134 @ 979,196: 11x19 +#135 @ 483,976: 21x14 +#136 @ 30,887: 18x10 +#137 @ 892,44: 15x19 +#138 @ 898,742: 10x25 +#139 @ 773,370: 18x29 +#140 @ 598,170: 10x16 +#141 @ 587,105: 20x24 +#142 @ 663,616: 29x26 +#143 @ 769,64: 25x23 +#144 @ 435,895: 26x15 +#145 @ 830,951: 27x21 +#146 @ 248,196: 17x18 +#147 @ 430,370: 26x24 +#148 @ 776,964: 15x11 +#149 @ 323,911: 16x24 +#150 @ 159,217: 20x14 +#151 @ 28,244: 19x29 +#152 @ 892,462: 24x28 +#153 @ 263,704: 15x7 +#154 @ 804,242: 13x15 +#155 @ 474,381: 21x29 +#156 @ 159,45: 27x29 +#157 @ 919,863: 15x29 +#158 @ 923,810: 12x19 +#159 @ 505,283: 17x29 +#160 @ 151,909: 26x13 +#161 @ 407,246: 16x12 +#162 @ 964,368: 18x13 +#163 @ 506,279: 14x20 +#164 @ 863,617: 13x12 +#165 @ 110,976: 16x11 +#166 @ 483,819: 28x24 +#167 @ 379,152: 10x26 +#168 @ 139,572: 15x12 +#169 @ 585,180: 5x4 +#170 @ 951,668: 16x21 +#171 @ 151,690: 10x26 +#172 @ 36,572: 16x13 +#173 @ 308,978: 13x17 +#174 @ 450,575: 11x11 +#175 @ 510,350: 24x17 +#176 @ 71,342: 29x15 +#177 @ 951,425: 24x12 +#178 @ 300,33: 26x22 +#179 @ 48,189: 29x28 +#180 @ 320,114: 10x25 +#181 @ 526,512: 22x14 +#182 @ 22,197: 15x29 +#183 @ 790,232: 20x19 +#184 @ 558,100: 24x12 +#185 @ 555,338: 16x11 +#186 @ 927,136: 19x21 +#187 @ 952,928: 14x29 +#188 @ 521,76: 25x19 +#189 @ 225,762: 20x20 +#190 @ 501,251: 28x15 +#191 @ 22,824: 25x25 +#192 @ 945,752: 12x19 +#193 @ 248,808: 22x10 +#194 @ 239,59: 25x19 +#195 @ 973,379: 16x29 +#196 @ 696,252: 25x18 +#197 @ 729,918: 20x24 +#198 @ 225,327: 26x21 +#199 @ 922,271: 20x14 +#200 @ 633,78: 25x12 +#201 @ 594,914: 23x16 +#202 @ 33,205: 29x24 +#203 @ 742,924: 27x28 +#204 @ 201,296: 20x28 +#205 @ 774,252: 16x14 +#206 @ 379,262: 10x14 +#207 @ 64,419: 21x28 +#208 @ 827,430: 19x21 +#209 @ 693,916: 14x29 +#210 @ 63,875: 29x17 +#211 @ 639,737: 12x15 +#212 @ 397,523: 29x13 +#213 @ 37,247: 14x25 +#214 @ 81,238: 20x19 +#215 @ 19,528: 24x16 +#216 @ 256,726: 17x13 +#217 @ 674,132: 29x12 +#218 @ 496,747: 26x24 +#219 @ 835,582: 18x28 +#220 @ 442,361: 10x23 +#221 @ 199,215: 29x21 +#222 @ 723,759: 10x5 +#223 @ 46,860: 15x18 +#224 @ 726,861: 28x12 +#225 @ 443,5: 11x17 +#226 @ 612,403: 23x24 +#227 @ 812,942: 22x28 +#228 @ 415,954: 17x17 +#229 @ 119,217: 13x17 +#230 @ 220,167: 10x24 +#231 @ 430,234: 22x24 +#232 @ 665,158: 28x25 +#233 @ 539,145: 16x25 +#234 @ 484,400: 19x27 +#235 @ 137,576: 7x12 +#236 @ 105,11: 25x14 +#237 @ 498,516: 14x16 +#238 @ 437,458: 28x23 +#239 @ 425,526: 24x25 +#240 @ 31,807: 26x19 +#241 @ 303,943: 24x24 +#242 @ 207,732: 17x22 +#243 @ 148,67: 25x21 +#244 @ 661,20: 11x13 +#245 @ 130,758: 18x20 +#246 @ 814,726: 19x18 +#247 @ 232,506: 16x21 +#248 @ 724,523: 17x26 +#249 @ 824,866: 15x26 +#250 @ 496,644: 18x14 +#251 @ 66,426: 10x22 +#252 @ 186,614: 14x24 +#253 @ 185,880: 20x16 +#254 @ 48,749: 24x13 +#255 @ 722,277: 11x20 +#256 @ 655,75: 26x19 +#257 @ 270,292: 19x22 +#258 @ 111,187: 10x19 +#259 @ 558,939: 26x10 +#260 @ 118,259: 19x29 +#261 @ 538,119: 10x13 +#262 @ 702,341: 18x29 +#263 @ 905,260: 27x27 +#264 @ 466,946: 11x27 +#265 @ 13,816: 14x11 +#266 @ 62,209: 26x12 +#267 @ 420,957: 28x18 +#268 @ 374,821: 23x24 +#269 @ 933,622: 19x10 +#270 @ 183,54: 20x21 +#271 @ 594,164: 14x21 +#272 @ 875,763: 25x26 +#273 @ 632,839: 12x18 +#274 @ 436,237: 11x17 +#275 @ 170,626: 13x23 +#276 @ 556,337: 11x11 +#277 @ 763,775: 22x13 +#278 @ 381,459: 16x27 +#279 @ 445,592: 10x28 +#280 @ 534,295: 27x15 +#281 @ 503,345: 15x27 +#282 @ 753,773: 24x21 +#283 @ 723,789: 12x10 +#284 @ 844,321: 20x26 +#285 @ 65,747: 21x28 +#286 @ 349,595: 16x21 +#287 @ 307,31: 29x29 +#288 @ 808,347: 10x29 +#289 @ 511,536: 21x12 +#290 @ 473,703: 21x18 +#291 @ 817,40: 20x16 +#292 @ 318,633: 21x24 +#293 @ 313,817: 16x26 +#294 @ 977,264: 15x25 +#295 @ 458,213: 24x11 +#296 @ 389,327: 24x16 +#297 @ 430,56: 14x24 +#298 @ 579,332: 22x28 +#299 @ 781,751: 21x24 +#300 @ 716,347: 25x12 +#301 @ 116,174: 28x23 +#302 @ 426,758: 16x16 +#303 @ 263,635: 29x23 +#304 @ 854,483: 10x25 +#305 @ 817,735: 16x12 +#306 @ 579,182: 23x21 +#307 @ 496,973: 12x13 +#308 @ 602,476: 27x19 +#309 @ 815,728: 16x21 +#310 @ 715,757: 28x28 +#311 @ 300,20: 29x14 +#312 @ 457,166: 23x16 +#313 @ 493,534: 20x11 +#314 @ 559,910: 24x23 +#315 @ 315,141: 21x27 +#316 @ 643,495: 13x17 +#317 @ 956,326: 17x14 +#318 @ 939,981: 12x17 +#319 @ 814,151: 10x23 +#320 @ 295,175: 12x25 +#321 @ 5,484: 12x20 +#322 @ 875,396: 19x23 +#323 @ 966,314: 22x14 +#324 @ 60,88: 28x11 +#325 @ 488,265: 23x19 +#326 @ 139,357: 26x15 +#327 @ 142,73: 21x27 +#328 @ 453,491: 21x27 +#329 @ 888,682: 17x16 +#330 @ 364,150: 23x24 +#331 @ 511,803: 23x18 +#332 @ 137,288: 19x14 +#333 @ 25,264: 26x15 +#334 @ 414,670: 22x28 +#335 @ 299,483: 18x27 +#336 @ 639,526: 26x13 +#337 @ 135,218: 15x15 +#338 @ 307,120: 28x25 +#339 @ 837,929: 23x21 +#340 @ 956,33: 23x26 +#341 @ 787,627: 11x29 +#342 @ 548,362: 18x27 +#343 @ 815,282: 13x15 +#344 @ 19,599: 12x16 +#345 @ 651,290: 22x26 +#346 @ 462,799: 25x14 +#347 @ 756,58: 22x16 +#348 @ 497,973: 16x11 +#349 @ 131,404: 27x26 +#350 @ 714,332: 25x16 +#351 @ 962,879: 24x16 +#352 @ 214,765: 21x22 +#353 @ 79,189: 11x27 +#354 @ 25,595: 21x19 +#355 @ 832,941: 10x15 +#356 @ 426,650: 21x19 +#357 @ 159,483: 19x19 +#358 @ 875,369: 6x9 +#359 @ 704,182: 19x11 +#360 @ 139,807: 13x23 +#361 @ 240,558: 11x29 +#362 @ 22,449: 11x27 +#363 @ 168,647: 21x27 +#364 @ 962,199: 18x27 +#365 @ 557,762: 27x24 +#366 @ 584,362: 15x27 +#367 @ 660,456: 27x14 +#368 @ 66,446: 29x19 +#369 @ 130,293: 13x11 +#370 @ 477,786: 17x22 +#371 @ 861,813: 22x15 +#372 @ 848,508: 17x18 +#373 @ 651,966: 24x9 +#374 @ 292,250: 28x12 +#375 @ 574,177: 16x17 +#376 @ 63,822: 18x16 +#377 @ 303,954: 28x16 +#378 @ 385,439: 13x24 +#379 @ 44,211: 18x13 +#380 @ 44,963: 22x16 +#381 @ 600,402: 18x27 +#382 @ 23,532: 18x16 +#383 @ 392,230: 25x27 +#384 @ 339,695: 24x26 +#385 @ 592,459: 28x19 +#386 @ 302,838: 16x25 +#387 @ 283,800: 25x24 +#388 @ 608,941: 23x18 +#389 @ 368,196: 21x21 +#390 @ 363,916: 11x16 +#391 @ 941,593: 13x26 +#392 @ 496,364: 16x10 +#393 @ 660,172: 26x10 +#394 @ 458,693: 22x28 +#395 @ 462,560: 13x26 +#396 @ 152,845: 29x13 +#397 @ 574,187: 28x13 +#398 @ 229,404: 23x26 +#399 @ 445,505: 28x20 +#400 @ 116,98: 26x12 +#401 @ 446,574: 17x14 +#402 @ 195,535: 28x16 +#403 @ 521,386: 29x11 +#404 @ 114,281: 25x21 +#405 @ 775,8: 19x27 +#406 @ 163,213: 28x29 +#407 @ 57,320: 22x29 +#408 @ 416,26: 21x17 +#409 @ 412,424: 29x13 +#410 @ 300,750: 22x18 +#411 @ 778,974: 13x15 +#412 @ 127,219: 16x18 +#413 @ 426,551: 23x13 +#414 @ 165,667: 22x22 +#415 @ 750,908: 10x19 +#416 @ 417,254: 19x13 +#417 @ 560,709: 17x27 +#418 @ 183,742: 5x8 +#419 @ 844,852: 18x23 +#420 @ 822,412: 12x20 +#421 @ 754,438: 21x10 +#422 @ 22,351: 18x24 +#423 @ 922,603: 18x21 +#424 @ 692,893: 20x11 +#425 @ 899,643: 19x25 +#426 @ 261,697: 20x20 +#427 @ 591,267: 18x18 +#428 @ 172,740: 25x17 +#429 @ 200,860: 27x15 +#430 @ 163,652: 20x12 +#431 @ 544,800: 17x21 +#432 @ 625,556: 18x25 +#433 @ 463,331: 22x24 +#434 @ 288,386: 11x13 +#435 @ 891,314: 25x22 +#436 @ 515,286: 19x11 +#437 @ 358,622: 27x11 +#438 @ 149,674: 17x19 +#439 @ 315,331: 21x16 +#440 @ 18,599: 29x18 +#441 @ 552,939: 23x18 +#442 @ 261,369: 25x18 +#443 @ 686,893: 26x24 +#444 @ 431,852: 13x17 +#445 @ 956,590: 13x22 +#446 @ 422,577: 20x13 +#447 @ 737,539: 29x26 +#448 @ 356,913: 12x23 +#449 @ 214,746: 12x23 +#450 @ 137,337: 4x11 +#451 @ 23,610: 27x15 +#452 @ 511,596: 24x12 +#453 @ 786,726: 27x27 +#454 @ 902,667: 25x14 +#455 @ 612,676: 29x29 +#456 @ 281,485: 29x11 +#457 @ 473,630: 24x23 +#458 @ 486,954: 22x19 +#459 @ 701,501: 15x22 +#460 @ 542,495: 13x10 +#461 @ 445,243: 19x12 +#462 @ 281,12: 28x12 +#463 @ 711,412: 27x15 +#464 @ 847,25: 14x19 +#465 @ 944,255: 15x17 +#466 @ 950,326: 20x17 +#467 @ 447,927: 15x29 +#468 @ 373,703: 29x12 +#469 @ 453,290: 16x20 +#470 @ 523,805: 23x24 +#471 @ 534,788: 29x17 +#472 @ 426,1: 21x18 +#473 @ 324,11: 13x23 +#474 @ 825,869: 18x29 +#475 @ 542,65: 16x19 +#476 @ 466,410: 10x12 +#477 @ 520,522: 21x12 +#478 @ 635,617: 21x23 +#479 @ 574,199: 18x15 +#480 @ 8,45: 29x26 +#481 @ 922,41: 13x11 +#482 @ 229,706: 26x24 +#483 @ 86,440: 22x14 +#484 @ 938,106: 18x12 +#485 @ 331,715: 11x22 +#486 @ 575,550: 28x23 +#487 @ 933,756: 18x21 +#488 @ 116,95: 28x18 +#489 @ 874,409: 27x17 +#490 @ 805,346: 14x22 +#491 @ 221,164: 27x18 +#492 @ 849,594: 26x26 +#493 @ 764,390: 22x11 +#494 @ 858,412: 19x29 +#495 @ 518,132: 16x27 +#496 @ 258,207: 26x19 +#497 @ 761,875: 24x23 +#498 @ 380,861: 26x19 +#499 @ 22,465: 24x18 +#500 @ 897,683: 17x26 +#501 @ 417,243: 15x27 +#502 @ 590,236: 17x14 +#503 @ 657,252: 17x11 +#504 @ 71,406: 19x21 +#505 @ 283,791: 26x14 +#506 @ 402,251: 23x21 +#507 @ 600,242: 15x28 +#508 @ 474,374: 12x15 +#509 @ 768,364: 16x10 +#510 @ 857,193: 27x14 +#511 @ 915,737: 25x10 +#512 @ 453,296: 11x23 +#513 @ 318,157: 14x12 +#514 @ 708,905: 20x19 +#515 @ 620,65: 26x15 +#516 @ 156,344: 12x18 +#517 @ 912,857: 17x19 +#518 @ 648,455: 21x26 +#519 @ 178,661: 23x17 +#520 @ 486,221: 10x14 +#521 @ 605,300: 21x27 +#522 @ 944,383: 16x29 +#523 @ 29,552: 16x20 +#524 @ 153,886: 28x29 +#525 @ 957,301: 25x12 +#526 @ 895,886: 26x27 +#527 @ 90,583: 25x26 +#528 @ 650,226: 19x28 +#529 @ 271,250: 18x23 +#530 @ 381,496: 14x13 +#531 @ 225,775: 19x14 +#532 @ 718,889: 15x20 +#533 @ 967,375: 24x16 +#534 @ 697,930: 12x10 +#535 @ 830,734: 26x28 +#536 @ 20,928: 11x29 +#537 @ 787,183: 12x24 +#538 @ 556,348: 10x27 +#539 @ 750,444: 14x16 +#540 @ 326,600: 28x27 +#541 @ 421,906: 27x29 +#542 @ 906,629: 15x21 +#543 @ 662,535: 18x12 +#544 @ 839,190: 18x10 +#545 @ 726,268: 17x11 +#546 @ 512,156: 14x14 +#547 @ 203,750: 16x18 +#548 @ 804,748: 17x28 +#549 @ 326,617: 24x19 +#550 @ 726,520: 16x17 +#551 @ 692,199: 18x18 +#552 @ 758,961: 27x12 +#553 @ 498,363: 20x29 +#554 @ 870,762: 10x11 +#555 @ 491,358: 12x21 +#556 @ 701,318: 25x25 +#557 @ 429,844: 23x12 +#558 @ 566,338: 19x13 +#559 @ 303,844: 23x24 +#560 @ 789,800: 18x16 +#561 @ 378,823: 11x24 +#562 @ 934,358: 25x26 +#563 @ 109,282: 11x16 +#564 @ 393,16: 26x22 +#565 @ 56,594: 19x10 +#566 @ 396,758: 12x12 +#567 @ 587,315: 26x23 +#568 @ 826,769: 21x20 +#569 @ 433,542: 16x17 +#570 @ 639,45: 12x12 +#571 @ 918,410: 17x25 +#572 @ 359,609: 25x13 +#573 @ 304,186: 25x14 +#574 @ 645,64: 22x28 +#575 @ 867,742: 28x16 +#576 @ 405,11: 20x25 +#577 @ 95,601: 29x15 +#578 @ 287,232: 14x26 +#579 @ 713,819: 14x24 +#580 @ 477,655: 27x26 +#581 @ 384,162: 10x13 +#582 @ 430,760: 7x10 +#583 @ 367,427: 28x19 +#584 @ 901,463: 17x11 +#585 @ 133,684: 13x25 +#586 @ 219,157: 18x25 +#587 @ 465,359: 15x22 +#588 @ 569,378: 20x19 +#589 @ 850,57: 28x16 +#590 @ 778,238: 17x19 +#591 @ 447,942: 26x20 +#592 @ 297,458: 27x17 +#593 @ 526,534: 29x11 +#594 @ 855,350: 19x26 +#595 @ 111,416: 15x13 +#596 @ 70,211: 22x14 +#597 @ 153,6: 27x14 +#598 @ 295,927: 13x23 +#599 @ 762,111: 7x7 +#600 @ 37,631: 15x27 +#601 @ 93,789: 10x29 +#602 @ 785,655: 22x23 +#603 @ 582,466: 11x24 +#604 @ 497,814: 22x26 +#605 @ 511,276: 22x19 +#606 @ 503,214: 11x19 +#607 @ 467,212: 24x12 +#608 @ 904,600: 24x28 +#609 @ 156,869: 21x15 +#610 @ 937,748: 15x27 +#611 @ 396,103: 16x16 +#612 @ 519,360: 10x28 +#613 @ 626,59: 13x28 +#614 @ 781,405: 17x18 +#615 @ 439,167: 27x10 +#616 @ 356,678: 23x20 +#617 @ 345,49: 22x25 +#618 @ 883,548: 17x16 +#619 @ 506,299: 25x13 +#620 @ 121,215: 19x25 +#621 @ 213,241: 6x3 +#622 @ 586,452: 11x22 +#623 @ 333,254: 10x23 +#624 @ 969,606: 12x21 +#625 @ 504,408: 14x19 +#626 @ 523,618: 20x12 +#627 @ 943,875: 10x20 +#628 @ 320,620: 22x17 +#629 @ 398,111: 8x3 +#630 @ 545,371: 20x29 +#631 @ 119,228: 17x14 +#632 @ 829,469: 11x11 +#633 @ 453,705: 25x22 +#634 @ 146,800: 24x17 +#635 @ 252,214: 10x19 +#636 @ 872,475: 27x16 +#637 @ 300,248: 18x22 +#638 @ 502,522: 18x25 +#639 @ 433,656: 17x29 +#640 @ 90,617: 19x28 +#641 @ 607,0: 23x16 +#642 @ 304,979: 13x16 +#643 @ 527,483: 10x23 +#644 @ 350,544: 15x15 +#645 @ 245,427: 12x18 +#646 @ 430,657: 10x25 +#647 @ 403,639: 15x26 +#648 @ 506,98: 15x22 +#649 @ 561,40: 16x20 +#650 @ 756,842: 24x27 +#651 @ 348,555: 19x24 +#652 @ 966,769: 16x25 +#653 @ 568,629: 12x20 +#654 @ 236,227: 20x21 +#655 @ 473,721: 18x27 +#656 @ 529,18: 19x20 +#657 @ 707,716: 20x12 +#658 @ 970,609: 10x23 +#659 @ 419,76: 23x18 +#660 @ 444,490: 26x28 +#661 @ 924,793: 19x29 +#662 @ 649,11: 16x11 +#663 @ 225,856: 19x10 +#664 @ 760,102: 12x24 +#665 @ 122,386: 18x10 +#666 @ 740,685: 15x10 +#667 @ 566,866: 19x11 +#668 @ 892,750: 10x14 +#669 @ 10,295: 27x14 +#670 @ 170,12: 13x27 +#671 @ 727,841: 21x13 +#672 @ 905,371: 12x22 +#673 @ 902,648: 13x16 +#674 @ 852,803: 19x29 +#675 @ 940,611: 12x19 +#676 @ 387,763: 18x11 +#677 @ 628,10: 21x17 +#678 @ 926,724: 26x23 +#679 @ 472,930: 19x21 +#680 @ 103,259: 23x12 +#681 @ 184,702: 15x23 +#682 @ 106,347: 10x26 +#683 @ 474,738: 23x16 +#684 @ 235,864: 24x14 +#685 @ 918,28: 21x19 +#686 @ 204,279: 23x26 +#687 @ 471,650: 26x20 +#688 @ 759,591: 22x15 +#689 @ 737,887: 16x10 +#690 @ 606,911: 19x19 +#691 @ 398,936: 28x22 +#692 @ 721,552: 20x18 +#693 @ 362,28: 23x25 +#694 @ 320,445: 13x21 +#695 @ 10,896: 15x21 +#696 @ 37,557: 17x18 +#697 @ 699,200: 28x10 +#698 @ 374,616: 20x18 +#699 @ 545,158: 20x18 +#700 @ 778,369: 13x25 +#701 @ 941,334: 16x11 +#702 @ 409,302: 13x22 +#703 @ 842,220: 21x17 +#704 @ 962,543: 18x12 +#705 @ 363,267: 19x10 +#706 @ 951,663: 17x16 +#707 @ 361,183: 11x18 +#708 @ 559,158: 12x11 +#709 @ 717,352: 11x10 +#710 @ 55,206: 28x28 +#711 @ 850,563: 21x15 +#712 @ 828,717: 14x24 +#713 @ 856,110: 15x21 +#714 @ 130,208: 13x27 +#715 @ 721,522: 19x26 +#716 @ 448,959: 26x28 +#717 @ 35,166: 16x20 +#718 @ 916,697: 19x24 +#719 @ 834,779: 22x14 +#720 @ 162,448: 13x13 +#721 @ 281,135: 25x29 +#722 @ 511,30: 26x15 +#723 @ 968,150: 16x27 +#724 @ 883,844: 17x21 +#725 @ 656,534: 20x27 +#726 @ 745,12: 29x14 +#727 @ 588,534: 25x26 +#728 @ 394,332: 12x7 +#729 @ 921,89: 15x28 +#730 @ 604,542: 23x26 +#731 @ 871,840: 20x25 +#732 @ 723,710: 28x22 +#733 @ 315,744: 24x11 +#734 @ 512,294: 19x29 +#735 @ 557,34: 18x17 +#736 @ 21,792: 17x20 +#737 @ 422,863: 21x20 +#738 @ 648,494: 19x22 +#739 @ 977,49: 23x18 +#740 @ 820,886: 11x27 +#741 @ 561,207: 24x20 +#742 @ 313,330: 20x17 +#743 @ 979,304: 16x14 +#744 @ 592,484: 20x16 +#745 @ 704,727: 28x29 +#746 @ 505,538: 10x17 +#747 @ 567,415: 6x3 +#748 @ 795,724: 21x19 +#749 @ 558,161: 18x22 +#750 @ 911,366: 26x22 +#751 @ 291,442: 22x22 +#752 @ 910,490: 22x16 +#753 @ 638,45: 19x10 +#754 @ 355,159: 11x25 +#755 @ 882,864: 14x10 +#756 @ 949,699: 17x13 +#757 @ 619,46: 12x27 +#758 @ 538,481: 19x18 +#759 @ 532,482: 11x19 +#760 @ 868,748: 20x21 +#761 @ 11,817: 19x11 +#762 @ 969,279: 11x12 +#763 @ 634,51: 27x26 +#764 @ 12,634: 29x13 +#765 @ 558,595: 15x26 +#766 @ 256,655: 23x13 +#767 @ 604,588: 12x10 +#768 @ 298,8: 13x11 +#769 @ 734,353: 17x26 +#770 @ 293,2: 13x20 +#771 @ 344,430: 25x10 +#772 @ 282,986: 17x13 +#773 @ 507,747: 12x20 +#774 @ 93,619: 8x18 +#775 @ 409,9: 10x19 +#776 @ 285,356: 17x28 +#777 @ 889,54: 19x15 +#778 @ 402,239: 25x25 +#779 @ 198,949: 28x29 +#780 @ 133,643: 10x11 +#781 @ 29,966: 28x23 +#782 @ 258,934: 13x16 +#783 @ 20,301: 23x27 +#784 @ 287,731: 11x19 +#785 @ 969,433: 16x21 +#786 @ 513,213: 10x11 +#787 @ 367,252: 23x16 +#788 @ 775,62: 28x16 +#789 @ 177,972: 25x20 +#790 @ 855,219: 19x25 +#791 @ 718,186: 10x17 +#792 @ 726,914: 12x20 +#793 @ 585,262: 23x19 +#794 @ 871,331: 15x28 +#795 @ 262,800: 27x13 +#796 @ 786,0: 24x16 +#797 @ 407,231: 19x27 +#798 @ 382,482: 21x24 +#799 @ 501,970: 16x19 +#800 @ 626,74: 17x19 +#801 @ 5,161: 27x19 +#802 @ 947,968: 26x16 +#803 @ 258,140: 20x22 +#804 @ 356,650: 21x24 +#805 @ 159,667: 27x13 +#806 @ 413,320: 12x18 +#807 @ 380,203: 14x15 +#808 @ 16,739: 22x20 +#809 @ 763,8: 10x10 +#810 @ 948,733: 10x10 +#811 @ 422,834: 13x25 +#812 @ 22,104: 21x23 +#813 @ 616,748: 26x12 +#814 @ 294,168: 26x11 +#815 @ 66,322: 21x16 +#816 @ 32,820: 26x29 +#817 @ 149,294: 11x20 +#818 @ 788,481: 20x23 +#819 @ 14,472: 15x29 +#820 @ 42,570: 22x28 +#821 @ 243,61: 16x14 +#822 @ 309,632: 24x16 +#823 @ 305,786: 19x11 +#824 @ 626,693: 22x10 +#825 @ 581,173: 14x17 +#826 @ 659,14: 10x14 +#827 @ 173,116: 13x18 +#828 @ 739,412: 25x21 +#829 @ 809,345: 24x26 +#830 @ 845,438: 24x11 +#831 @ 164,887: 10x29 +#832 @ 240,124: 13x29 +#833 @ 455,404: 21x21 +#834 @ 573,443: 23x29 +#835 @ 200,883: 13x12 +#836 @ 88,343: 21x10 +#837 @ 386,405: 22x24 +#838 @ 596,124: 10x14 +#839 @ 489,251: 11x24 +#840 @ 509,350: 13x21 +#841 @ 720,960: 17x28 +#842 @ 473,719: 22x27 +#843 @ 820,864: 24x16 +#844 @ 435,98: 17x18 +#845 @ 575,105: 16x19 +#846 @ 717,485: 13x21 +#847 @ 573,551: 19x25 +#848 @ 791,20: 26x27 +#849 @ 121,14: 21x15 +#850 @ 145,690: 15x10 +#851 @ 17,146: 18x16 +#852 @ 509,383: 11x29 +#853 @ 294,2: 13x26 +#854 @ 406,840: 29x10 +#855 @ 132,622: 16x22 +#856 @ 511,298: 28x10 +#857 @ 18,94: 14x14 +#858 @ 235,232: 20x14 +#859 @ 285,322: 18x25 +#860 @ 868,544: 12x17 +#861 @ 286,403: 13x25 +#862 @ 793,475: 16x16 +#863 @ 457,784: 12x14 +#864 @ 982,667: 11x27 +#865 @ 745,851: 12x10 +#866 @ 809,246: 16x28 +#867 @ 910,399: 16x16 +#868 @ 168,372: 15x26 +#869 @ 563,332: 29x22 +#870 @ 301,956: 19x15 +#871 @ 962,366: 24x28 +#872 @ 716,361: 27x23 +#873 @ 801,264: 15x21 +#874 @ 475,860: 19x24 +#875 @ 694,687: 16x23 +#876 @ 12,458: 23x14 +#877 @ 351,52: 10x12 +#878 @ 895,830: 23x21 +#879 @ 305,716: 18x11 +#880 @ 349,169: 23x15 +#881 @ 692,133: 25x20 +#882 @ 837,19: 20x16 +#883 @ 761,154: 13x28 +#884 @ 228,514: 21x10 +#885 @ 518,465: 22x24 +#886 @ 417,53: 20x25 +#887 @ 394,859: 13x22 +#888 @ 969,958: 15x24 +#889 @ 750,925: 19x10 +#890 @ 693,704: 23x21 +#891 @ 127,573: 27x26 +#892 @ 59,532: 13x22 +#893 @ 652,611: 10x14 +#894 @ 232,167: 27x11 +#895 @ 924,717: 19x25 +#896 @ 273,799: 26x12 +#897 @ 341,669: 22x22 +#898 @ 215,347: 20x13 +#899 @ 119,335: 29x20 +#900 @ 284,735: 15x16 +#901 @ 778,895: 11x10 +#902 @ 93,165: 28x10 +#903 @ 42,208: 23x26 +#904 @ 595,578: 20x21 +#905 @ 267,340: 22x20 +#906 @ 254,321: 11x17 +#907 @ 739,595: 27x18 +#908 @ 740,372: 20x12 +#909 @ 585,225: 22x22 +#910 @ 449,92: 17x25 +#911 @ 657,762: 18x22 +#912 @ 177,215: 28x23 +#913 @ 61,809: 10x16 +#914 @ 627,757: 22x25 +#915 @ 733,172: 14x27 +#916 @ 590,777: 13x25 +#917 @ 55,19: 27x27 +#918 @ 102,113: 18x15 +#919 @ 435,877: 12x16 +#920 @ 941,707: 20x12 +#921 @ 833,187: 26x12 +#922 @ 967,877: 21x25 +#923 @ 216,820: 12x28 +#924 @ 788,932: 29x13 +#925 @ 361,203: 12x26 +#926 @ 434,470: 10x18 +#927 @ 582,212: 26x14 +#928 @ 99,799: 10x29 +#929 @ 686,205: 20x16 +#930 @ 145,380: 14x19 +#931 @ 330,313: 18x20 +#932 @ 656,664: 25x28 +#933 @ 202,253: 17x21 +#934 @ 36,541: 26x22 +#935 @ 75,140: 16x10 +#936 @ 165,211: 29x21 +#937 @ 177,371: 10x29 +#938 @ 93,104: 21x12 +#939 @ 897,879: 19x24 +#940 @ 858,238: 21x17 +#941 @ 689,657: 16x17 +#942 @ 906,364: 14x3 +#943 @ 31,356: 18x25 +#944 @ 104,975: 26x22 +#945 @ 790,240: 15x15 +#946 @ 630,180: 10x14 +#947 @ 492,136: 29x10 +#948 @ 585,929: 26x21 +#949 @ 690,497: 22x26 +#950 @ 54,406: 11x24 +#951 @ 198,344: 19x22 +#952 @ 507,81: 28x28 +#953 @ 644,295: 15x18 +#954 @ 488,208: 11x26 +#955 @ 567,607: 28x19 +#956 @ 663,933: 17x24 +#957 @ 362,199: 28x18 +#958 @ 306,176: 16x21 +#959 @ 444,92: 27x19 +#960 @ 30,61: 12x18 +#961 @ 349,53: 23x19 +#962 @ 687,39: 21x28 +#963 @ 656,138: 22x19 +#964 @ 881,748: 13x15 +#965 @ 583,343: 14x26 +#966 @ 480,323: 27x13 +#967 @ 135,142: 21x12 +#968 @ 542,495: 21x21 +#969 @ 61,529: 11x20 +#970 @ 45,757: 28x11 +#971 @ 534,929: 27x14 +#972 @ 833,564: 28x11 +#973 @ 26,755: 28x19 +#974 @ 275,294: 20x20 +#975 @ 508,770: 28x15 +#976 @ 207,539: 25x17 +#977 @ 296,142: 19x19 +#978 @ 399,574: 29x27 +#979 @ 492,806: 16x27 +#980 @ 21,699: 20x29 +#981 @ 583,930: 23x15 +#982 @ 766,892: 16x19 +#983 @ 102,434: 15x29 +#984 @ 315,625: 26x26 +#985 @ 862,499: 15x22 +#986 @ 720,251: 22x16 +#987 @ 60,555: 29x18 +#988 @ 930,418: 16x17 +#989 @ 176,198: 15x19 +#990 @ 720,293: 12x27 +#991 @ 55,940: 26x29 +#992 @ 696,647: 29x11 +#993 @ 323,717: 24x17 +#994 @ 59,221: 16x29 +#995 @ 486,922: 12x13 +#996 @ 623,748: 29x12 +#997 @ 132,215: 25x29 +#998 @ 261,232: 28x29 +#999 @ 851,805: 17x25 +#1000 @ 243,547: 18x17 +#1001 @ 17,973: 12x22 +#1002 @ 499,410: 20x14 +#1003 @ 395,685: 18x21 +#1004 @ 601,251: 16x14 +#1005 @ 789,353: 24x16 +#1006 @ 430,477: 15x20 +#1007 @ 527,67: 21x11 +#1008 @ 776,265: 27x18 +#1009 @ 424,959: 26x15 +#1010 @ 848,431: 17x10 +#1011 @ 351,45: 11x12 +#1012 @ 592,928: 16x13 +#1013 @ 860,806: 28x25 +#1014 @ 17,950: 11x24 +#1015 @ 764,2: 14x27 +#1016 @ 639,30: 29x12 +#1017 @ 66,508: 21x26 +#1018 @ 633,274: 12x9 +#1019 @ 126,122: 21x29 +#1020 @ 539,109: 20x16 +#1021 @ 407,252: 21x21 +#1022 @ 240,141: 14x29 +#1023 @ 521,719: 20x18 +#1024 @ 210,777: 11x14 +#1025 @ 679,556: 25x18 +#1026 @ 807,158: 13x19 +#1027 @ 509,242: 18x13 +#1028 @ 683,701: 28x18 +#1029 @ 394,502: 11x11 +#1030 @ 244,701: 26x28 +#1031 @ 519,154: 18x23 +#1032 @ 556,926: 19x14 +#1033 @ 958,611: 20x28 +#1034 @ 416,420: 18x10 +#1035 @ 280,310: 14x20 +#1036 @ 719,785: 11x18 +#1037 @ 717,474: 16x16 +#1038 @ 747,896: 16x10 +#1039 @ 649,955: 29x24 +#1040 @ 590,774: 14x15 +#1041 @ 857,930: 28x18 +#1042 @ 716,536: 29x15 +#1043 @ 364,398: 20x15 +#1044 @ 767,915: 14x24 +#1045 @ 805,908: 14x15 +#1046 @ 518,293: 17x24 +#1047 @ 792,187: 18x11 +#1048 @ 210,236: 17x14 +#1049 @ 948,235: 19x21 +#1050 @ 223,701: 12x16 +#1051 @ 658,322: 19x18 +#1052 @ 259,525: 20x20 +#1053 @ 37,358: 11x13 +#1054 @ 162,637: 13x17 +#1055 @ 375,754: 27x19 +#1056 @ 155,282: 29x17 +#1057 @ 904,360: 20x12 +#1058 @ 809,25: 26x15 +#1059 @ 313,233: 24x20 +#1060 @ 905,618: 21x24 +#1061 @ 279,421: 27x21 +#1062 @ 740,372: 10x14 +#1063 @ 893,534: 24x20 +#1064 @ 908,473: 15x24 +#1065 @ 305,421: 29x23 +#1066 @ 61,677: 26x27 +#1067 @ 711,342: 29x21 +#1068 @ 657,971: 27x14 +#1069 @ 427,692: 20x19 +#1070 @ 586,933: 11x25 +#1071 @ 830,860: 28x14 +#1072 @ 24,807: 18x16 +#1073 @ 759,835: 25x20 +#1074 @ 395,628: 18x17 +#1075 @ 533,925: 21x15 +#1076 @ 349,911: 24x25 +#1077 @ 14,726: 11x29 +#1078 @ 167,100: 16x20 +#1079 @ 858,222: 16x10 +#1080 @ 772,8: 12x17 +#1081 @ 186,631: 17x26 +#1082 @ 739,184: 13x14 +#1083 @ 584,358: 13x22 +#1084 @ 957,679: 10x25 +#1085 @ 762,982: 17x11 +#1086 @ 347,332: 20x23 +#1087 @ 612,833: 26x21 +#1088 @ 720,87: 17x16 +#1089 @ 924,871: 25x27 +#1090 @ 905,321: 24x24 +#1091 @ 347,707: 10x12 +#1092 @ 177,691: 19x29 +#1093 @ 698,184: 24x14 +#1094 @ 824,447: 24x28 +#1095 @ 322,640: 11x20 +#1096 @ 941,600: 24x29 +#1097 @ 43,439: 20x24 +#1098 @ 520,918: 28x26 +#1099 @ 837,951: 25x18 +#1100 @ 912,521: 12x18 +#1101 @ 338,60: 23x20 +#1102 @ 757,886: 22x22 +#1103 @ 168,855: 13x19 +#1104 @ 310,343: 24x14 +#1105 @ 262,133: 19x14 +#1106 @ 52,849: 21x18 +#1107 @ 410,533: 26x12 +#1108 @ 128,312: 26x13 +#1109 @ 73,561: 13x24 +#1110 @ 861,391: 13x23 +#1111 @ 877,733: 27x12 +#1112 @ 478,787: 19x27 +#1113 @ 771,648: 23x15 +#1114 @ 850,567: 18x13 +#1115 @ 784,627: 16x26 +#1116 @ 802,902: 28x27 +#1117 @ 736,344: 15x23 +#1118 @ 286,496: 13x12 +#1119 @ 97,364: 21x16 +#1120 @ 952,861: 16x17 +#1121 @ 418,607: 26x13 +#1122 @ 498,530: 18x24 +#1123 @ 918,739: 25x11 +#1124 @ 661,584: 20x15 +#1125 @ 728,416: 21x29 +#1126 @ 883,415: 22x16 +#1127 @ 15,475: 13x16 +#1128 @ 234,591: 12x17 +#1129 @ 254,383: 29x20 +#1130 @ 188,744: 24x19 +#1131 @ 149,564: 14x21 +#1132 @ 824,420: 12x16 +#1133 @ 775,937: 28x16 +#1134 @ 791,803: 12x6 +#1135 @ 151,471: 18x16 +#1136 @ 928,962: 29x21 +#1137 @ 15,352: 15x25 +#1138 @ 10,907: 19x19 +#1139 @ 384,611: 20x29 +#1140 @ 842,493: 20x25 +#1141 @ 49,694: 23x10 +#1142 @ 25,922: 16x17 +#1143 @ 182,413: 13x19 +#1144 @ 450,576: 20x20 +#1145 @ 130,391: 19x29 +#1146 @ 356,202: 28x12 +#1147 @ 117,428: 15x17 +#1148 @ 29,942: 26x10 +#1149 @ 16,897: 26x17 +#1150 @ 275,387: 16x13 +#1151 @ 673,36: 20x23 +#1152 @ 616,177: 21x13 +#1153 @ 201,342: 20x18 +#1154 @ 764,53: 21x14 +#1155 @ 34,548: 23x20 +#1156 @ 807,279: 28x24 +#1157 @ 240,919: 24x10 +#1158 @ 892,753: 12x13 +#1159 @ 121,301: 20x19 +#1160 @ 123,121: 26x27 +#1161 @ 582,271: 12x25 +#1162 @ 788,620: 19x24 +#1163 @ 34,236: 10x19 +#1164 @ 3,900: 23x20 +#1165 @ 470,846: 11x23 +#1166 @ 401,769: 14x23 +#1167 @ 553,857: 23x10 +#1168 @ 596,554: 29x11 +#1169 @ 423,662: 13x29 +#1170 @ 874,739: 12x18 +#1171 @ 341,302: 11x28 +#1172 @ 749,404: 19x12 +#1173 @ 131,60: 24x24 +#1174 @ 446,783: 18x22 +#1175 @ 121,375: 27x12 +#1176 @ 241,547: 18x14 +#1177 @ 784,916: 25x27 +#1178 @ 318,723: 29x20 +#1179 @ 116,277: 18x13 +#1180 @ 551,686: 23x13 +#1181 @ 811,906: 21x11 +#1182 @ 344,303: 24x10 +#1183 @ 713,137: 11x19 +#1184 @ 827,230: 10x25 +#1185 @ 52,210: 23x16 +#1186 @ 965,268: 29x12 +#1187 @ 452,580: 25x23 +#1188 @ 906,393: 24x27 +#1189 @ 125,202: 11x24 +#1190 @ 843,191: 15x17 +#1191 @ 358,621: 15x13 +#1192 @ 509,621: 16x16 +#1193 @ 58,436: 18x24 +#1194 @ 825,249: 28x29 +#1195 @ 872,45: 10x19 +#1196 @ 324,266: 12x26 +#1197 @ 260,556: 28x10 +#1198 @ 601,230: 16x14 +#1199 @ 665,764: 29x19 +#1200 @ 55,869: 15x21 +#1201 @ 843,438: 24x24 +#1202 @ 666,974: 10x3 +#1203 @ 661,312: 16x27 +#1204 @ 734,862: 14x15 +#1205 @ 677,551: 13x17 +#1206 @ 368,438: 18x13 +#1207 @ 937,311: 22x29 +#1208 @ 449,679: 15x24 +#1209 @ 212,586: 23x11 +#1210 @ 588,119: 13x11 +#1211 @ 598,118: 20x19 +#1212 @ 51,454: 19x12 +#1213 @ 306,853: 24x17 +#1214 @ 315,570: 22x17 +#1215 @ 925,761: 21x12 +#1216 @ 260,918: 10x19 +#1217 @ 377,258: 15x28 +#1218 @ 812,820: 22x10 +#1219 @ 44,608: 28x28 +#1220 @ 258,186: 10x29 +#1221 @ 631,272: 17x14 +#1222 @ 966,324: 18x11 +#1223 @ 86,233: 15x22 +#1224 @ 9,409: 11x14 +#1225 @ 52,933: 22x22 +#1226 @ 679,914: 10x21 +#1227 @ 52,78: 13x21 +#1228 @ 163,237: 22x22 +#1229 @ 852,570: 13x16 diff --git a/2018/03/src/main.rs b/2018/03/src/main.rs new file mode 100644 index 0000000..7592bb0 --- /dev/null +++ b/2018/03/src/main.rs @@ -0,0 +1,112 @@ +use std::collections::HashSet; +use std::io::{self, BufRead}; + +use regex::Regex; + +struct Claim { + id: usize, + x: usize, + y: usize, + width: usize, + height: usize, +} + +fn main() { + let re = Regex::new(r"#(\d+) @ (\d+),(\d+): (\d+)x(\d+)").expect("failed to build regex"); + + let claims = io::stdin() + .lock() + .lines() + .filter_map(Result::ok) + .map(|line| { + let caps = re + .captures(&line) + .expect("faild to capture input from line"); + + Claim { + id: caps + .get(1) + .expect("faild to find id") + .as_str() + .parse::() + .expect("faild to parse id"), + x: caps + .get(2) + .expect("failed to find x") + .as_str() + .parse::() + .expect("faild to parse x"), + y: caps + .get(3) + .expect("failed to find y") + .as_str() + .parse::() + .expect("faild to parse y"), + width: caps + .get(4) + .expect("failed to find width") + .as_str() + .parse::() + .expect("faild to parse width"), + height: caps + .get(5) + .expect("failed to find height") + .as_str() + .parse::() + .expect("faild to parse height"), + } + }) + .collect::>(); + + let width = claims + .iter() + .map(|claim| claim.x + claim.width) + .max() + .expect("failed to find fabric width"); + + let height = claims + .iter() + .map(|claim| claim.y + claim.height) + .max() + .expect("failed to find fabric height"); + + let mut fabric = vec![HashSet::new(); width * height].into_boxed_slice(); + let mut not_overlapping = HashSet::new(); + + for claim in &claims { + let mut success = true; + + for d_y in claim.y..(claim.y + claim.height) { + let y = d_y * width; + + for x in claim.x..(claim.x + claim.width) { + let patch = &mut fabric[y + x]; + + if !patch.is_empty() { + success = false; + + for id in patch.iter() { + not_overlapping.remove(id); + } + } + + patch.insert(claim.id); + } + } + + if success { + not_overlapping.insert(claim.id); + } + } + + let overlaping = fabric.iter().filter(|patch| patch.len() > 1).count(); + + println!("part.one={}", overlaping); + + let not_overlapping = not_overlapping + .into_iter() + .next() + .expect("failed to get first non overlapping claim"); + + println!("part.two={}", not_overlapping); +}