From 096841335c21f89f30bdedaef15e05ae7e3dd999 Mon Sep 17 00:00:00 2001 From: dobiadi Date: Wed, 25 Dec 2024 11:25:48 +0100 Subject: [PATCH] Day25 --- day25/c/day25 | Bin 0 -> 16024 bytes day25/c/day25.c | 119 ++ day25/input.txt | 4000 ++++++++++++++++++++++++++++++++++++++++++++++ day25/sample.txt | 40 + 4 files changed, 4159 insertions(+) create mode 100755 day25/c/day25 create mode 100644 day25/c/day25.c create mode 100644 day25/input.txt create mode 100644 day25/sample.txt diff --git a/day25/c/day25 b/day25/c/day25 new file mode 100755 index 0000000000000000000000000000000000000000..2a41614124a98743fbba3a5ad5b46bd984936731 GIT binary patch literal 16024 zcmeHOeQaCR6~E82u62dG|iwXP?~L?&&Z|5~Ehau4hPDt96bn1U1)*4uH&>*aA3T z&8}kQK$mi!E|+xxsou_-W@ClmmjI$&4R-S2H*_{5qzDnwu28F;t4j!3l}@8w8FmGo zi&x@>KqDl1)}NJ&Au+SD9u=Sw8trh%R2>(y)aKcENaW?PK(a#;?WTm?l&~YbAp8+h zJ~1bFG>LrXq6{)@GCwnxYd0+Ha?vI93DF0(o$to{U&mjUu&cE4VOTD%)!B@Y{Cx-P z#4QpUUk!AdcL;xl?t?7yPbkvM)`fz58ynVz{B@yVcxbq8xT&$OvB5qVv9ITjF|K+z za87OAwwswoSPFS$FENSJVmdODph=FpxWq8+X#ad->T%V-Y+%#g=(pLT_zboBgK*@zG#zjwD6p4dAbUBe%T_jC|uf3H*iZO4cpw7PS7D z>fY6<`UBBGZ*VXci0mOuWw|91_1Ky}N6bgiN$`=jBfo z$$^9qdyTs527A5UabU;eZf#T7+Z(dI4Kv;K_KlcF6RaNz)L%{E2WyU4d> zxy4Q~1H}v!Gf>PxF$4c!8TiO@^(7_#UWGDIc61$M%6KYf(x#O7?<$V*3)MEB0=Bm5 z4{)|Dm!XGrAIdV*8njifAdOpq%oL|zL>jj!nG~m=MH;sznZum^InuZ_$QF*m!)SysDj*0chCW=3@9I$1jWvm=B24S_>Eo0lD>zRmw`|~{ql!?v1h5_Qor1U~Q#?TSP2cE`L z`}Zr!>QraqTxW9p5c*A)9_UOaAAoLWa?d#Hu`GANK#A8pi9agIj{6;FdV1`Z3x70jO}Ir12Qd-Nz$oy~t8 zdJ4m6fiQx~#2#A(#)1*J6K6fi%6N8sck%^{$ekQ`4}ut;6$H*F@}K7ZC&7PwQuud6 zIKOv~rgV=dho0-PL_9VtcjtK3aYjkTY_gKvd^6@N5wgja)gD_H-Z({p{C9&}mOk=@ zrYVrjZcwa-jh-Ww-UlpC;)ApUMTxi4tGNo?eZO+8J{K(G_{so_VAzqm^)}}o=WWj0 zo$4{TUt^Dgz!}%dEn_e7-U-R^W@gD{O=};2$1;XF#amb7Nn{e|5`Su08I$3bjyHmW z+gDCWQhcu~$;wf;?*yc5M3JUWl#YTW%a}or+dIy~2+kw8tp1H1s$~8Qm*6-L^9O=S z@XPVoD)=1A+zqovnIQ6Iu6`%*obhsro4~37tDRt#-txJo&CC%#fAIO>IPXrJzFkSY zt;FBC&;_d}<#-j+`6Os-i@$d*V;|2L0e>#MV=Kur6GHRF*kX9J+zv|kXql@`Tb7SN z#O#>+_oIF}{(_KL#-y z+OS)RZ=Q!;CGl=-0W6)nfY26STmuuq2f@nX$7y-K zx*SfPGA5mhUn;wIIV@O7+59kG_1o$6CAh`$Hmj6=5PLA36PB-g^f;~@SM&AvzUUsE ztQ4LCzrJd(kXo3f=0DoBcek!UTGocFP@;cNd!8dTR~m8 zKv6CyD7{`5iL|I!gWvvmyC9I>OYsL|Y**;OnnZxa?-m`3`>fET+A;DEzw+?w0WnvF zALuweEiMFpH{ojMh1jyuAkJeEOLJ{8ETB zpZ*mE_-lZVapqpvbp`Zy0^iCbn|;~~{Dr0(M)QiK5#(cKsxZRuuCVO~eihVP56GO% zp6Y?W2if@^Uva$a9ONHNADHLjdRarYP zDbFhNp#pwy%$uhqUB)7ItOmz&^5B=s(6fU;WjJaY3*2SSL0i4@JgbWieY_@p7E4tz z2EC3w8;PNyekPQhs(jTy7*YGYVLw*vySKv#P%*C#4F>#-7uu`p-oZgJuBeZPDu1lc%)kI!BwuhE~mQdKop-p{@~$X|?C?9XB|`{2I*n0GH=EUIH4^`Krq z5FKFla3mJ6_lAe;1JTGpAR60eVC@|W!vDww{etCeb=Sqby^O2(c?bKL-M=pkE_94V zb;(_U=wL7so<*o2iv~hoG!VUkP>k7m-1b;t82Wq?*rO3XTkL^8wI}NB52$^9uq8^j zP`%Np7Xn2K>cha^{-6)MMqn&B*|`IKFt|s|?u+#I2g0%J;`#a=+&94z&erPJhz$TC z?VHF0>KfZhAaIKU%bK?)VNWOvJ^}4xh;D?A(SBIi6XN&r#zxOg;<=$?w0}a_6Iw}8 zV6Od5!2bvAeJFm~4-%4pu}#YEA8A-GbZ{?7_OxFld`u(^W5h09KkeIsz{8Nqp7x)F zwBH03-g5JQCvb6ZNA|RzBU~ZuD1Oo-+z)cxD-uonMZytbPdTRe1)C+IgE=L8+OHCx z6^i7a?CJV{DC}E>9_@b#FBt4`kDP1&B=9gNG=BE;Mtttjdx02+$4Y&~C*UyJTZJ9r zVWTqig*b~(=h#mR1;T6T#X^i@6-a>lAftcU_Yl&159#O5-(LxP%0IITO@X-IG`3v( zmq3XA$-dI6YZI>3$?Q4T{#B3|?VGH+D&fVfrQV_YN9@<3ga5}PmhH^{pVsBqCws!T zK+R&Xr}w>+|DiqZzj5x6f7)l$|FzQpuj2g2Mt*4?d<;CiezK?ke@d-GZN_SK$ezib z@KcZ&?P=eh7WREvOT9yOgeEXH+SC5Et6tZqIB6KN%hF(sJc_?t)+OBq>~qIkAp8q; z8kUhgKHrTEW5s4fntQrLKR+f0R77C-IfVCs;-}{a&Toocx75$m8+5eh3{HMYcOi80 O*)tLNk{p8^lKl%xh4&x; literal 0 HcmV?d00001 diff --git a/day25/c/day25.c b/day25/c/day25.c new file mode 100644 index 0000000..c00d584 --- /dev/null +++ b/day25/c/day25.c @@ -0,0 +1,119 @@ +#include +#include +#include +#include + +#define CHARS_MAX 6 +#define MAX_KEYS 1024 +#define MAX_LOCKS 1024 + +typedef enum { + EMPTY, + FILLED +} tile_t; + +typedef struct pattern { + tile_t schematic[7][5]; + uint8_t list[5]; +} pattern_t; + +int main() { + char c; + + pattern_t *locks = calloc(MAX_LOCKS, sizeof(locks[0])); + pattern_t *keys = calloc(MAX_KEYS, sizeof(keys[0])); + int lock_count = 0, key_count = 0; + int *count; + int i = 0, j = 0; + + int reading_lock = 0, reading_key = 0; + + while ((c = getchar()) != EOF) { + if (c == '\n') { + i = 0; + if (reading_lock == 0 && reading_key == 0) { + continue; + } + if (j == 6) { + j = 0; + reading_lock = 0; + reading_key = 0; + (*count)++; + } else { + j++; + } + continue; + } + + if (!reading_lock && !reading_key) { + switch (c) { + case '.': + reading_key = 1; + break; + case '#': + reading_lock = 1; + break; + } + } + + pattern_t *pattern_collector = reading_lock ? locks : keys; + count = reading_lock ? &lock_count : &key_count; + + switch (c) { + case '.': + pattern_collector[*count].schematic[j][i] = EMPTY; + break; + case '#': + pattern_collector[*count].schematic[j][i] = FILLED; + break; + } + i++; + } + + // Parse each lock schematic into list of numbers + for (int i = 0; i < lock_count; i++) { + for (int j = 0; j < 5; j++) { + uint8_t value = 0; + for (int k = 1; k < 7; k++) { + value += locks[i].schematic[k][j] == FILLED; + } + locks[i].list[j] = value; + } + } + + // Parse each key schematic into list of numbers + for (int i = 0; i < key_count; i++) { + for (int j = 0; j < 5; j++) { + uint8_t value = 0; + for (int k = 5; k >= 0; k--) { + value += keys[i].schematic[k][j] == FILLED; + } + keys[i].list[j] = value; + } + } + + uint64_t good = 0; + // Every key with every lock +#pragma omp parallel for + for (int i = 0; i < lock_count; i++) { + for (int j = 0; j < key_count; j++) { + int potential = 1; + for (int k = 0; k < 5; k++) { + if (locks[i].list[k] + keys[j].list[k] > 5) { + potential = 0; + break; + } + } + if (potential) +#pragma omp critical + { + good++; + } + } + } + + printf("%lu\n", good); + + free(locks); + free(keys); +} diff --git a/day25/input.txt b/day25/input.txt new file mode 100644 index 0000000..a53bc51 --- /dev/null +++ b/day25/input.txt @@ -0,0 +1,4000 @@ +..... +..... +....# +...## +#.### +##### +##### + +..... +....# +.#.## +##.## +##.## +##### +##### + +##### +##.## +##.#. +#..#. +...#. +...#. +..... + +..... +.#... +.#... +.##.. +.##.# +.#### +##### + +##### +.#### +.##.# +.#..# +.#... +..... +..... + +##### +###.# +.##.# +.#..# +.#..# +....# +..... + +##### +####. +#.##. +#.##. +#.##. +#.#.. +..... + +##### +#.### +#.### +#..#. +#.... +#.... +..... + +..... +#.... +#.#.. +#.##. +####. +####. +##### + +##### +####. +.##.. +.##.. +.#... +..... +..... + +##### +#.### +#.##. +#.##. +#..#. +#.... +..... + +..... +....# +...## +...## +...## +#.### +##### + +##### +###.# +.##.# +.##.# +.#... +.#... +..... + +##### +##.## +##.## +#..## +#..#. +#..#. +..... + +##### +###.# +#.#.# +....# +....# +..... +..... + +##### +#.### +#.### +#.### +#.#.# +..#.. +..... + +..... +....# +....# +....# +..#.# +.##.# +##### + +..... +.#... +###.. +####. +####. +####. +##### + +..... +.#... +.#.#. +.#.#. +##.#. +####. +##### + +..... +.#... +.#..# +.##.# +.##.# +.##.# +##### + +..... +.#... +.##.. +.##.. +.###. +####. +##### + +##### +#.### +#.### +#.#.# +..#.# +..#.. +..... + +##### +.#### +.#### +.#.## +...#. +...#. +..... + +##### +##### +####. +.##.. +.#... +..... +..... + +..... +.#... +.#... +.#.#. +##.#. +##.## +##### + +..... +..... +#.... +#.... +#.#.# +#.#.# +##### + +..... +..... +...#. +...#. +#..#. +#.##. +##### + +..... +#...# +#..## +#.### +#.### +##### +##### + +..... +.#.#. +.###. +.###. +####. +####. +##### + +..... +#.... +##... +##.#. +##.#. +####. +##### + +..... +..... +..... +...#. +.#.## +.#.## +##### + +##### +.##.# +.##.# +.##.# +.#... +..... +..... + +##### +##### +##.## +.#.#. +.#.#. +...#. +..... + +##### +##.## +##.## +##.## +#..## +#..#. +..... + +..... +...#. +.#.#. +.###. +####. +##### +##### + +..... +..... +...#. +#.##. +#.### +##### +##### + +##### +.#### +.#.## +.#.## +....# +..... +..... + +..... +..#.. +..##. +.###. +.#### +.#### +##### + +..... +....# +..#.# +..#.# +..### +#.### +##### + +##### +##.## +##.## +.#.#. +.#.#. +.#.#. +..... + +..... +.#... +.##.# +##### +##### +##### +##### + +..... +.#... +.#..# +.#..# +.##.# +##### +##### + +##### +#.### +...#. +...#. +...#. +...#. +..... + +..... +..... +..... +.#... +.#..# +.#.## +##### + +##### +##### +##### +.#.#. +.#.#. +.#.#. +..... + +##### +.###. +.###. +.###. +.##.. +.#... +..... + +##### +###.# +###.# +.##.# +..#.# +..#.. +..... + +..... +..... +.#.#. +.#.#. +####. +####. +##### + +##### +##### +##.## +##.#. +.#.#. +.#... +..... + +..... +..... +..#.. +..#.. +#.#.# +###.# +##### + +..... +..#.. +#.#.. +#.#.# +#.#.# +#.#.# +##### + +..... +..... +#...# +#...# +##..# +##.## +##### + +..... +....# +#..## +#..## +#.### +#.### +##### + +##### +#.### +#.### +#..#. +..... +..... +..... + +..... +#.... +#...# +#..## +#.### +##### +##### + +..... +..... +.#... +.#... +##.#. +####. +##### + +..... +..... +.#.#. +##.## +##.## +##### +##### + +##### +##### +##### +.#.## +....# +..... +..... + +..... +.#... +##... +##... +###.# +###.# +##### + +##### +##.## +.#.## +.#..# +.#... +..... +..... + +..... +..... +#..#. +#..#. +#.### +#.### +##### + +..... +..... +#.... +#.#.. +#.#.# +###.# +##### + +##### +.#### +..#.# +..#.# +..#.# +..#.. +..... + +##### +#.### +#.#.# +....# +....# +..... +..... + +##### +#.### +#.### +#.#.# +..#.# +....# +..... + +..... +..... +..#.. +..#.# +.##.# +##### +##### + +..... +..#.# +#.#.# +#.#.# +#.#.# +#.### +##### + +##### +#.### +..##. +...#. +..... +..... +..... + +##### +##.## +##.## +##.## +#...# +#...# +..... + +..... +.#... +.#..# +.#.## +.#.## +.#### +##### + +..... +..... +.#... +##.#. +##.#. +##.## +##### + +##### +##.## +##.## +##..# +#...# +..... +..... + +..... +#.#.. +#.#.. +###.. +####. +####. +##### + +..... +....# +.#..# +.#..# +##.## +##.## +##### + +..... +..... +..#.# +..#.# +#.#.# +#.### +##### + +##### +.#### +.#### +..### +..### +..#.# +..... + +..... +#.... +#.... +##..# +###.# +##### +##### + +##### +#.##. +#.##. +..#.. +..#.. +..... +..... + +..... +..... +..#.# +.##.# +.##.# +.#### +##### + +..... +....# +..#.# +.##.# +.#### +##### +##### + +##### +##### +.#.#. +.#.#. +.#.#. +..... +..... + +..... +....# +..#.# +#.### +##### +##### +##### + +##### +#.### +#.#.# +#.#.# +#.#.# +#.... +..... + +..... +..... +.#... +.#... +.#..# +###.# +##### + +..... +#...# +#...# +#...# +#..## +##.## +##### + +..... +..... +.#..# +.#.## +.#### +##### +##### + +##### +##.## +##.## +##.## +##.## +.#..# +..... + +..... +..... +..... +....# +#...# +##.## +##### + +##### +##.## +.#.## +.#.## +.#..# +.#... +..... + +..... +..... +..#.. +#.#.. +####. +##### +##### + +##### +.#### +..### +..##. +...#. +..... +..... + +##### +#.##. +#..#. +#..#. +#..#. +#.... +..... + +##### +##.## +##.## +##.## +.#..# +.#... +..... + +##### +.###. +.#.#. +.#... +.#... +..... +..... + +..... +..... +#.#.# +#.#.# +#.#.# +###.# +##### + +..... +#.... +#.#.# +##### +##### +##### +##### + +..... +.#... +.#... +##..# +###.# +###.# +##### + +##### +##### +#.### +#.### +#.#.# +#.#.# +..... + +##### +##### +##### +.#### +.#.## +.#..# +..... + +##### +##### +##.## +##.#. +.#.#. +..... +..... + +..... +..#.. +.##.# +.##.# +###.# +###.# +##### + +##### +##### +#.##. +#.##. +...#. +...#. +..... + +##### +#.### +#..## +#..## +....# +....# +..... + +..... +..#.. +..#.. +..#.. +#.#.. +#.##. +##### + +..... +.#... +.#..# +##..# +##..# +###.# +##### + +##### +.#### +.#### +.##.# +..#.# +..... +..... + +..... +#.... +#..#. +#..#. +##.#. +##### +##### + +##### +.#### +..#.# +..#.# +..... +..... +..... + +..... +..#.# +..#.# +#.#.# +#.#.# +##### +##### + +##### +###.# +##..# +#...# +#...# +#...# +..... + +##### +##.## +##..# +.#..# +....# +....# +..... + +##### +.###. +.##.. +.#... +..... +..... +..... + +..... +..... +.#... +.#.#. +##.#. +####. +##### + +..... +...#. +...#. +..### +.#### +##### +##### + +..... +..#.. +..##. +..##. +.###. +.#### +##### + +##### +###.# +###.# +.#..# +.#... +..... +..... + +..... +#...# +##..# +##.## +##.## +##### +##### + +##### +##### +###.# +.##.# +.##.. +..#.. +..... + +##### +#.#.# +..#.. +..#.. +..... +..... +..... + +##### +####. +#.#.. +..#.. +..#.. +..#.. +..... + +..... +#..#. +##.#. +##.## +##### +##### +##### + +..... +.#... +.##.# +.##.# +.##.# +###.# +##### + +..... +.#... +.#..# +###.# +##### +##### +##### + +..... +#.#.. +#.##. +####. +##### +##### +##### + +##### +##### +#.### +#.### +#.### +#..#. +..... + +##### +###.# +.#..# +.#..# +.#..# +..... +..... + +##### +.#### +.#.#. +...#. +..... +..... +..... + +..... +.#... +.#... +.##.# +.#### +##### +##### + +##### +.#### +..##. +..##. +..#.. +..... +..... + +##### +###.# +#.#.# +#.#.# +#.#.# +#...# +..... + +##### +##### +#.### +#.#.# +..#.# +....# +..... + +##### +#.### +#.### +#..## +....# +....# +..... + +..... +..... +.#... +.#... +.#... +.##.# +##### + +##### +##### +.#### +..##. +...#. +...#. +..... + +..... +..#.. +..#.. +..#.# +..### +#.### +##### + +..... +...#. +...## +#.### +#.### +#.### +##### + +##### +##### +##### +##### +##### +.#.#. +..... + +##### +##### +###.# +###.. +##... +.#... +..... + +..... +.#... +.##.. +.##.# +.#### +##### +##### + +..... +...#. +..##. +.###. +.###. +.###. +##### + +##### +##.#. +.#.#. +...#. +..... +..... +..... + +##### +##### +#.### +#.### +#.#.# +....# +..... + +..... +.#... +.#... +.#... +###.# +##### +##### + +..... +.#.#. +.#.#. +.#.#. +.###. +##### +##### + +..... +.#..# +.#..# +.#..# +.##.# +###.# +##### + +..... +..#.. +#.#.. +#.##. +#.### +#.### +##### + +..... +..#.. +.###. +####. +##### +##### +##### + +##### +####. +##.#. +#..#. +#.... +..... +..... + +##### +#.##. +..##. +..##. +...#. +..... +..... + +..... +..... +.#... +.#... +.#.#. +.###. +##### + +..... +..#.. +..#.. +..##. +..##. +.###. +##### + +..... +.#... +.#... +##..# +##..# +##.## +##### + +..... +..#.. +#.#.. +####. +####. +##### +##### + +##### +##.## +#...# +#...# +#.... +#.... +..... + +##### +.###. +.#.#. +.#.#. +.#.#. +.#... +..... + +##### +##### +#.### +..### +...#. +..... +..... + +..... +#.#.. +#.##. +#.### +##### +##### +##### + +..... +..... +..#.. +#.#.# +##### +##### +##### + +##### +.###. +.###. +.##.. +.##.. +..#.. +..... + +..... +..... +..#.. +..##. +.###. +##### +##### + +##### +##### +##### +####. +.#.#. +...#. +..... + +##### +#.#.# +#.#.# +..#.# +....# +....# +..... + +##### +##### +##### +.###. +.###. +.#.#. +..... + +##### +##### +####. +##.#. +##... +.#... +..... + +##### +####. +###.. +###.. +.##.. +.#... +..... + +..... +#.#.. +#.#.. +###.# +###.# +###.# +##### + +##### +.###. +.###. +.#.#. +.#... +..... +..... + +..... +....# +....# +#...# +##..# +###.# +##### + +##### +.#### +.###. +..##. +..#.. +..... +..... + +##### +##.## +##..# +##..# +#.... +#.... +..... + +##### +##### +.#### +.#.## +.#.#. +..... +..... + +##### +####. +#.##. +#..#. +#..#. +#..#. +..... + +##### +##.#. +##.#. +.#.#. +.#.#. +.#.#. +..... + +##### +.##.# +.#..# +.#..# +.#..# +....# +..... + +##### +##.## +.#..# +.#... +..... +..... +..... + +##### +##### +#.### +#.### +#..## +#..#. +..... + +..... +..#.. +..#.. +#.##. +#.##. +##### +##### + +##### +##.## +##.#. +##.#. +##... +.#... +..... + +##### +.#.## +.#.#. +...#. +...#. +...#. +..... + +..... +#...# +#.#.# +#.### +#.### +#.### +##### + +##### +.#### +.#.## +.#.## +.#.## +.#.#. +..... + +##### +##### +###.# +.#..# +..... +..... +..... + +..... +.#... +.#... +.#... +###.# +###.# +##### + +##### +.###. +.###. +.#.#. +...#. +...#. +..... + +..... +..... +..... +..... +#.... +#.#.# +##### + +##### +##### +.#### +..### +..#.# +..#.# +..... + +..... +#.#.# +#.#.# +#.#.# +#.#.# +#.### +##### + +##### +##### +####. +####. +.###. +..#.. +..... + +..... +.#... +.##.. +.##.. +###.# +##### +##### + +##### +#.### +#.### +#.### +#..#. +..... +..... + +..... +...#. +.#.#. +.#.#. +.#.#. +##.#. +##### + +..... +..... +..#.. +..#.. +#.##. +#.### +##### + +##### +####. +.###. +.###. +..##. +...#. +..... + +##### +##### +#.### +#.### +#.##. +#.#.. +..... + +##### +#.### +#.#.# +#.#.# +....# +....# +..... + +##### +##### +##.## +#..#. +..... +..... +..... + +..... +..... +..#.. +..#.# +#.### +##### +##### + +..... +..... +#.... +#...# +##..# +##.## +##### + +##### +##.#. +##.#. +##.#. +##... +.#... +..... + +..... +#..#. +#.##. +#.##. +#.##. +##### +##### + +##### +####. +#.##. +#..#. +#..#. +..... +..... + +##### +.##.# +.##.# +..#.. +..#.. +..#.. +..... + +##### +#.### +...## +....# +....# +..... +..... + +##### +.#### +.#### +.##.# +.##.# +..#.. +..... + +..... +..... +#.... +#.... +#.#.. +####. +##### + +..... +..... +...#. +..### +..### +#.### +##### + +..... +.#... +.##.. +.###. +##### +##### +##### + +..... +..#.# +..#.# +..### +#.### +##### +##### + +..... +#.#.. +#.#.. +###.. +####. +##### +##### + +..... +..#.. +..#.# +#.#.# +#.#.# +##### +##### + +##### +##### +#.##. +#.#.. +..#.. +..#.. +..... + +..... +..... +#.#.. +#.#.. +#.#.# +###.# +##### + +..... +..#.# +..### +..### +#.### +#.### +##### + +##### +##### +.#.## +.#.#. +...#. +..... +..... + +##### +##### +##.## +.#.## +.#.#. +...#. +..... + +..... +#.#.# +#.#.# +#.#.# +#.#.# +###.# +##### + +..... +...#. +#..#. +#..#. +##.#. +##.## +##### + +..... +#.#.. +#.#.# +#.#.# +###.# +##### +##### + +..... +#..#. +#.##. +#.##. +#.### +#.### +##### + +..... +..... +..... +#..#. +#..#. +#.### +##### + +##### +###.# +###.. +#.#.. +#.#.. +#.#.. +..... + +##### +##### +.#### +.###. +..##. +..#.. +..... + +..... +#.... +#..#. +##.#. +##.#. +##.## +##### + +##### +##### +##### +##.## +#..#. +#.... +..... + +##### +##### +#.#.# +#.#.# +....# +....# +..... + +..... +..... +#.... +##..# +##.## +##.## +##### + +..... +.#..# +###.# +###.# +###.# +##### +##### + +##### +####. +####. +#.##. +#.#.. +#.... +..... + +..... +..... +#.#.. +#.##. +#.##. +#.### +##### + +..... +.#... +.#... +.#... +.#... +###.# +##### + +##### +##### +#.### +#.##. +...#. +..... +..... + +##### +##### +##### +###.# +###.. +#.#.. +..... + +..... +..... +..... +..#.# +.##.# +.#### +##### + +##### +##.## +#..## +#..## +#..## +#...# +..... + +..... +...#. +.#.#. +.#.#. +.#.#. +.#.#. +##### + +##### +###.# +#.#.# +..#.# +..#.. +..#.. +..... + +..... +#.... +#.... +#.... +#..#. +##.## +##### + +..... +.#... +.##.. +.##.# +###.# +##### +##### + +##### +.#### +.#.## +.#.## +.#.#. +.#.#. +..... + +..... +.#... +.#... +.#... +.#.#. +##.#. +##### + +..... +..#.. +#.#.. +#.#.# +###.# +##### +##### + +..... +...#. +..##. +..##. +.###. +.###. +##### + +##### +#.### +..### +..### +..#.# +..#.# +..... + +..... +..... +..#.. +..#.. +.##.. +.##.# +##### + +..... +.#..# +.#..# +.#..# +.#.## +.#.## +##### + +##### +#.### +#.### +#..#. +#..#. +#.... +..... + +..... +..#.# +..#.# +..#.# +..#.# +.#### +##### + +##### +#.#.# +#.#.# +#.#.# +#.... +..... +..... + +##### +####. +#.##. +#.#.. +#.... +..... +..... + +##### +##.## +.#.## +....# +....# +....# +..... + +##### +#.#.# +#.#.# +#.#.# +#.#.. +..#.. +..... + +##### +#.### +#.### +#.#.# +#...# +#...# +..... + +##### +#.#.# +#.#.# +#...# +....# +....# +..... + +##### +#.##. +#.##. +..##. +..##. +...#. +..... + +..... +..... +..#.# +..#.# +..### +#.### +##### + +..... +..#.. +#.#.. +#.##. +#.##. +#.### +##### + +##### +##### +##### +#.### +..### +...#. +..... + +##### +##### +#.### +#..## +#..## +...#. +..... + +..... +...#. +...#. +#..#. +#..#. +##.## +##### + +##### +.#.## +.#.## +.#.## +....# +....# +..... + +..... +...#. +.#.#. +.###. +.#### +.#### +##### + +..... +#.... +#.... +#.#.. +#.#.# +#.#.# +##### + +##### +.#.## +...## +...## +....# +..... +..... + +##### +#.#.# +#.#.. +..#.. +..... +..... +..... + +##### +##### +###.# +###.# +##..# +.#... +..... + +##### +####. +###.. +#.#.. +#.#.. +#.#.. +..... + +##### +##.#. +##.#. +#..#. +#.... +..... +..... + +##### +###.# +#.#.# +#.#.# +#.#.# +....# +..... + +..... +.#... +.#... +.#... +##.#. +##.## +##### + +..... +#.... +#.... +##... +##.#. +##.#. +##### + +##### +##.#. +##.#. +##.#. +.#.#. +..... +..... + +..... +...#. +...#. +...#. +#.##. +#.##. +##### + +##### +##.## +##..# +##..# +##... +.#... +..... + +##### +#.##. +#.##. +#.##. +#.#.. +..#.. +..... + +..... +..#.. +..#.. +..#.. +#.#.# +#.### +##### + +..... +.#.#. +##.#. +####. +##### +##### +##### + +..... +..... +..... +.#.#. +.#.#. +##.## +##### + +..... +...#. +...#. +.#.## +.#.## +.#.## +##### + +..... +#...# +#...# +#.#.# +#.### +#.### +##### + +##### +##### +##.## +#..## +...#. +...#. +..... + +..... +....# +#...# +##.## +##.## +##### +##### + +..... +..... +..... +....# +.#..# +.##.# +##### + +##### +###.# +###.# +.##.# +.#..# +.#..# +..... + +..... +.#.#. +##.## +##.## +##### +##### +##### + +##### +##### +.#### +.##.# +.##.# +.#... +..... + +##### +#.#.# +#.#.# +#.#.# +#.#.# +#...# +..... + +##### +###.# +#.#.# +..#.# +..#.# +....# +..... + +..... +..... +....# +#.#.# +#.#.# +#.#.# +##### + +##### +##### +##### +#.##. +#.##. +..#.. +..... + +..... +..... +.#.#. +.#.#. +.#.#. +##.#. +##### + +##### +#.### +#.### +#.### +..### +...#. +..... + +##### +.#.## +.#..# +.#..# +.#... +..... +..... + +##### +#.### +#.### +..#.# +....# +..... +..... + +..... +#..#. +#..#. +#..## +##.## +##.## +##### + +##### +##### +#.#.# +..#.# +..#.# +..#.. +..... + +##### +##### +.#### +.#### +.#.## +.#..# +..... + +..... +..... +#.#.. +#.#.# +#.#.# +###.# +##### + +..... +..#.. +..#.. +..##. +..### +#.### +##### + +##### +##### +.#.## +.#.## +.#.#. +..... +..... + +##### +##### +#.### +#..#. +#..#. +#.... +..... + +..... +..... +.#... +.#..# +.##.# +.#### +##### + +##### +##### +.#### +..##. +..#.. +..... +..... + +..... +#.... +#.#.. +#.##. +####. +##### +##### + +##### +##### +#.#.# +..#.. +..... +..... +..... + +..... +..... +#.... +#.... +##.#. +##.#. +##### + +##### +.#### +.#.## +.#..# +.#..# +....# +..... + +##### +####. +#.##. +#.##. +...#. +..... +..... + +..... +..... +..... +#..#. +#..#. +#.##. +##### + +..... +.#.#. +.#.#. +.#.#. +.#.#. +.#.#. +##### + +##### +##### +#.#.# +#...# +....# +....# +..... + +##### +#.##. +#..#. +#..#. +#..#. +...#. +..... + +..... +#.... +##..# +##..# +##..# +###.# +##### + +##### +##.## +##.## +##.## +##.#. +.#... +..... + +##### +##.## +#..## +#...# +#...# +....# +..... + +##### +##### +####. +####. +#.##. +#..#. +..... + +..... +..... +..... +.#... +###.. +###.# +##### + +##### +##### +##### +##### +#.#.# +#.#.# +..... + +##### +####. +####. +##.#. +.#... +.#... +..... + +..... +..#.. +..#.# +..### +.#### +.#### +##### + +##### +##.## +.#..# +....# +..... +..... +..... + +..... +..... +#.... +#.... +##... +##.#. +##### + +..... +..... +..... +#...# +#.#.# +###.# +##### + +..... +.#..# +##..# +##.## +##.## +##### +##### + +##### +####. +.#.#. +.#.#. +.#.#. +.#... +..... + +##### +.#### +.##.# +.##.# +.#..# +....# +..... + +..... +....# +#.#.# +###.# +##### +##### +##### + +##### +##### +#.### +..##. +..##. +..#.. +..... + +..... +..#.. +.##.. +.##.. +.###. +.###. +##### + +..... +#..#. +#..## +##.## +##.## +##.## +##### + +##### +.#### +..#.# +..#.. +..... +..... +..... + +..... +#.... +##.#. +##.## +##### +##### +##### + +##### +##.## +##..# +##..# +##..# +#...# +..... + +..... +..... +.#... +.#... +.#..# +##.## +##### + +..... +..#.. +..#.. +..#.. +.###. +####. +##### + +..... +.#... +.#.#. +##.#. +####. +##### +##### + +##### +##.#. +##.#. +.#.#. +...#. +..... +..... + +..... +#...# +#...# +#..## +#..## +#.### +##### + +##### +#.### +#.##. +#.##. +#..#. +#..#. +..... + +..... +....# +..#.# +.##.# +##### +##### +##### + +##### +.##.# +..#.# +....# +..... +..... +..... + +..... +..#.. +..##. +#.##. +#.##. +####. +##### + +##### +###.# +.##.# +.#... +.#... +..... +..... + +##### +#.##. +#.##. +#.##. +#..#. +..... +..... + +..... +....# +.#..# +.##.# +.#### +##### +##### + +..... +.#..# +##..# +###.# +###.# +##### +##### + +..... +.#... +.#.#. +.#.#. +.#.## +.#### +##### + +##### +#.### +#..## +#..## +#..#. +..... +..... + +..... +.#... +.#..# +##..# +###.# +##### +##### + +..... +.#..# +.##.# +.##.# +.##.# +.##.# +##### + +..... +..... +.#... +.#... +.#... +###.# +##### + +..... +..... +#.... +#...# +#.#.# +##### +##### + +..... +#...# +#...# +#.#.# +#.#.# +###.# +##### + +..... +#.... +#.... +##..# +###.# +###.# +##### + +..... +..... +..#.. +.##.# +###.# +##### +##### + +..... +..... +#..#. +#.### +#.### +##### +##### + +##### +##.## +.#.#. +.#.#. +...#. +..... +..... + +..... +..... +.#... +.##.. +.##.. +.##.# +##### + +..... +#..#. +##.#. +####. +####. +##### +##### + +##### +.##.# +..#.. +..#.. +..#.. +..#.. +..... + +..... +...#. +.#.#. +.#.#. +####. +####. +##### + +..... +..... +.#.#. +##.#. +##### +##### +##### + +##### +##.## +##.#. +.#... +..... +..... +..... + +..... +....# +#..## +#.### +##### +##### +##### + +##### +##### +#.##. +..##. +...#. +..... +..... + +..... +.#... +.#..# +.##.# +##### +##### +##### + +##### +##### +##### +#.#.# +#.#.# +..#.# +..... + +..... +.#... +.#.#. +####. +####. +####. +##### + +##### +#.### +#..## +#...# +#.... +..... +..... + +##### +#.### +#.### +..### +...#. +...#. +..... + +##### +#.##. +...#. +...#. +...#. +...#. +..... + +##### +#.### +#.### +..##. +...#. +..... +..... + +..... +.#..# +.#..# +.##.# +.##.# +.##.# +##### + +..... +..... +..... +#...# +##..# +##.## +##### + +..... +..... +..... +#...# +#.#.# +#.#.# +##### + +..... +...#. +#..#. +#.##. +#.##. +##### +##### + +..... +..... +...#. +...#. +#..## +##.## +##### + +..... +..... +.#... +.#..# +.##.# +##### +##### + +##### +##.## +#..## +....# +..... +..... +..... + +##### +.###. +.##.. +.#... +.#... +.#... +..... + +..... +#.... +#.... +#.#.. +#.#.# +###.# +##### + +##### +####. +.#.#. +.#... +..... +..... +..... + +##### +.#### +.###. +..##. +..##. +...#. +..... + +..... +..... +#...# +##..# +##.## +##.## +##### + +##### +###.# +##..# +##... +#.... +..... +..... + +..... +.#... +.#... +.##.. +.###. +####. +##### + +..... +...#. +...#. +...#. +..##. +#.### +##### + +##### +##### +##### +##### +.##.# +.#... +..... + +..... +#.... +#.... +#..#. +#.##. +####. +##### + +##### +###.# +#.#.# +#.#.# +#.... +#.... +..... + +##### +##### +##.## +##.#. +#..#. +...#. +..... + +..... +#.... +#.#.. +#.#.. +#.#.. +###.# +##### + +##### +##### +###.# +.##.# +.##.# +.#..# +..... + +..... +...#. +...## +.#.## +##.## +##.## +##### + +##### +##.## +.#.## +.#..# +.#..# +..... +..... + +##### +##.## +##.## +.#.#. +..... +..... +..... + +..... +.#... +.#..# +.#.## +##.## +##.## +##### + +##### +.#### +.##.# +..#.. +..... +..... +..... + +##### +##### +.#### +..##. +..#.. +..#.. +..... + +##### +####. +#.##. +#.##. +..##. +..#.. +..... + +##### +###.# +.##.# +..#.# +..#.# +..#.. +..... + +##### +#.#.# +#.#.# +#.#.# +....# +..... +..... + +##### +###.# +###.. +#.#.. +..#.. +..... +..... + +..... +..... +#..#. +#.##. +#.##. +####. +##### + +##### +#.### +#.### +..#.# +..#.# +..#.. +..... + +..... +#.... +##..# +##.## +##.## +##### +##### + +##### +#.#.# +#.#.# +#.#.. +#.... +#.... +..... + +..... +..... +..... +....# +....# +#.#.# +##### + +##### +####. +#.#.. +#.#.. +#.#.. +..... +..... + +..... +.#.#. +##.## +##.## +##.## +##### +##### + +##### +##.#. +##.#. +##.#. +##.#. +#..#. +..... + +##### +##### +##### +####. +##.#. +.#.#. +..... + +..... +.#.#. +.#.#. +.#.#. +##.#. +##### +##### + +..... +..... +..#.. +.##.. +.##.# +.##.# +##### + +..... +...#. +...#. +..##. +#.### +##### +##### + +..... +..... +.#..# +.#..# +##..# +###.# +##### + +##### +###.# +.#... +.#... +.#... +..... +..... + +##### +##### +##### +##### +#.##. +#.#.. +..... + +..... +....# +....# +.#..# +.#..# +.#.## +##### + +##### +.#.#. +.#.#. +.#.#. +.#.#. +.#.#. +..... + +..... +..#.. +.##.. +.##.. +.###. +####. +##### + +##### +.#### +.#### +.#.#. +.#.#. +.#... +..... + +##### +.###. +..##. +...#. +...#. +...#. +..... + +##### +.#### +..### +..### +..#.# +....# +..... + +##### +###.# +#.#.# +#.#.# +#...# +#.... +..... + +##### +.#### +..##. +..#.. +..#.. +..... +..... + +##### +##### +##### +##.## +.#.#. +...#. +..... + +##### +##### +##.#. +##... +#.... +#.... +..... + +..... +..... +.#... +##... +###.# +###.# +##### + +##### +##### +####. +.###. +..##. +..#.. +..... + +..... +....# +.#..# +##..# +###.# +##### +##### + +..... +...#. +.#.#. +##.#. +##.#. +##.## +##### + +..... +..... +....# +.#..# +##..# +###.# +##### + +##### +##### +.#### +.###. +.#.#. +..... +..... + +##### +.##.# +.#..# +.#..# +.#..# +.#... +..... + +..... +#.... +#.... +#.#.# +#.#.# +#.#.# +##### + +##### +#.### +#..## +#..#. +..... +..... +..... + +..... +..... +#..#. +##.## +##### +##### +##### + +##### +##### +#.#.# +#.#.# +..... +..... +..... + +..... +#.... +#..#. +#.##. +##### +##### +##### + +..... +.#... +.#... +.#.#. +.###. +.#### +##### + +##### +##### +#.### +..### +..### +...#. +..... + +..... +.#..# +##..# +##..# +###.# +###.# +##### + +..... +..... +.#... +.#... +.#... +.#.#. +##### + +..... +....# +...## +...## +.#.## +.#.## +##### + +##### +###.# +###.# +.#... +.#... +.#... +..... + +##### +#.### +#..#. +#.... +..... +..... +..... + +##### +.#### +.#### +.###. +..##. +..#.. +..... + +..... +.#... +.#... +.#.#. +##.#. +####. +##### + +..... +....# +.#.## +.#.## +.#.## +##.## +##### + +##### +#.### +#.##. +#.#.. +#.#.. +..... +..... + +..... +..#.# +..#.# +..#.# +#.#.# +#.#.# +##### + +##### +##.#. +##... +##... +.#... +..... +..... + +##### +##### +##.## +.#..# +.#..# +.#... +..... + +##### +#.##. +..##. +...#. +..... +..... +..... + +##### +##### +.#### +.###. +.#.#. +.#... +..... + +##### +.#### +.#### +..### +...#. +..... +..... + +..... +.#... +##... +##... +##.#. +##.## +##### + +..... +..#.. +..#.# +#.#.# +##### +##### +##### + +..... +.#..# +###.# +###.# +###.# +###.# +##### + +..... +..... +#.... +#...# +#.#.# +#.### +##### + +##### +#.#.# +..#.# +..... +..... +..... +..... + +..... +....# +.#..# +.#..# +.#.## +.#### +##### + +##### +#.### +..### +..##. +...#. +...#. +..... + +..... +....# +.#..# +.#..# +.#..# +.##.# +##### + +..... +#...# +##..# +##..# +###.# +###.# +##### + +##### +.#### +.#### +.#### +..### +..#.# +..... + +..... +..... +..#.. +.##.. +###.# +##### +##### + +..... +#..#. +#..#. +#.##. +#.### +##### +##### + +##### +.#### +.###. +.##.. +.#... +.#... +..... + +..... +...#. +.#.#. +.#.#. +##.#. +####. +##### + +##### +###.# +###.# +###.# +.##.# +.#..# +..... + +..... +..#.. +#.#.. +#.#.. +#.#.# +##### +##### + +..... +#.... +#.... +##..# +##.## +##### +##### + +..... +.#... +.#... +##... +##... +###.# +##### + +##### +###.# +##..# +#...# +#...# +....# +..... + +..... +..... +..... +...#. +#..#. +#.### +##### + +..... +....# +....# +..#.# +#.#.# +#.### +##### + +..... +...#. +#..## +#.### +#.### +##### +##### + +..... +#.#.. +#.#.. +#.##. +#.### +##### +##### + +..... +...#. +.#.#. +.#.#. +.#### +.#### +##### + +..... +.#... +.#.#. +.#.#. +.#.## +##.## +##### + +..... +.#.#. +.#.#. +.#.## +.#### +##### +##### + +##### +#.### +#.#.# +#.#.# +#.#.# +..#.# +..... + +##### +####. +#.##. +#.##. +#.##. +...#. +..... + +..... +..... +..... +..... +#.#.. +#.##. +##### + +..... +....# +..#.# +#.#.# +###.# +##### +##### + +##### +##.#. +##... +##... +##... +.#... +..... + +##### +##### +.#### +.#.## +.#.#. +.#.#. +..... + +##### +#.### +#..## +#..#. +#..#. +..... +..... + +##### +####. +####. +####. +##.#. +#.... +..... + +##### +##### +#.### +#.### +#.### +...#. +..... + +..... +#.... +#.... +##... +###.# +###.# +##### + +..... +..... +..... +.#... +.#.#. +.#.#. +##### + +##### +##.## +##.#. +.#.#. +.#.#. +...#. +..... + +##### +####. +.##.. +..#.. +..#.. +..... +..... + +##### +####. +####. +#.##. +..##. +...#. +..... + +..... +..... +.#... +.#..# +.#..# +##.## +##### + +##### +##### +##.## +#..#. +#..#. +#.... +..... + +..... +...#. +.#.#. +##.#. +####. +####. +##### + +##### +#.### +#.### +#.#.# +#.#.# +....# +..... + diff --git a/day25/sample.txt b/day25/sample.txt new file mode 100644 index 0000000..d3c1d1f --- /dev/null +++ b/day25/sample.txt @@ -0,0 +1,40 @@ +##### +.#### +.#### +.#### +.#.#. +.#... +..... + +##### +##.## +.#.## +...## +...#. +...#. +..... + +..... +#.... +#.... +#...# +#.#.# +#.### +##### + +..... +..... +#.#.. +###.. +###.# +###.# +##### + +..... +..... +..... +#.... +#.#.. +#.#.# +##### +