From 9692c0c1dc837bf462e04aabd9bb5469ef68fc61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dobos=20=C3=81d=C3=A1m?= Date: Sun, 18 Dec 2022 01:32:09 +0100 Subject: [PATCH] Day14 --- day14/input.txt | 183 ++++++++++++++++++++++++++++++++++++++++++++++++ day14/sand | Bin 0 -> 16256 bytes day14/sand.c | 149 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 332 insertions(+) create mode 100644 day14/input.txt create mode 100755 day14/sand create mode 100644 day14/sand.c diff --git a/day14/input.txt b/day14/input.txt new file mode 100644 index 0000000..e46eaa6 --- /dev/null +++ b/day14/input.txt @@ -0,0 +1,183 @@ +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +525,75 -> 525,77 -> 517,77 -> 517,83 -> 532,83 -> 532,77 -> 531,77 -> 531,75 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +513,169 -> 518,169 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +510,34 -> 514,34 +530,86 -> 530,87 -> 543,87 -> 543,86 +517,150 -> 521,150 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +501,177 -> 506,177 +505,115 -> 505,119 -> 502,119 -> 502,126 -> 514,126 -> 514,119 -> 510,119 -> 510,115 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +511,52 -> 516,52 +505,115 -> 505,119 -> 502,119 -> 502,126 -> 514,126 -> 514,119 -> 510,119 -> 510,115 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +504,30 -> 508,30 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +523,150 -> 527,150 +525,175 -> 530,175 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +525,75 -> 525,77 -> 517,77 -> 517,83 -> 532,83 -> 532,77 -> 531,77 -> 531,75 +532,52 -> 537,52 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +525,75 -> 525,77 -> 517,77 -> 517,83 -> 532,83 -> 532,77 -> 531,77 -> 531,75 +505,115 -> 505,119 -> 502,119 -> 502,126 -> 514,126 -> 514,119 -> 510,119 -> 510,115 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +502,103 -> 502,105 -> 498,105 -> 498,112 -> 507,112 -> 507,105 -> 504,105 -> 504,103 +510,30 -> 514,30 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +511,150 -> 515,150 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +514,147 -> 518,147 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +511,175 -> 516,175 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +507,32 -> 511,32 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +505,115 -> 505,119 -> 502,119 -> 502,126 -> 514,126 -> 514,119 -> 510,119 -> 510,115 +508,177 -> 513,177 +502,103 -> 502,105 -> 498,105 -> 498,112 -> 507,112 -> 507,105 -> 504,105 -> 504,103 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +515,177 -> 520,177 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +521,49 -> 526,49 +520,153 -> 524,153 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +507,49 -> 512,49 +518,175 -> 523,175 +505,115 -> 505,119 -> 502,119 -> 502,126 -> 514,126 -> 514,119 -> 510,119 -> 510,115 +514,49 -> 519,49 +521,173 -> 526,173 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +495,32 -> 499,32 +504,34 -> 508,34 +510,171 -> 515,171 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +514,129 -> 514,133 -> 507,133 -> 507,141 -> 518,141 -> 518,133 -> 517,133 -> 517,129 +517,71 -> 517,72 -> 527,72 -> 527,71 +514,129 -> 514,133 -> 507,133 -> 507,141 -> 518,141 -> 518,133 -> 517,133 -> 517,129 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +526,153 -> 530,153 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +525,75 -> 525,77 -> 517,77 -> 517,83 -> 532,83 -> 532,77 -> 531,77 -> 531,75 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +507,68 -> 507,69 -> 523,69 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +513,32 -> 517,32 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +502,103 -> 502,105 -> 498,105 -> 498,112 -> 507,112 -> 507,105 -> 504,105 -> 504,103 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +516,40 -> 521,40 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +520,36 -> 520,37 -> 528,37 -> 528,36 +498,34 -> 502,34 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +514,129 -> 514,133 -> 507,133 -> 507,141 -> 518,141 -> 518,133 -> 517,133 -> 517,129 +498,30 -> 502,30 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +504,175 -> 509,175 +502,103 -> 502,105 -> 498,105 -> 498,112 -> 507,112 -> 507,105 -> 504,105 -> 504,103 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +510,46 -> 515,46 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +520,36 -> 520,37 -> 528,37 -> 528,36 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +514,129 -> 514,133 -> 507,133 -> 507,141 -> 518,141 -> 518,133 -> 517,133 -> 517,129 +516,34 -> 520,34 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +525,75 -> 525,77 -> 517,77 -> 517,83 -> 532,83 -> 532,77 -> 531,77 -> 531,75 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +514,173 -> 519,173 +492,34 -> 496,34 +525,52 -> 530,52 +502,103 -> 502,105 -> 498,105 -> 498,112 -> 507,112 -> 507,105 -> 504,105 -> 504,103 +507,68 -> 507,69 -> 523,69 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +520,36 -> 520,37 -> 528,37 -> 528,36 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +505,115 -> 505,119 -> 502,119 -> 502,126 -> 514,126 -> 514,119 -> 510,119 -> 510,115 +507,173 -> 512,173 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +504,52 -> 509,52 +502,103 -> 502,105 -> 498,105 -> 498,112 -> 507,112 -> 507,105 -> 504,105 -> 504,103 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +517,71 -> 517,72 -> 527,72 -> 527,71 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +524,46 -> 529,46 +508,153 -> 512,153 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +530,86 -> 530,87 -> 543,87 -> 543,86 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +504,26 -> 508,26 +514,129 -> 514,133 -> 507,133 -> 507,141 -> 518,141 -> 518,133 -> 517,133 -> 517,129 +522,177 -> 527,177 +525,75 -> 525,77 -> 517,77 -> 517,83 -> 532,83 -> 532,77 -> 531,77 -> 531,75 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +514,129 -> 514,133 -> 507,133 -> 507,141 -> 518,141 -> 518,133 -> 517,133 -> 517,129 +517,46 -> 522,46 +507,28 -> 511,28 +514,153 -> 518,153 +517,144 -> 521,144 +517,71 -> 517,72 -> 527,72 -> 527,71 +525,75 -> 525,77 -> 517,77 -> 517,83 -> 532,83 -> 532,77 -> 531,77 -> 531,75 +514,129 -> 514,133 -> 507,133 -> 507,141 -> 518,141 -> 518,133 -> 517,133 -> 517,129 +520,147 -> 524,147 +530,86 -> 530,87 -> 543,87 -> 543,86 +518,52 -> 523,52 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +517,171 -> 522,171 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +505,115 -> 505,119 -> 502,119 -> 502,126 -> 514,126 -> 514,119 -> 510,119 -> 510,115 +497,166 -> 497,165 -> 497,166 -> 499,166 -> 499,160 -> 499,166 -> 501,166 -> 501,157 -> 501,166 -> 503,166 -> 503,163 -> 503,166 -> 505,166 -> 505,164 -> 505,166 -> 507,166 -> 507,162 -> 507,166 -> 509,166 -> 509,157 -> 509,166 -> 511,166 -> 511,162 -> 511,166 -> 513,166 -> 513,162 -> 513,166 -> 515,166 -> 515,163 -> 515,166 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +528,49 -> 533,49 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 +529,177 -> 534,177 +501,32 -> 505,32 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +501,28 -> 505,28 +493,23 -> 493,15 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,17 -> 499,23 -> 501,23 -> 501,17 -> 501,23 -> 503,23 -> 503,14 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +502,103 -> 502,105 -> 498,105 -> 498,112 -> 507,112 -> 507,105 -> 504,105 -> 504,103 +535,100 -> 535,93 -> 535,100 -> 537,100 -> 537,92 -> 537,100 -> 539,100 -> 539,99 -> 539,100 -> 541,100 -> 541,96 -> 541,100 -> 543,100 -> 543,92 -> 543,100 -> 545,100 -> 545,97 -> 545,100 -> 547,100 -> 547,95 -> 547,100 -> 549,100 -> 549,93 -> 549,100 -> 551,100 -> 551,90 -> 551,100 +513,43 -> 518,43 +520,43 -> 525,43 +505,65 -> 505,58 -> 505,65 -> 507,65 -> 507,55 -> 507,65 -> 509,65 -> 509,60 -> 509,65 -> 511,65 -> 511,56 -> 511,65 -> 513,65 -> 513,62 -> 513,65 diff --git a/day14/sand b/day14/sand new file mode 100755 index 0000000000000000000000000000000000000000..2e531fa9c62197d6a70432d639b13658b0efa577 GIT binary patch literal 16256 zcmeHOeQ;b=6~CJg2=rsqlG0L;u7x6q*(PmT8l;eZZ2GEc8~ZWJjOAsM-83tk-MIS} zQiK}ZF4J{cC(Ib^jQyiHC^*h&5oD?ZnzqmsM>J(%CTP*<&@r(EN@+FJw$IJ zXSSf@_}AXdd*`0t`MU4i``+G{ckkB&O^qcUkKj@&?i7-nVId7l(0?0i2+<&xiD@{` z6W5E&0GHutP+~V7DzOAiE0kU-DA~=S$|UqU3l>bdg+$4&Q0cwgk}wsO7EgBNR8_p2 zzNH$*l;w6j9~qbBxv6oeXTgb^?-)GW*D`0yIntqalMU%mA%8qX zh^P7#9He9A<6+b+jOfwuZ##(=DzhP&If<|jm~RqX12&od-39R40{ATj@MnPgaJUQQ zVY0Z(3gG>~eK_3317N-zBwp9sx`TRqBo>TD9texhU^E(U1B!lc)00LpVd$N~NK9-C z8*LrIgy;-+Cc_34BFT7LeZ8JcwgqGD;Gx@guin;iuihSvL`7F35;NKbxuMarRIF)Q zyKPTd8z18{Bw^z zj$v0Kz6qWRKiBwqGOT_#cB|(W<9iie(ICwP%O$`BMzLenIwY_90@O$ zVg`yCC}yCTfno-V87OAp|CWIdyw{)8(kCmlT=|;|h0rqnMu|D7rC+KzB->yvNdP`= zE=YoS=Lyp9Aj#>`Kbxl6D|wo*ogO`E^E6RAJ$k_AX<~JH^ckC{3DxP*Cv2W3Qm02B zV;<4A%4n;Fj0gULpQ4ZRXI=a|F8;WSf6K+c;pA)IS(`n2kCy$5mVWzG^X5Qpf9)$; ze)+G_Ds$Ge&^*)b_s-i1775BPe-nt7FMo|l{g^Qese7F2NZl3Yuy0VyR-virJCokcJ!iA1qWf}pu!w(m)FVml;57^Bo?V#w`l3*E2*kw zj~i39-10^+Bd=UE&5;n2ces2xc+XbY+VRPL^nM7bvITaVn(}*Y6yl<(J$#bh0<`qh z8%0z7vDAA2y3unXEmyYSW*Hs=InTnPVDOMo_BZk$ZkNpGSp*M zznR{Q59R}zBY@7J2M030L5+GQC(~6<|6tU1YX^o)>FPSjWj3=9Is=*AO7p}6Ihnw8 ze~HvA$@P&)YkN)0Pkn=YX}LZ!(el^LATRT!mr|!yzA9q{m6p3<__AdvV`-ivT5fy{ zAN;3jre%1KY9+mR)=R|utvGI(fy^Fm+~;$$uIbT%_2_2`@)yO{D?F(4A7IqBJwn5nk3jEN>mPlYau!aA;n9`9Cc ztBv&sQ*(2DR@!Eh8cA)++gUGRjB(^dSaPZtK`9hxqBHWgi;RvZ-M$yJbkrt{a3wE-+kw z(1>x(yZ&G{Fm|Fz%LN8=G$`$U3=CRunJAJ-_40-mP{bvJai)JPZWJ zkX&;hfExx$4jhA7`fr~4LGMl)!8u&FGYi8QuQZec#{j4MJ!%N&M5aGg1!ZIpG6=GP z^P}{mXgQ#JJKsEpqPxF$2X6Ovr!-?{y0zpIHzQ)pz==%7O?!oOrG+{VZO$1$`H(IAxmM zpxvN*L3e@Dd~5`?1@!3qra1`ulfRqh8PNUzFwH8OZKBXOPb!`VHVRL7rRUnImsj*c zMmT-j?}3k-NMZHm@{<%^O+_7!UGJG@7va+@8>i3toOjCo6+Pmvxwn6M@s0BdCi^er z7=)fQBoKvg1IH2IEudU{s62|}L&W=I87hJ4m5-FHns!+*U0V8F8CqqvXCFk*o;A%Y zsQs){Dm?H$Ci2iJK4)Rvc=k@f@?OECk*3=}g^%s?>%#S9cPP|QFv1H}v!Gw^XU z!0YFDy_|ZD5-rLBzDij|z4YKKm@I>HEP9RNd0pPMis!Xwa~03)^XQ$13d`{wC{Fyo zQaY`*vfY(LIzoz8);vjjx z4(0xTMtGgK+hL9B?*>Ji6>U+pOVJ)h-S!{FS2S1}YgVng-FNer)>O<$`D$zZi~Tj# zwJFKg?pU;1s-FU0DXy{e$x=V?nI$s>KaUu%Bb*rr-B18;Er6$hQ(Sj@zEME` zao|2jJg$Bp_>7Wk1dn^he@ZyDR2iwqo;Uz}vi84T0Dl*FCC1yF2KH>xuStE}q-xyC z|9wI9fzq#Z>6=P_RO!qAT|vJL56+p0FsL4o^8Zo5rzw2kYA`7B|5%{2fz$Q6{oerG zM~bep9Qb?}M(me>&n&^Oko!5asV!mD`r}xq9&C;1MsS+|kTg>5?fy0~zNTF_I`uYM z)t-cAD6Vgd##@6?J!HfaNj;eA7H#p)u4vc@hx|2@YtWkgh#pKNg4^|Q%t&k(?TKJ# zSP!K-JGaBc!RgR6Ca5NZu@Ks$>x~;%tPALY^{aKPrC)vb`W5Tet^$m07kWTbQf>7{ zp|5G$uyRF{zM-*kQ(&{cdBw`604&_w1R8ji|3|Ij4~K$AP{?b5mx+4^Y$tVU7l94X zjsa@}!UPBzgg0wX0B=-qDNNinpofxiy#qO*4FzjAz%mqx>8WHmq&7gftS9Vsuw}Oi zBtC@ZwIcRi12b&l;&9u8=(k%-U_hQ&_=&EHG3gJ&~ z?=*s~phm)?9bCh9i*TY#_+xP+?B5nk`MVPFu5iNG?to;2sv{u-Bh7cAt5|-q?a3UFr$0jg3WQlMzNCv9b6*YvPMw;-W>faVum1MY0_zmPl_-V*O zJ1#rlAMQ|tv?By>%vnCH(P~+69if7q5jeBVk#*t6ZPJO+Kgk{XpFuP~#3Kg3byjij z$K&~-5=&jK6TJZk&B@rl(7rR$rNZ+tixXlgDo%U%{xkX>;4J(+W{iHpsUd+@-$wi?yQkCs_ei{KrQz5qJc{Wp? zS3^Y><&IhLRn%zC%Jw`@Wy*25{jA4y2kdDM%skJ7nKr9P?)Gy7@~BWw*`DX+O#780 z$9G@wq^RppW0upRTia@q5| zjVZrhvcCKNq4_7}kNaQvl%}Hg` literal 0 HcmV?d00001 diff --git a/day14/sand.c b/day14/sand.c new file mode 100644 index 0000000..239bc85 --- /dev/null +++ b/day14/sand.c @@ -0,0 +1,149 @@ +#include +#include +#include + +#define BUFFER_SIZE 512 +#define MAX_ROCK_NUMBER 16*1024 +#define FLOOR_OFFSET 2 +#define EDGE_BUFFER 256 +#define min(a, b) (a <= b ? a : b) +#define max(a, b) (a >= b ? a : b) +// Use this setting to switch between task 1 and task 2 +#define ENABLE_FLOOR 1 + +typedef struct point { + int x; + int y; +} POINT; + +void buildPath(POINT, POINT, POINT*, int*); +POINT nextFall(int, int *[*], POINT); + +int main() { + char buf[BUFFER_SIZE], *p, c; + memset(buf, 0, BUFFER_SIZE); + p = buf; + POINT bedrock[MAX_ROCK_NUMBER], prev, curr; + int bedrock_count = 0; + int maxX = 0, maxY = 0, x, y; + + // Read input + while ((c = getchar()) != EOF) { + *p++ = c; + if (c == '\n') { + p = buf; + sscanf(p, "%i,%i", &x, &y); + prev.x = x; + prev.y = y; + while (*p++ != ' ') {} + while(*p != 0) { + sscanf(p, "-> %i,%i", &x, &y); + if (x > maxX) maxX = x; + if (y > maxY) maxY = y; + curr.x = x; + curr.y = y; + + buildPath(prev, curr, bedrock, &bedrock_count); + + prev.x = x; + prev.y = y; + while (*p++ != ' ') {} + while (*p != ' ' && *p != 0) p++; + p++; + } + + memset(buf, 0, BUFFER_SIZE); + p = buf; + } + } + + POINT source = { .x = 500, .y = 0 }, sand; + + // Allocate memory for the map + int **map = (int**)malloc((maxX + 1 + EDGE_BUFFER) * sizeof(int*)); + for (int i = 0; i < maxX + 1 + EDGE_BUFFER; i++) { + map[i] = (int*)malloc((maxY + FLOOR_OFFSET) * sizeof(int)); + memset(map[i], 0, (maxY + FLOOR_OFFSET) * sizeof(int)); + } + + // Fill in the map with bedrock + for (int i = 0; i < bedrock_count; i++) { + map[bedrock[i].x][bedrock[i].y] = 1; + } + + int fallthrough = 0, sum = 0; + POINT fallPosition; + + // Play until sand falls through + while (!fallthrough) { + // Simulate each sand + sand.x = source.x; + sand.y = source.y; + + do { + fallPosition = nextFall(maxY + FLOOR_OFFSET, map, sand); + + // We fell through the map + if (fallPosition.x == -2) { + fallthrough = 1; + break; + } + + // We hit bedrock + if (fallPosition.x == -1) { + sum += 1; + map[sand.x][sand.y] = 2; + // Source gets clogged + if (sand.x == source.x && sand.y == source.y) { + fallthrough = 1; + } + } + + sand = fallPosition; + } while(fallPosition.x != -1); + } + + printf("%i\n", sum); +} + +void buildPath(POINT prev, POINT curr, POINT* bedrock, int* bedrock_count) { + if (prev.x != curr.x) { + for (int i = min(prev.x, curr.x); i <= max(prev.x, curr.x); i++) { + bedrock[*bedrock_count].x = i; + bedrock[*bedrock_count].y = prev.y; + (*bedrock_count)++; + } + } else if (prev.y != curr.y) { + for (int i = min(prev.y, curr.y); i <= max(prev.y, curr.y); i++) { + bedrock[*bedrock_count].x = prev.x; + bedrock[*bedrock_count].y = i; + (*bedrock_count)++; + } + } +} + +POINT nextFall(int mapHeight, int *map[mapHeight], POINT point) { + POINT end = { .x = -1, .y = -1 }; + + if (point.y == mapHeight - FLOOR_OFFSET && !ENABLE_FLOOR) { + // Fall out of the map + end.x = -2; + end.y = -2; + } else if (ENABLE_FLOOR && point.y == mapHeight - 1) { + // Fall on floor + } else if (map[point.x][point.y+1] == 0) { + // Fall straight down + end.x = point.x; + end.y = point.y + 1; + } else if (map[point.x - 1][point.y + 1] == 0) { + // Fall left down + end.x = point.x - 1; + end.y = point.y + 1; + } else if (map[point.x + 1][point.y + 1] == 0) { + // Fall right down + end.x = point.x + 1; + end.y = point.y + 1; + } + + return end; +}