This commit is contained in:
Jonathan Chan 2022-12-23 12:45:33 -08:00
parent 7a3abcaa35
commit 4b2e4a0be7
4 changed files with 300 additions and 0 deletions

View File

@ -7,3 +7,4 @@ Approximate execution times of the hardest problems, compiled with `raco exe`.
| 15 | 3.81 | | 15 | 3.81 |
| 16 | 20.6 | | 16 | 20.6 |
| 19 | 75.7 | | 19 | 75.7 |
| 23 | 15.8 |

138
input/23-end.txt Normal file
View File

@ -0,0 +1,138 @@
░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░█░░░░░░█░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░█░░░░░░░░░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░█░░█░░█░█░█░░░░░░░█░░█░░█░░░░░░░░█░░░░░█░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░█░█░░░░░█░░░░░░░░░░░░░░░█░█░░░░░░░░░░█░░░░█░░░░█░░░░█░░█░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░█░█░░█░█░░░░█░░░░░░░░█░█░░░░░█░░░░█░░░░░█░░░░░░░█░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░█░░█░█░░░░░░█░░░░░░░░░░░█░░░░█░█░░░░░░░░█░░░░░░█░░░█░░░░░░░░█░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░█░░░░░░░░░░░░░░░░░░█░░█░░█░░░░░░░░░░░░█░█░░░░░░█░█░░░░█░░░█░█░█░░░░░░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░█░░░░░░░░█░█░░░░░░░░░░░░█░█░░░░░░░░░░░█░█░░░░░░░█░░░░░░░░░░░░█░█░░░░░░░░█░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░█░░░█░░█░█░░░░░░█░░█░█░█░░░░░░░░█░░░█░░░░░░░█░░░█░░░█░█░░█░░░█░░░░░█░░█░█░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░█░█░█░░░░░░░░█░█░░░░░█░░░█░░░░░░░░░░░░█░█░░░░░░░░░░░░░░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░█░░█░█░░░█░█░░░░░░█░█░█░█░░░░░░░░█░░░░░░░░░░░░░░░█░░░░░█░░█░░█░░░░░░█░░░░░█░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░█░░░░░░░░░░░░░░░░█░░░░░░░░░░░█░░█░█░░░█░█░░░░░█░░█░░░░░░█░░░░░░░░░░░█░░░░░█░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░█░░░░█░█░░░░█░█░░█░░░█░█░█░█░░░░░░░░░░░░░░░░█░█░░░░░░█░█░░░░█░█░░█░█░░░░░░█░░░█░█░░█░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░█░░█░█░█░░░░░░█░█░░░░░█░░░░░░░░░░░░░░█░░░░░░░░░░░░░░█░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░█░░░░░█░█░░░░░░█░░█░░░░█░░░░░░░░░░░░░░░░░░░░░░░█░░░░░█░█░░░░░█░░█░█░█░░░░░█░░█░░░█░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░█░░░░░░░█░█░░░░░░░█░░░░█░░░░█░█░█░█░█░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░█░░░░█░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░█░░░░░█░░█░░░░░░█░░█░░░░█░░░░░░░░░░░░░░░░█░░░░░░░░░█░█░░█░█░█░█░█░░░░░░░░█░░░░░█░█░░░░░░░░░░░░░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░█░░░░░░░█░█░░░░░░░░░░░░█░█░█░█░█░░░░░░░░░█░█░█░░░░░░░░░░░░░░░░░█░█░█░░░░░░░░░░░█░█░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░█░█░█░░░█░░█░░░░░░░█░░█░█░█░░░░░░░░░░░░░█░░█░█░░░░░░░█░░░█░░░█░░░░░█░░░░░░░░█░█░░█░█░░░░░░█░░░░░░░█░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░█░░░░░░░█░█░░░░░░░░░░░░█░█░░░░█░░░░░░░░░░░█░█░░░░░░░░░░░░█░█░░░░░█░░░░░░░░░░░░░█░█░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░█░░░█░█░█░░░░░█░█░█░░░░█░░░░░█░░░░░░░█░█░░█░░░░░█░█░░█░░█░░░░░░░░░░░░░█░█░░█░░█░░░░░░░█░░░░░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░█░█░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░█░░░█░█░░░░░░░░░░░█░░░░░░░░░░░░█░█░█░█░█░█░░░░░░░░░░░░█░█░░░░█░░░░░░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░█░█░█░░█░░░█░█░█░█░░█░█░█░░░█░░░░░░░█░░█░░█░░░░░█░█░█░█░░░░░░░░░░░░░░░█░░█░█░█░░░░░░█░░░░░█░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░█░█░░░░░░░░░░█░░░░░░░░░░░░░░░░█░░░░░░█░░░░░░░░░░░░█░░░░░░░░░░░░░░█░█░░░█░░░░░░░░░░░█░█░░░░█░░░░░░░░░█░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░█░█░█░░░░░█░░░░░░░█░█░█░░░░░░░█░░░█░░█░░░█░░░░░█░█░░░░█░░░█░░░░░░░░░█░█░█░░░█░░░░░░█░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░█░█░░░░░░░░░█░░░░█░░█░░░░░░░░░░█░░░░░░░░░░░░░░░░█░█░░░░░█░░░░█░░░░░█░█░░░░░░░░░█░░░░░░░░░░█░█░█░█░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░█░░░░░█░█░█░░█░░█░░░░░░░░░░░░░░█░░░░░█░░░░░░░█░█░░░░░░░░█░█░░█░░░░░░░░░░█░░░░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░█░░░█░█░█░░░░█░░█░░█░░░░█░█░░░█░░░░░░░░░░░░░░░░░░█░█░░█░█░░░░░░░░░░░█░░█░░░░░░░░░░█░░░░░░░░█░░█░░░█░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░█░░░░░░░░█░░░░░░░░░░█░░░░░█░░░█░█░█░░░█░█░░░█░░░░░░░░░░░░█░░█░░█░░░░░░░░█░█░█░░░░░░█░░█░░░░░░░█░░░░░░░█░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░█░░░█░░█░░░░░░█░█░░█░░░░█░░░░░█░░░░░░░░░░░░░░░░░█░█░█░█░░░░░░░░░░░░░█░█░█░░░░░░░█░█░░░░░░░█░░░█░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░█░█░░░░█░█░░█░█░░█░█░░░░░░░░░░░█░█░█░█░░█░░░░░░░░█░░░░░░░░░░█░░░░░█░░░█░░░░░░░░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░█░█░░░░█░░█░░░█░█░█░█░█░█░░░░░░█░░░░░░░░░░░░░░░█░░░░█░█░░░░░░░░░░░░░░█░░░█░░░█░█░█░█░░░░█░█░░░░░░░█░█░█░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░
░░█░░░░░█░░░░░░░█░░░░░░░░░░░░░░░░░░░░░█░█░░█░█░█░░░░░░█░░░░░░█░█░█░░█░░░░░░█░░░░░░░░░░░░░░█░░░░░░█░█░░░░░░░░░█░░░█░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░█░█░░░░░░░░█░░█░█░░█░█░█░█░░░░░░░░░░░░░░█░█░░░░░░█░░░░░░░░░░░█░█░░░░░░█░█░█░░░░░░░░█░█░░░░░░█░█░░█░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░
░░█░░░█░░░░░░░░░░█░█░░░░░░░░░░░░░░░░░█░█░█░█░░░░█░░░░░░█░█░░░█░░█░█░█░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░█░█░█░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░█░░░█░░░░░░█░░░░░░░█░░░█░█░░░░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░░░░░░░░█░░░░█░░░░█░░░█░█░░█░░░░░░█░░░░░█░░░░░░░░░░░░█░░█░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░█░░█░░░░░█░░░░░█░░░░░░░█░█░█░░█░░█░░░█░░░░░░░█░█░░█░█░░░█░░░░░░░░░░█░░░░░░░░░░░░░█░░█░░░█░█░░░░░█░░█░█░█░░░░░░░░░░░░░░░░░░░░░░░░░
░░█░█░░█░░░░░░░█░░░░░█░░░░░█░░░█░░░░░░░░░░░░░░░░░█░░█░░░░░░░░░░░█░░░█░░░░█░█░░░░█░█░█░█░░░░░░░░░░░░░░░░░█░░░░░░░░░░█░░░░█░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░█░░░█░░░░░░░█░░░█░░░█░█░█░░█░░█░░█░░░░░░░░░█░░░█░█░░░█░░░░░░░░░░░█░░░░░░░░░█░█░█░░█░░█░░█░░░░█░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░█░█░░█░░░░░░░█░█░░░░░░░░░█░░░░░░░░░░░░░░░░█░░█░░█░░░░░░░░░░░░░█░░░█░░░░░░░░░█░█░█░░░░░░░░░░░░░░░░░░░░░█░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░
░░░█░░░░░░░░░░█░█░░░░░░░█░░░░░░░░░█░█░█░░█░░█░█░░░░░░░░░░░█░░░█░░░█░░░█░░░░░█░█░█░░░░░░░█░░█░░░░░░█░█░█░█░█░░░█░░░░░░█░░░░░░░░░░░░░░░░░░░░░
█░░░░█░░█░░░░░░░░░░█░░█░░░█░█░░░█░░░░░░░░░░░░░░░█░░░░█░█░░░░█░░░░░░░░░░░░█░░░░░░░░░░░█░░░░░░░░░░█░░░░░░░░░░░░░░░░█░█░░░░░░░░░░░░░░░░░░░░░░░
░░░█░░░░░░█░█░░░░█░░░░░░░░░░░░░░░░█░░█░░█░░░░░█░░░░░░░░░░█░░░░█░█░░░█░░█░░░░░░█░░░░░░░░░░░█░█░░░░░░█░█░░░░░░░█░█░░░░░█░░░░░░░░░░░░░░░░░░░░░
░░░░░░░█░░░░░░░█░░░░█░█░█░█░█░█░░░░░░░░░░░░█░░░░█░█░░█░█░░░░█░░░░░░░░░░░░█░░█░░░░█░█░█░█░░░░░░█░░░░░░░░░░█░░░░░░░█░█░░░░░░░░░░░░░░░░░░░░░░░
░░░█░█░░░░░█░█░░░░█░░░░░░░░░░░░░░█░░░░█░█░░░░█░░░░░░░░░░░░░░░░░█░█░█░█░█░░░░░░░░░░░░░░░░░█░░░░░░░█░░░█░█░░░█░█░█░░░░░█░█░█░░░░░░░░░░░░░░░░░
█░░░░░░█░█░░░░░░█░░░█░░░░█░█░█░█░░░█░░░░░░░█░░░░█░░█░█░█░░█░█░░░░░░░░░░░░░█░█░█░█░█░█░░░░░░█░█░█░░░█░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░
░░█░░░░░░░░░█░█░░░█░░░░░░░░░░░░░░█░░░█░█░░░░░█░░░░░░░░░░░░░░░░░░░░░█░░█░░░░░░░░░░░░░░░█░█░░░░░░░░█░░░░░█░█░█░█░█░░░░█░░░░█░░░░░░░░░░░░░░░░░
░░░░░░█░░░█░░░░░█░░░█░░░░█░░█░░░░░░█░░░░░█░█░░░░█░█░█░█░░█░█░░█░█░░░░░░░░░░█░░█░█░█░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░█░░░░█░░░░░░░░░░░░░░░░░░░░
░░░█░░░░█░░░█░░░░░░░░░█░░░░░░░█░█░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░█░█░░█░█░░░░░░░░░░█░█░░░█░░░█░█░░░█░░█░█░░█░█░░░░░░░░░█░░░░░░░░░░░░░░░░░░
░░░░░░█░░░░░░░░░█░░░█░░░░░░░░░░░░░░█░█░░█░░█░░░█░░░░░█░█░░█░░█░█░░░░░░░░░░░█░░█░░█░░░░░░█░░░░░░░░░█░░░░░░░░░░░░░░█░█░░░░░░█░░░░░░░░░░░░░░░░
░░█░█░░░░░█░█░░░░░█░░░░░█░█░█░█░░█░░░░░░░░░░░█░░░█░█░░░░░░░░░░░░░█░░░█░░░░░░░░░░░░░░█░█░░░█░█░█░░░░░█░░█░░█░█░░█░░░░░░█░░░░░░░░░░░░░░░░░░░░
░░░░░░█░█░░░░░░█░░░░█░░░░░░░░░░░░░░░█░░█░█░█░░░░░░░░░░░░█░░█░░░█░░░█░░░█░█░░░█░█░░█░░░░░█░░░░░░░█░░░░░░░░░░░░░░░░░░█░░░░░░█░░░░░░░░░░░░░░░░
░░█░░░░░░░█░█░░░░█░░░░░█░█░█░█░█░░█░░░░░░░░░░█░█░█░░█░█░░░░░░█░░░░░░░█░░░░░█░░░░░░░░░░░░░░░░░░█░░░░░█░█░█░░░█░░█░█░░░░█░░░░░░░░░░░░░░░░░░░░
░░░░░█░░█░░░░░░█░░░█░█░░░░░░░░░░░░░░░░█░█░█░░░░░░░░░░░░░░█░█░░░░░█░░░░░░░░░░░░░█░█░█░░░░░░░█░░░░░░█░░░░░░░░░░░░░░░░░█░░░█░░█░░░█░░░░░░░░░░░
░░░░░░░░░░░░█░░░░░░░░░░█░█░░█░█░█░░█░░░░░░░░░█░░█░█░░░█░░░░░░█░█░░░░░░░█░░░░░█░░░░░░░█░█░█░░░█░░█░░░░░░█░█░█░█░░█░░░░░█░░░░░░░░░░░░░░░░░░░░
░░░█░░█░█░░░░░░░░░█░░░░░░░░░░░░░░░░░░█░░░█░░░░░░░░░░█░░░█░░█░░░░░░░█░░░░░█░█░░░░░█░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░█░░░░░░█░░█░░░░░░░░░░░░░
░░░░░░░░░░░█░█░█░░░░░█░█░█░░█░█░█░░░░░░░░░░█░░█░░░░░░░█░░░░░░░░█░█░░░█░█░░░░░█░░░░░█░█░█░█░░█░░█░░░░░█░░█░█░█░░░█░░░░░░█░░░░░░░█░░░░░░░░░░░
░░░░█░░█░░░░░░░░░█░█░░░░░░░░░░░░░░░░█░░█░░░░░░░░░█░█░░░░░█░█░█░░░░░░░░░░░█░░░░░█░█░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░█░█░░░░░█░█░░░░░░░░░░░░░░
░█░░░░░░░░░░█░█░░░░░░░░░░█░█░█░█░░█░░░░░░░░█░█░░░░░░░█░█░░░░░░░█░█░░░░█░░░░░█░░░░░░█░█░░█░░░░█░█░░░░█░░░░░░░░█░█░░░░░░█░░░░░░░░░░░░░░░░░░░░
░░░░█░█░█░█░░░░░░░░░░░█░░░░░░░░░░░░░█░░░█░░░░░░░░░░█░░░░░█░█░░░░░░░░░░░░░█░░░░░█░█░░░░░░░░░█░░░░░█░░░░░█░█░█░░░░░░░░░░░░░░░█░░█░░░░░░░░░░░░
░░░░░░░░░░░░█░░░█░█░█░░░░█░█░░█░█░█░░░░░░░░░░█░█░█░░░█░█░░░░░░█░█░█░█░░█░░░░░█░░░░░░░░░█░░░░░█░░░░░░█░░░░░░░░█░█░░░█░█░█░░░░░░░░█░░░░░░░░░░
░░░█░█░░░░░░░░█░░░░░░░█░░░░░░░░░░░░░░█░░░█░█░░░░░░░█░░░░░░█░░░░░░░░░░░░░░░█░░░░░░█░█░░░░░█░░░░░░░░█░░░░█░░░█░░░░░█░░░░░░░█░░░░█░░░░░░░░░░░░
░░░░░░░░░█░░░░░░█░░█░░░░░█░█░█░░░█░█░░░░░░░░░░░░░░░░░█░░█░░░░░█░█░█░░░█░░░░░░█░░░░░░░░█░░░░░█░█░░░░░░░░░░░░░░█░█░░░░█░░█░░░░█░░░█░░░░░░░░░░
░░░░░█░█░░░░█░░░░░░░░░█░░░░░░░░█░░░░░█░░█░█░█░░░█░█░░░░░░░░█░░░░░░░░░░░░░░░█░░░█░█░░█░░░░░█░░░░░░█░█░░░░░█░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░
░█░░░░░░░█░░░░░█░█░░█░░░░░░█░░░░░█░░░░░░░░░░░░░░░░░░█░░░░░░░░█░░░░█░░░█░█░░░░█░░░░░░░░█░█░░░░█░█░░░░░░█░░░░█░░░░░░░░█░░█░█░░░░█░░░░░░░░░░░░
░░░░░░░█░░░░░█░░░░░░░░█░░█░░░█░░░░░░░█░░█░░█░░█░░░░░░░░█░█░█░░░█░░░░█░░░░░█░░░░█░░░█░░░░░░░░░░░░░░█░█░░░░░░░░█░█░█░░░░░░░░░░█░░░░░░░░░░░░░░
░░░█░░░░░█░█░░░░░█░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░█░░█░░░░░░░█░░░░░░░░█░░░░░█░░░░█░░░░░░░░░░█░█░░░░░░░░░█░░█░░░░░░░░█░█░█░█░░░░░█░░░░░░░░░░
░░░░░░░░░░░░░█░█░░░░░█░█░░█░░░█░░░░█░░░░░░░░█░█░█░░░░░░░░█░░░░░░░█░░█░░░█░░░░░░█░░░░█░░█░█░░░░░░░░░█░░█░░░░░░█░░░░░░░░░░░░░░░░█░░░░░░░░░░░░
░░░░█░░░█░░░░░░░░░█░░░░░░░░░█░░░█░░░░█░░█░░░░░░░░░░█░░░░░░░█░█░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░█░░░░░░░░█░█░█░░░█░█░░░░░█░░░░░░░░
░░░░░░█░░░░█░█░░█░░░░░░░░░█░░░█░░░░█░░░░░░█░░█░░█░░░░░█░░█░░░░░░█░░░█░░░░░█░░░█░█░█░█░█░░░░░░░░░░█░█░█░█░░░█░░░█░░░░░░░░░░░░░░░░█░░░░░░░░░░
░░░░░░░░█░░░░░░░░░█░█░█░█░░░░░░░█░░░░░█░░░░░░░░░░░█░█░░░░░░█░█░░░░░░░░█░░░░░█░░░░░░░░░░░░░░█░░█░░░░░░░░░░█░░░█░░░░█░░░░░░█░░█░█░░░░█░░░░░░░
░░█░░█░░░░░█░░░░█░░░░░░░░░░░█░█░░░█░█░░░░░░░░█░░░░░░░░█░░█░░░░░█░█░░░░░░░░█░░░░█░░█░░█░░█░░░░░░░░█░░░█░█░░░░░░░░█░░░░█░░░░░░░░░░░░░░░░░░░░░
░░░░░░░█░█░░░░█░░░█░█░█░█░█░░░░░█░░░░░░█░█░█░░░█░░░░░░░░░░░█░█░░░░░█░█░█░░░░░░░░░░░░░░░░░░░█░░█░░░░░░░░░░░░░░█░░░░░█░░░░░█░█░█░█░█░█░█░░░░░
░░░░░░░░░░░░░░░░█░░░░░░░░░░░█░░░░░█░█░░░░░░░░█░░░░█░░█░█░░░░░░░█░█░░░░░░░░█░█░█░░░░█░█░█░█░░░░░░░░█░█░░█░█░█░░░█░█░░░░█░░░░░░░░░░░░░░░░░░░░
░░░░░░█░█░█░░░░░░░█░░░░█░░░░░░█░░░░░░░░░█░░░░░░░░░░░░░░░░█░█░█░░░░░█░░█░█░░░░░░░█░░░░░░░░░░░█░█░█░░░░░░░░░░░░░░░░░░█░░░░░░█░░█░█░░░█░█░░░░░
░░░░█░░░░░░░█░█░█░░░░░░░░░█░░░░░░░░░░░░░░░░░░░█░░█░░█░█░░░░░░░░░░░░░░░░░░░░░░░█░░░█░░░█░░█░░░░░░░░█░░░█░█░░░█░░█░░░░░░█░█░░░░░░░░█░░░░░░░░░
░░░░░░░░░░░░░░░░░░█░░█░█░░░░█░░░░█░░█░█░█░░█░░░░░░░░░░░░█░░█░░░█░█░░░█░█░░░█░░░░░░░░█░░░░░░░█░█░░░░░█░░░░░█░░░░░░░█░█░░░░░░░░█░░░░░░░░░░░░░
░░░░░░░░░░█░█░█░█░░░░░░░░░█░░░█░░░░░░░░░░░░░░░█░░░█░█░░░░░░░░░░░░░░█░░░░░█░░░█░░█░░░░░█░░░█░░░░░░░░░░░█░░░░░░░█░░░░░░░░█░░░░░░░░█░█░█░░░░░░
░░░░█░█░█░░░░░░░░░░░█░█░█░░░█░░░█░░█░█░░░█░░░░░░█░░░░░█░█░░░█░░█░░░░░█░█░░░█░░░░░░█░░░░░█░░░░█░█░█░░░░░░░█░░█░░░░█░█░█░░░░█░█░░░░░░░░░░░░░░
░░░░░░░░░░█░░░█░░░█░░░░░░░░░░░█░░░░░░░░█░░░░█░░░░░░░█░░░░░░░░░░░░█░░░░░░░█░░░░█░░░░░█░░░░░█░░░░░░░░█░░░█░░░░░░█░░░░░░░░█░░░░░░░█░░█░░░░░░░░
░░░░░█░░░░░░█░░░█░░░█░█░█░█░█░░░█░░░█░░░░█░░░░█░█░█░░░░░░█░█░█░█░░░░░░░░░░░█░░░░░█░░░░░░░░░░░█░░█░░░░█░░░█░░█░░░░░█░░█░░░░░░░█░░░░░░█░█░░░░
░░░░░░░█░█░░░░█░░░█░░░░░░░░░░░█░░░█░░░█░░░░░█░░░░░░░░█░█░░░░░░░░░█░░█░░█░█░░░█░█░░░░░░░█░█░█░░░░░░░█░░░░░░░░░░░█░░░░░░░░░█░░░░░█░░░░░░░░░░░
░░░░░░░░░░░█░░░░░░░░░░░░█░░░░░░░█░░░█░░░█░█░░░█░█░█░░░░░░█░█░░░░░░░░░░░░░░░█░░░░░░█░█░░░░░░░░░░░█░░░░░░█░░░█░█░░░░░░█░░░░░░█░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░█░█░░░░░░░█░░░░░░░░░░░░░░░░░█░░░░░░░█░░░░░░░░░░█░█░░█░░░█░░░░█░█░░░░░░░░█░░░█░█░░░░█░█░░░░░░░░░░█░█░░░█░█░░░░░█░█░█░░█░█░░░
░░░░░░░░█░░░█░█░░░░░░█░░░░░░░░░░█░█░░░░░█░░░░░░░░░░░░░█░░█░█░░░░░░░░░░█░░░░░░░░░░░░█░█░░░░█░░░░░░█░░░░░░█░░█░░░░░░░░░░░░░░█░█░░░░░░░░░░░░░░
░░░░░░░░░░█░░░░░░░░█░░░█░█░█░░█░░░░░░░█░░░░█░░░█░░░█░░░░░░░░░░█░█░█░░░░░░░█░█░█░░░░░░░░░░░░░█░░█░░░░░░█░░░░░░█░░█░█░█░█░░░░░░░░░░░░█░░░░░░░
░░░░░░░░░░░░░█░█░█░░░█░░░░░░░░░░█░█░█░░░░█░░░█░░░░░░░░█░░░█░░░░░░░░░█░█░░░░░░░░░█░█░█░░░█░█░░░░░░░█░█░░░░░█░░░░░░░░░░░░░░█░░░░░█░░░░░█░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░░░░░░░░░░█░█░░░░░░░░█░░█░█░░░░░░░░█░█░█░░░░░░░█░░░░░░░█░█░░░░░░█░░░░█░█░█░░░█░░█░░░░░█░░░█░░░░░░█░░
░░░░░░░░░█░█░░░█░█░█░█░█░░░░░░░░░█░░░░░█░░░█░░░█░░░░░█░░░█░░░░░░░░░█░█░█░░░░░░░░░█░█░░░░░░█░█░░░░░░░░░░░░█░░░░░░░░░░░░░░░░█░░░░░░░░█░░░░░░░
░░░░░░░░░░░░░█░░░░░░░░░░░█░░░█░█░░░█░█░░░░░░░█░░░█░█░░░░░░░░░█░░░░░░░░░░░░░█░█░█░░░░░░█░░░░░░░░░░░█░█░░█░░░░░░█░█░█░░█░░░░░░░█░█░█░░░█░█░░░
░░░░░░░░░█░░░░░░█░░█░░░░░░░█░░░░░░░░░░░█░█░█░░░░░░░░░█░░░░█░░░░░█░█░░░░█░█░░░░░░░█░░░░░░░█░█░█░█░░░░░░░░░░░█░░░░░░░░░░░█░░░█░░░░░░░█░░░░░░░
░░░░░░░░░░░█░░█░░░░░░░░░█░░░░░░░░░░░░█░░░░░░░█░░░█░█░░░░█░░░█░█░░░░░░█░░░░░█░░░█░░░█░░░░░░░░░░░░░░█░░░█░█░░░░█░░░█░█░█░░░█░░░░░█░█░░░░░█░█░
░░░░░░░░░░░░░░░░░█░░░█░░░░░█░█░█░█░█░░░█░░█░░░░█░░░░░░█░░░█░░░░░█░░░░░░█░█░░░█░░░█░░░█░░░█░░░░░░█░░░█░░░░░█░░░░░░░░░░░░█░░░░░░░░░░░░░█░░░░░
░░░░░░░░░░░░░█░░░░░█░░░█░░░░░░░░░░░░░█░░░░░░█░░░░█░░░░░░█░░░█░░░░░░█░░░░░░░░░░░█░░░░░░░░░░░█░░█░░░█░░░░█░░░░█░█░░░█░█░░░░░█░░█░█░█░░░░░█░░░
░░░░░░░░░░░░░░░░█░░░░░░░░█░█░░░░░█░█░░░█░░░░░░░█░░░█░█░░░░░░░░░░█░░░░░░█░░░░░█░░░█░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░█░█░░░░░
░░░░░░░░░░░░░░█░░░░░█░░█░░░░░█░░░░░░░░░░░█░░░█░░░░░░░░░░░█░░█░░░░░░█░█░░░█░░░░░░░░░█░█░█░█░░█░█░█░░░░░█░░█░█░░░█░█░█░░░░░░░█░█░█░░░░░░░█░░█
░░░░░░░░░░░░░░░░░█░░░░░░░░█░░░░█░░░░█░░█░░░█░░░█░█░░█░█░░░░░░░░█░░░░░░░█░░░█░░░█░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░░░░░░░░█░█░█░░░░░░░█░░░█░░░░░
░░░░░░░░░░░░░░░░░░░█░█░█░░░░█░░░░░█░░░░░░█░░░█░░░░░░░░░░█░█░█░░░░█░█░█░░░█░░░░░░░█░█░░█░░░█░░░░░░░░░░░░█░░█░░█░█░░░█░░░░░░░█░░█░░░░█░░░█░░░
░░░░░░░░░░░░░░░░█░░░░░░░░█░░░░░█░░░░░█░█░░░░░░░░█░█░░█░░░░░░░░░█░░░░░░░░░░░█░░█░░░░░░░░░░░░░░█░░█░█░░░░░░░░░░░░░░█░░░░░█░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░█░░░░░░░░█░░░░░░░░░░█░░░░░█░░░█░░█░░░░█░░░░░░█░█░█░░█░█░█░░░░░░░░█░░░█░█░░░█░░░░░█░░░░░█░░░░█░█░░░█░█░█░
░░░░░░░░░░░░░░░░░░░█░█░█░█░░░░░█░█░░░░░░█░█░░░█░█░█░░█░░░█░░░░░░░░░░░░█░░░░█░░░░░░░░░░░░░░░░░█░░░░░░░░█░░░░░█░░░░░░░░░█░█░░░█░░░░░░█░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░░░░░░░░█░░░░░█░█░█░░█░░░░░░░░░█░█░░░█░░░░░█░░░░░█░░█░░░░░█░░░░░█░░█░█░░░░░░░░░░█░█░░░░░█░░░
░░░░░░░░░░░░░░░░░░░░░░█░█░░█░█░█░░░░░░░░░█░█░█░█░░░█░░░░░░░█░░░░░░░░░░░░█░█░█░░░░░░░░░█░█░░░█░█░░░░░░░█░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░█░░░█░
░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░░░░█░█░█░█░░░░░░░░░█░░░█░█░█░░░█░░░░█░█░█░░░░░░░░░░█░█░░░░░░░░░░░░░░█░░░░░█░░░█░█░█░░█░░░█░░░░░█░░░░░█░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░█░░█░░█░█░░░░░░░░░░░░█░█░░░░░█░░░░░░░█░░░░█░░░░░░░░░█░░░█░░░░░░░░░█░░█░░░█░░░░█░█░░░█░░░░░░░░░░█░░░█░░░░░░█░░░░█░█░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░█░░░░░░░░█░░░░░░░░█░░░░█░░░█░░░░░█░░░█░░░█░█░█░░░░░░░░░░░░█░░░░░░█░░░░░░█░█░░░░░█░░░░█░█░░░█░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░░░█░█░░░░█░░░░█░░░█░█░█░░░░█░░░░█░░░░░░░░░░░░░█░░░░░░░█░░░░░░█░░░░░░█░░░░░█░█░░░░░░░█░░░░░░░░░░░░░░░█░░░█░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░█░░░░░█░░░░░█░░░░░░░░░░░█░░░░░█░░░░░█░░█░█░░░░░░█░░░█░░░█░░█░░░█░█░░░░█░░░░░░░░░░░░░░░░░█░█░░░░█░█░░░░█░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░█░░░░█░█░░░░█░█░░░░█░░░░█░░░░░█░░░░░░░░░░█░░░░░█░░░░░░░░░░█░░░░░█░░░░█░█░█░░░█░░░░░█░░░░░█░░░░░░█░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░█░░░░░░░░░░░░░█░░░░█░░░░░░░░░░█░░█░█░█░░░█░█░░░░█░█░█░█░░░█░░░░░█░░░░░░░░░░░░█░░░░░░█░░░░░█░░░░░░█░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░█░█░░█░░░░░░█░░░░░█░█░░░█░░░░░░░░░░█░░░░░░█░░░░░░░░░░░░░░█░░░░░░█░░░█░█░░░░█░░░░░░░█░░░░█░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░█░░░░░░░░█░█░░░░░░░░░░░░█░░░░█░█░█░█░░░░█░░░░░░░█░█░░░█░█░░░░░█░█░░░█░░░░░░░░░░█░█░█░░░░█░░░░░█░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░█░░░░░░░█░█░█░░░░░░█░░░░░░░░░░░█░░░█░░░█░░░░░█░░░░░░░█░░░░░░░░░█░█░█░░░░░░░░░░░█░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░█░░█░░░░░░░░░░█░░░█░░░░░░░█░░░░░░░░░░░░█░░░░█░█░█░░░█░░░█░█░░░░░░░░█░░░░░░░░░░░░█░░█░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░░░░░░░░░█░░█░░░░░░░░░░█░█░░░█░░█░█░░█░░░░█░░░░░░░░█░░░█░░░░░░█░█░█░░░█░░█░█░█░█░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░█░█░█░█░█░░░░░░░█░░█░█░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░█░░░░░░░░░█░░░░░░░░░░░░░█░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░█░░░░░░░░░░░░█░░█░░░░░░░░░░░░░░░█░█░░█░█░░░░░░█░█░░█░█░░░░█░░░░░░░█░░█░░░░█░█░░█░░░█░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░█░░░░░░░░█░░░░░░░█░░█░░░░░░░░░░░█░░█░░░░░░░░░░█░░░░█░░░█░░░░░░█░░░░░░░░░░░░░░█░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░█░█░░█░░░█░█░█░░░░░░░░█░█░░█░░░░░░░░░░█░░░░░░░█░░░░█░░░█░░█░░░░░░█░░░░█░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░█░░░░░░░░░░░░░░░░░░░░░░█░░░░█░░░░░░░░█░░░█░█░░░░█░█░█░░░░░░░░░░░░░░░░█░█░░░░█░░░█░█░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░█░█░░█░█░░░░░█░█░░░█░░░░█░░░░░░░░░░░░░░█░░░░░░░░░░█░░░░░█░█░░█░░░░░█░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░█░█░░░░░░░█░█░█░░░░█░█░░░░░░░░░░█░░░░░█░█░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░█░█░█░░░█░█░░░█░█░█░░░░█░░░░░█░░░█░░░░░░░░█░░░░░█░█░░░░░░░░█░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░█░░░░░░░░░░░░░█░░░░░░░░█░░░█░░░░░█░░░░█░█░█░░░░░░░░░░░░░█░█░░░░░░█░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░█░░░█░░░░░░░░░█░░░█░░░█░░░░░░█░░░░░░░█░░█░█░░█░░░░░░░░░█░░░░█░█░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░█░░░█░█░█░█░░░█░░░░░░░░█░█░░░░░█░█░░░░░░░░░░░░█░█░█░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░█░█░░░█░░░░░░░░░░░░░█░█░░░░░░░░█░█░░░░░█░░░░░░█░█░░░░░░░░░░█░█░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░█░░░░░█░░░░█░░░░░░░░█░░█░░░░░░░░░█░░░█░█░░░░░░░░░█░█░█░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░█░░░░█░░░█░░░░░░░░░░█░█░░░█░░░░░█░█░█░█░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░█░█░░░░░░░░░█░░░░█░░░█░█░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░█░░░░░░░░░░█░░░░░░█░█░█░░░░░█░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░█░░░░░░█░█░░░░░░░░█░█░░░░░░░░█░░░░█░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░█░░░░░█░░█░░░░░░█░█░█░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░█░░░░░░░█░░░░░░░░░░░░░█░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░█░░░█░█░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█░░█░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░

73
input/23.txt Normal file
View File

@ -0,0 +1,73 @@
#....#############.####.##.#..#..#.#.##..#..###.###.#...#..#.##..###...##
.####.#.#.#####.#....###...###...#.##.#...#...#.#...#..#.###..#..####.#.#
####....#.#..##...####.#..#.......#.###..#.##.###.##..###...#####.......#
.#.#....#####..#.#.##...#.##..#####...###............##....#####.###..#..
######.##..#.#.#.#..#..#.#..#.##..#.##.###.#.##.#.##..#.#####..#.##.#....
..#..#####..#.##########.#......#.#.#.#.###.#.#.###.#..#####...###.#..##.
#####.#.##..#.#.#..#.#.#..##.#.##...##.#.#.##.....#........#.###.#.##.#.#
...##...###.....#....##...##.##.##..#.....#.##......#....#...####..#.#...
.#.#.#..#.#..##.#.#..###.####.#...#...#.##.##.#.###.....#....#..###.#.#..
.#..###.#.#.#....##.#...#.###...#...#.###.####......#.#####.....#.####...
#.##.######.#.##.#..##############..#......###.#.##.#...##.#..#...#......
.###...#..##..###..##...##..#####..#..###..##.#..##....#.##########.#...#
#...#......##.###.####..#..#.###.#.#.###.#####.####..#####.####...####.#.
...#.##..#..#...##.###.#...#.#....##.##...###..#..##..##.#....###......##
####..#.#.##..##...#.##.#....###.##..#.#.#.#..#.#.#####..###..#.#####.#.#
..####..##.#..##.###.##.....###....####.#.#...##.##...#...#..#..#####..##
#.#.#.##.####...#.....#..#.##..........#..###.....#..##..##..###.##......
#.##########..#...####.###....#.###..#....#....#..##.#...##.###...#...#..
.##.##....##...###.###....#.###.#.....##..#.#.#.....#.##..##.#.#.#..#.#.#
..#.##.###..#....#..#..#.#.#..#.####...#.####...###.#.#.#...######...#.#.
###.##.###.#..##..#.#..#.#.#..#.##..###...#.##..#...###.#...##.#....###.#
##..#.....#..########.##.#.####..#.##..##..####..####..##..#..#.##.#.#...
#....##.#.#..#.#.###.###.#....###.##..###.##..#.......##..###.##.....#..#
#..#..#.#.#.####...#.##....#....#..####..#....#..#.##....###..##...##.#..
##.....#..##.#..###..#.####.#...#.#.#.#..#.#..####..#....#.###.####.####.
###..#...##..####..#.##.....#.###.###.##......##..#.####.#.....##.#.####.
##.#...##.#..###.##.#...###.#####..#.#...#####..#####.#.##.#..##....#.###
##.#....##...#.#.##..##...#.#.#.#..####.#.#.#.#.###.#.###.....##..######.
#...##...##..##..#.#...#..#.#..#.#......#.#.#.#.#.####...#.....##..#..##.
##.#..#.######....###..#..##...#..###..#.####.######....#..#..#.#####..#.
......###..#.#..##...#.####.####.###..#..###.#..#..##.#.##...#.#....#####
####..##.####.#.######....#..#...##.##..##.....#..##.#.#.##..###..###.###
.#..#.##..#####.##.####..#..#.###...##.##...####...#.#.#.##......##.#..#.
##..#####......#..#.#..##......##.##.#.###.#.##.#.##..#####.#.#.#...#.#..
...#######.#######.#.#..#..#.#.###.#######....##...#....#...#####.##.#.##
#..#.##..#.#..#..######.....###...###....##...##.##...#..#.........####..
##..#######.#.#....#...###..#...#.##.....###.##.#.#.#..#.#....##.#......#
.#.#.##..#.#.#.###.##.#....#.###..#.#...#.##.#####.#....#..##..#.##....#.
###.#########..#...#.#..##...#.#.##.###.###....#.....#.#.##.#.#.###.#....
....##..###..##.#....#..##.#.##..#.#.####.##......###.#.###......#.###...
..##.#......##.#.#.###.#.######..##.#....#..##..###..#...##...#...#...#.#
#.##.##..##.#.##...##...##.######.####.#..####...#.###.#...###..#.##.###.
##...#....####..####.##.##.###.#...##..........##..##..#...#..#...##.#...
...#.#.#....#..#####.##...####....##..#..#.##..##.######....#..##.###.#..
##.##......##.##.##.....###...##....##.###.######......#.###...##.###...#
#..##...#....#...###.....#.#.##.###.#.#.##.##...##..#..###........###..#.
#.#...#.###.##...#...#.#.#.....####.........##..##..####.######....#.#..#
######.#.#..#.#.##.##.#...#..#.#....#..#..#.#.#.#.#####...#.....#.#.#.###
.#.#.###.###.###.######.#...#....#..#.##..#.##.#...#...#...##..####.#.#.#
..#....##.###.##.###.#.###.#.##.#.#..#.#.#.##.#..#.#.##.#.##..#.#.####...
.##.##..#.####..#.....#.....##.#....##..###..######..#.##.##...#...##.##.
..#.#.#..#.#....#..#.##..####..#..#....#..#..##.#.###.##.#........#.####.
##...##.###.#.###.###....##.##..#...#....#.####..##.###....#..#.##..#####
##.#.####...#.##.#....##.#.....#.#..#..###.##.#....##.####.#.#####.#####.
.....##.#......#..###..#..#..#.#.#.##.##..#..#.#..#..##.##.####.#.#.#.#.#
##.#.##.#.##.#..#####...##..#....##.###.#.##..###...##..##..#..#.##..#..#
#...#..#.###.#.#..##.#.###....#...#..#.#...#.#..##.###...##...####.###.##
.#..#..###....#.#.#..#.######.#.#....#####...#.#.###..#.###....#..######.
.#..#.##.#....##.###....#.#.###.#.#...##...##..###..###..###.##...###.##.
#.#...###..#..#.##.##.....##..#####..#.#.##.####.#.######..#.##.#.......#
..###..##..#...#.###.#.###..#...#.#.#.##...#..####.###.##...#...#..##...#
.#..#.#.#.##.#.###.###..##..#..##...######.#..#.#...#...#..##.#.#..###.#.
#..###.#####..#..###..#.#...#####.##..###..#.###.###.#.#.##..#####....##.
....#..###...#.#.#...##.##...###.#...##.#.#..#.....###........##.#...####
#......#.#..###.....###.#...###...##..#.###.#.##.#.#...#..#...##....##...
..#.####..##..#..###.#...##...######.###.#..#.#.##.##.##.###.####.#..#..#
####.#.##.###.#.#.#.#...#...#.#..####.#.##..##....##...####.#######...##.
.##.##.#.....#.#..#....#.###.#..#..#.#.#.#.##..#.##.#..#####.#.####...###
#....#....#...##.#.#...#####.#..#..###.###....#####...#.....#..#.###.####
#..##.##...##....####..##.#.######.#.#..###...###.#.##.#.##.#...##..#..##
...####..#..###.....#.#...#.##..##..###......###.#..##.#.##.#..#.#.##.##.
...####.##..###.....#..###...##...##.##.##.#.#..###.#.##.#....##.#.##.#..
...#....#.#...#...#..#.#.#.#####..##....##....##.#.##.#.#....#..###..####

88
src/23.rkt Normal file
View File

@ -0,0 +1,88 @@
#lang curly-fn racket
(require "../lib.rkt"
data/queue)
(define elves
(for/fold ([elves (set)])
([row (problem-input 23)]
[y (in-naturals)])
(for/fold ([elves elves])
([col (string->list row)]
[x (in-naturals)])
(if (char=? col #\#)
(set-add elves `(,x ,y))
elves))))
(define (grounds elves)
(define xmin (minimum (set-map elves first)))
(define xmax (maximum (set-map elves first)))
(define ymin (minimum (set-map elves second)))
(define ymax (maximum (set-map elves second)))
(- (* (add1 (- xmax xmin)) (add1 (- ymax ymin)))
(set-count elves)))
(define ((propose elves r) x y)
(define N `(,x ,(sub1 y)))
(define NE `(,(add1 x) ,(sub1 y)))
(define E `(,(add1 x) ,y))
(define SE `(,(add1 x) ,(add1 y)))
(define S `(,x ,(add1 y)))
(define SW `(,(sub1 x) ,(add1 y)))
(define W `(,(sub1 x) ,y))
(define NW `(,(sub1 x) ,(sub1 y)))
(match (% r 4)
[0 (cond
[(set-empty? (set-intersect elves (set N NE E SE S SW W NW))) `(,x ,y)]
[(andmap #{not (set-member? elves %)} (list N NE NW)) N]
[(andmap #{not (set-member? elves %)} (list S SE SW)) S]
[(andmap #{not (set-member? elves %)} (list W NW SW)) W]
[(andmap #{not (set-member? elves %)} (list E NE SE)) E]
[else `(,x ,y)])]
[1 (cond
[(set-empty? (set-intersect elves (set N NE E SE S SW W NW))) `(,x ,y)]
[(andmap #{not (set-member? elves %)} (list S SE SW)) S]
[(andmap #{not (set-member? elves %)} (list W NW SW)) W]
[(andmap #{not (set-member? elves %)} (list E NE SE)) E]
[(andmap #{not (set-member? elves %)} (list N NE NW)) N]
[else `(,x ,y)])]
[2 (cond
[(set-empty? (set-intersect elves (set N NE E SE S SW W NW))) `(,x ,y)]
[(andmap #{not (set-member? elves %)} (list W NW SW)) W]
[(andmap #{not (set-member? elves %)} (list E NE SE)) E]
[(andmap #{not (set-member? elves %)} (list N NE NW)) N]
[(andmap #{not (set-member? elves %)} (list S SE SW)) S]
[else `(,x ,y)])]
[3 (cond
[(set-empty? (set-intersect elves (set N NE E SE S SW W NW))) `(,x ,y)]
[(andmap #{not (set-member? elves %)} (list E NE SE)) E]
[(andmap #{not (set-member? elves %)} (list N NE NW)) N]
[(andmap #{not (set-member? elves %)} (list S SE SW)) S]
[(andmap #{not (set-member? elves %)} (list W NW SW)) W]
[else `(,x ,y)])]))
(define (proposals elves r)
(for/fold ([ps (make-immutable-hash)])
([elf elves])
(hash-update ps (apply (propose elves r) elf) #{cons elf %} '())))
(define (round elves r)
(for/fold ([elves* (set)])
([(p es) (proposals elves r)])
(match es
[`(,e1 ,e2) (set-add (set-add elves* e1) e2)]
[`(,e) (set-add elves* p)])))
(define part1
(for/fold ([elves elves]
#:result (grounds elves))
([r (in-range 10)])
(round elves r)))
(define part2
(let loop ([elves elves]
[r 1])
(define elves* (round elves r))
(if (set=? elves elves*) (add1 r) (loop elves* (add1 r)))))
(show-solution part1 part2)