2022 - Day 14
This commit is contained in:
parent
af3843e583
commit
619d58fc18
176
2022/input/14/input
Normal file
176
2022/input/14/input
Normal file
|
@ -0,0 +1,176 @@
|
|||
500,30 -> 504,30
|
||||
503,28 -> 507,28
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
496,97 -> 496,99 -> 488,99 -> 488,103 -> 508,103 -> 508,99 -> 502,99 -> 502,97
|
||||
537,66 -> 541,66
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
479,85 -> 479,87 -> 473,87 -> 473,94 -> 486,94 -> 486,87 -> 483,87 -> 483,85
|
||||
540,64 -> 544,64
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
528,68 -> 532,68
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
537,62 -> 541,62
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
500,34 -> 504,34
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
482,82 -> 498,82 -> 498,81
|
||||
486,115 -> 486,117 -> 484,117 -> 484,123 -> 494,123 -> 494,117 -> 490,117 -> 490,115
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
546,64 -> 550,64
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
530,50 -> 530,53 -> 523,53 -> 523,57 -> 541,57 -> 541,53 -> 534,53 -> 534,50
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
506,34 -> 510,34
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
503,108 -> 508,108
|
||||
512,34 -> 516,34
|
||||
561,77 -> 561,78 -> 578,78 -> 578,77
|
||||
515,32 -> 519,32
|
||||
543,62 -> 547,62
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
534,64 -> 538,64
|
||||
514,110 -> 519,110
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
543,66 -> 547,66
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
503,32 -> 507,32
|
||||
504,112 -> 509,112
|
||||
561,77 -> 561,78 -> 578,78 -> 578,77
|
||||
479,85 -> 479,87 -> 473,87 -> 473,94 -> 486,94 -> 486,87 -> 483,87 -> 483,85
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
512,30 -> 516,30
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
496,97 -> 496,99 -> 488,99 -> 488,103 -> 508,103 -> 508,99 -> 502,99 -> 502,97
|
||||
500,110 -> 505,110
|
||||
488,161 -> 493,161
|
||||
549,66 -> 553,66
|
||||
486,115 -> 486,117 -> 484,117 -> 484,123 -> 494,123 -> 494,117 -> 490,117 -> 490,115
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
494,34 -> 498,34
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
530,50 -> 530,53 -> 523,53 -> 523,57 -> 541,57 -> 541,53 -> 534,53 -> 534,50
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
546,68 -> 550,68
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
511,112 -> 516,112
|
||||
547,73 -> 547,74 -> 567,74
|
||||
496,97 -> 496,99 -> 488,99 -> 488,103 -> 508,103 -> 508,99 -> 502,99 -> 502,97
|
||||
496,97 -> 496,99 -> 488,99 -> 488,103 -> 508,103 -> 508,99 -> 502,99 -> 502,97
|
||||
518,34 -> 522,34
|
||||
486,115 -> 486,117 -> 484,117 -> 484,123 -> 494,123 -> 494,117 -> 490,117 -> 490,115
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
482,140 -> 482,141 -> 489,141 -> 489,140
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
496,97 -> 496,99 -> 488,99 -> 488,103 -> 508,103 -> 508,99 -> 502,99 -> 502,97
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
479,85 -> 479,87 -> 473,87 -> 473,94 -> 486,94 -> 486,87 -> 483,87 -> 483,85
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
496,97 -> 496,99 -> 488,99 -> 488,103 -> 508,103 -> 508,99 -> 502,99 -> 502,97
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
496,97 -> 496,99 -> 488,99 -> 488,103 -> 508,103 -> 508,99 -> 502,99 -> 502,97
|
||||
552,68 -> 556,68
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
506,26 -> 510,26
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
479,85 -> 479,87 -> 473,87 -> 473,94 -> 486,94 -> 486,87 -> 483,87 -> 483,85
|
||||
479,85 -> 479,87 -> 473,87 -> 473,94 -> 486,94 -> 486,87 -> 483,87 -> 483,85
|
||||
494,157 -> 499,157
|
||||
486,115 -> 486,117 -> 484,117 -> 484,123 -> 494,123 -> 494,117 -> 490,117 -> 490,115
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
530,50 -> 530,53 -> 523,53 -> 523,57 -> 541,57 -> 541,53 -> 534,53 -> 534,50
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
486,115 -> 486,117 -> 484,117 -> 484,123 -> 494,123 -> 494,117 -> 490,117 -> 490,115
|
||||
498,159 -> 503,159
|
||||
510,108 -> 515,108
|
||||
530,50 -> 530,53 -> 523,53 -> 523,57 -> 541,57 -> 541,53 -> 534,53 -> 534,50
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
479,85 -> 479,87 -> 473,87 -> 473,94 -> 486,94 -> 486,87 -> 483,87 -> 483,85
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
534,68 -> 538,68
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
486,115 -> 486,117 -> 484,117 -> 484,123 -> 494,123 -> 494,117 -> 490,117 -> 490,115
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
482,140 -> 482,141 -> 489,141 -> 489,140
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
497,112 -> 502,112
|
||||
509,28 -> 513,28
|
||||
530,50 -> 530,53 -> 523,53 -> 523,57 -> 541,57 -> 541,53 -> 534,53 -> 534,50
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
547,73 -> 547,74 -> 567,74
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
540,60 -> 544,60
|
||||
482,82 -> 498,82 -> 498,81
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
502,161 -> 507,161
|
||||
477,136 -> 477,133 -> 477,136 -> 479,136 -> 479,135 -> 479,136 -> 481,136 -> 481,127 -> 481,136 -> 483,136 -> 483,131 -> 483,136 -> 485,136 -> 485,129 -> 485,136 -> 487,136 -> 487,135 -> 487,136
|
||||
506,30 -> 510,30
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
531,66 -> 535,66
|
||||
491,159 -> 496,159
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
518,112 -> 523,112
|
||||
561,77 -> 561,78 -> 578,78 -> 578,77
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
486,115 -> 486,117 -> 484,117 -> 484,123 -> 494,123 -> 494,117 -> 490,117 -> 490,115
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
||||
530,50 -> 530,53 -> 523,53 -> 523,57 -> 541,57 -> 541,53 -> 534,53 -> 534,50
|
||||
497,32 -> 501,32
|
||||
540,68 -> 544,68
|
||||
530,50 -> 530,53 -> 523,53 -> 523,57 -> 541,57 -> 541,53 -> 534,53 -> 534,50
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
482,154 -> 482,152 -> 482,154 -> 484,154 -> 484,149 -> 484,154 -> 486,154 -> 486,146 -> 486,154 -> 488,154 -> 488,153 -> 488,154 -> 490,154 -> 490,144 -> 490,154 -> 492,154 -> 492,147 -> 492,154 -> 494,154 -> 494,151 -> 494,154 -> 496,154 -> 496,151 -> 496,154
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
482,140 -> 482,141 -> 489,141 -> 489,140
|
||||
509,32 -> 513,32
|
||||
479,85 -> 479,87 -> 473,87 -> 473,94 -> 486,94 -> 486,87 -> 483,87 -> 483,85
|
||||
506,106 -> 511,106
|
||||
507,110 -> 512,110
|
||||
495,161 -> 500,161
|
||||
491,23 -> 491,15 -> 491,23 -> 493,23 -> 493,18 -> 493,23 -> 495,23 -> 495,15 -> 495,23 -> 497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,14 -> 501,23 -> 503,23 -> 503,21 -> 503,23 -> 505,23 -> 505,19 -> 505,23 -> 507,23 -> 507,15 -> 507,23
|
||||
514,47 -> 514,41 -> 514,47 -> 516,47 -> 516,42 -> 516,47 -> 518,47 -> 518,42 -> 518,47 -> 520,47 -> 520,44 -> 520,47 -> 522,47 -> 522,44 -> 522,47 -> 524,47 -> 524,42 -> 524,47 -> 526,47 -> 526,38 -> 526,47 -> 528,47 -> 528,43 -> 528,47 -> 530,47 -> 530,44 -> 530,47
|
2
2022/input/14/test-1
Normal file
2
2022/input/14/test-1
Normal file
|
@ -0,0 +1,2 @@
|
|||
498,4 -> 498,6 -> 496,6
|
||||
503,4 -> 502,4 -> 502,9 -> 494,9
|
290
2022/src/bin/day14.rs
Normal file
290
2022/src/bin/day14.rs
Normal file
|
@ -0,0 +1,290 @@
|
|||
#![feature(test)]
|
||||
use core::fmt;
|
||||
use std::{str::FromStr, cmp::{min, max}};
|
||||
|
||||
use anyhow::Result;
|
||||
use aoc::Solver;
|
||||
|
||||
// -- Runners --
|
||||
fn main() -> Result<()> {
|
||||
Day::solve()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn part1_test1() -> Result<()> {
|
||||
Day::test(Day::part1, "test-1", 24)
|
||||
}
|
||||
#[test]
|
||||
fn part1_solution() -> Result<()> {
|
||||
Day::test(Day::part1, "input", 1406)
|
||||
}
|
||||
#[test]
|
||||
fn part2_test1() -> Result<()> {
|
||||
Day::test(Day::part2, "test-1", 93)
|
||||
}
|
||||
#[test]
|
||||
fn part2_solution() -> Result<()> {
|
||||
Day::test(Day::part2, "input", 20870)
|
||||
}
|
||||
|
||||
// Benchmarks
|
||||
extern crate test;
|
||||
#[bench]
|
||||
#[ignore]
|
||||
fn part1_bench(b: &mut test::Bencher) {
|
||||
Day::benchmark(Day::part1, b)
|
||||
}
|
||||
#[bench]
|
||||
#[ignore]
|
||||
fn part2_bench(b: &mut test::Bencher) {
|
||||
Day::benchmark(Day::part2, b)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Point {
|
||||
x: usize,
|
||||
y: usize,
|
||||
}
|
||||
|
||||
impl fmt::Display for Point {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "({}, {})", self.x, self.y)
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for Point {
|
||||
type Err = anyhow::Error;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
let (x, y) = s.split_once(",").unwrap();
|
||||
let x = x.parse()?;
|
||||
let y = y.parse()?;
|
||||
|
||||
Ok(Point{x, y})
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
struct Path (Vec<Point>);
|
||||
|
||||
impl fmt::Display for Path {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
for (idx, point) in self.0.iter().enumerate() {
|
||||
write!(f, "{}", point)?;
|
||||
if idx+1 != self.0.len() {
|
||||
write!(f, " -> ")?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl FromStr for Path {
|
||||
type Err = anyhow::Error;
|
||||
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
let points = s
|
||||
.split(" -> ")
|
||||
.flat_map(Point::from_str)
|
||||
.collect();
|
||||
|
||||
Ok(Path(points))
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
|
||||
enum Block {
|
||||
Air,
|
||||
Rock,
|
||||
Sand,
|
||||
Source,
|
||||
Void,
|
||||
}
|
||||
|
||||
struct Cave {
|
||||
grid: Vec<Vec<Block>>,
|
||||
source: usize,
|
||||
size: (usize, usize),
|
||||
}
|
||||
|
||||
impl Cave {
|
||||
// Also returns the width and height of the cave
|
||||
fn new(mut paths: Vec<Path>, floor: bool) -> Self {
|
||||
// The sand source is at 500, 0
|
||||
// This means that xmax starts at 500 and we know ymin is 0
|
||||
let mut source = 500;
|
||||
let (mut xmin, mut xmax, mut ymax) = (usize::MAX, source, 0);
|
||||
|
||||
for path in paths.iter() {
|
||||
for point in path.0.iter() {
|
||||
xmin = min(xmin, point.x);
|
||||
xmax = max(xmax, point.x);
|
||||
ymax = max(ymax, point.y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if floor {
|
||||
ymax += 2;
|
||||
xmin = min(xmin, source - ymax);
|
||||
xmax = max(xmax, source + ymax);
|
||||
|
||||
let path = Path(vec![Point{x: xmin, y: ymax}, Point{x: xmax, y: ymax}]);
|
||||
paths.push(path);
|
||||
}
|
||||
|
||||
for path in paths.iter_mut() {
|
||||
for point in path.0.iter_mut() {
|
||||
point.x -= xmin;
|
||||
}
|
||||
}
|
||||
|
||||
let width = xmax-xmin+1;
|
||||
let height = ymax+1;
|
||||
|
||||
let mut grid = vec![vec![Block::Air; width]; height];
|
||||
|
||||
for path in paths {
|
||||
for line in path.0.windows(2) {
|
||||
let ystart = min(line[0].y, line[1].y);
|
||||
let yend = max(line[0].y, line[1].y)+1;
|
||||
for y in ystart..yend {
|
||||
let xstart = min(line[0].x, line[1].x);
|
||||
let xend = max(line[0].x, line[1].x)+1;
|
||||
for x in xstart..xend {
|
||||
grid[y][x] = Block::Rock;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
source -= xmin;
|
||||
grid[0][source] = Block::Source;
|
||||
|
||||
Self {
|
||||
grid,
|
||||
source,
|
||||
size: (xmax-xmin+1, ymax+1)
|
||||
}
|
||||
}
|
||||
|
||||
fn from_str(s: &str, floor: bool) -> Self {
|
||||
let paths = s
|
||||
.lines()
|
||||
.flat_map(Path::from_str)
|
||||
.collect();
|
||||
|
||||
Self::new(paths, floor)
|
||||
}
|
||||
|
||||
fn check(&self, x: isize, y: isize) -> Block {
|
||||
if x < 0 || y < 0 || x >= self.size.0 as isize || y >= self.size.1 as isize {
|
||||
return Block::Void;
|
||||
}
|
||||
return self.grid[y as usize][x as usize];
|
||||
}
|
||||
|
||||
fn simulate_sand(&mut self) -> bool {
|
||||
let (mut x, mut y): (isize, isize) = (self.source as isize, -1);
|
||||
|
||||
loop {
|
||||
let positions = vec![
|
||||
(x, y+1),
|
||||
(x-1, y+1),
|
||||
(x+1, y+1),
|
||||
];
|
||||
|
||||
let mut moved = false;
|
||||
for position in positions {
|
||||
match self.check(position.0, position.1) {
|
||||
// The sand can move into the position
|
||||
Block::Air | Block::Source => {
|
||||
// Update the coordinates
|
||||
x = position.0;
|
||||
y = position.1;
|
||||
|
||||
// Mark that the sand has moved
|
||||
moved = true;
|
||||
|
||||
// Simulate the next step
|
||||
break;
|
||||
},
|
||||
// This position is occupied, check the next position
|
||||
Block::Rock | Block::Sand => continue,
|
||||
// The sand fell into the void, any sand we add will also fall into the void
|
||||
// Return false to signify this
|
||||
Block::Void => return false,
|
||||
}
|
||||
}
|
||||
|
||||
// If the sand did not move, the sand has settled and we can return
|
||||
if !moved {
|
||||
let block = self.grid[y as usize][x as usize];
|
||||
self.grid[y as usize][x as usize] = Block::Sand;
|
||||
// If we replaced the source block we are also done
|
||||
return block != Block::Source;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn print(&self) {
|
||||
for line in self.grid.iter() {
|
||||
for block in line {
|
||||
let c = match block {
|
||||
Block::Air => '.',
|
||||
Block::Rock => '#',
|
||||
Block::Sand => 'o',
|
||||
Block::Source => '+',
|
||||
Block::Void => 'x',
|
||||
};
|
||||
|
||||
print!("{}", c);
|
||||
}
|
||||
println!("");
|
||||
}
|
||||
println!("");
|
||||
}
|
||||
|
||||
fn count_sand(&self) -> usize {
|
||||
self.grid.iter().flatten().filter(|&block| *block == Block::Sand).count()
|
||||
}
|
||||
}
|
||||
|
||||
// fn size(paths: Vec<Paths>)
|
||||
|
||||
// -- Solution --
|
||||
pub struct Day;
|
||||
impl aoc::Solver for Day {
|
||||
type Output1 = usize;
|
||||
type Output2 = usize;
|
||||
|
||||
fn day() -> u8 {
|
||||
14
|
||||
}
|
||||
|
||||
fn part1(input: &str) -> Self::Output1 {
|
||||
let mut cave = Cave::from_str(input, false);
|
||||
|
||||
while cave.simulate_sand() {}
|
||||
|
||||
cave.print();
|
||||
|
||||
cave.count_sand()
|
||||
}
|
||||
|
||||
fn part2(input: &str) -> Self::Output2 {
|
||||
let mut cave = Cave::from_str(input, true);
|
||||
|
||||
while cave.simulate_sand() {}
|
||||
|
||||
cave.print();
|
||||
|
||||
cave.count_sand()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user