From 34d12093ef537b4f3932a4943d61d827ac38e448 Mon Sep 17 00:00:00 2001 From: Penguin Date: Tue, 7 Dec 2021 18:18:56 -0600 Subject: [PATCH] my code kinda blows... --- day5/c/.gdb_history | 40 ++++ day5/c/Makefile | 9 + day5/c/aoc_day5 | Bin 0 -> 27544 bytes day5/c/aoc_day5.c | 251 ++++++++++++++++++++++ day5/c/aoc_day5.o | Bin 0 -> 18720 bytes day5/input.txt | 500 ++++++++++++++++++++++++++++++++++++++++++++ day5/input_test.txt | 10 + 7 files changed, 810 insertions(+) create mode 100644 day5/c/.gdb_history create mode 100644 day5/c/Makefile create mode 100755 day5/c/aoc_day5 create mode 100644 day5/c/aoc_day5.c create mode 100644 day5/c/aoc_day5.o create mode 100644 day5/input.txt create mode 100644 day5/input_test.txt diff --git a/day5/c/.gdb_history b/day5/c/.gdb_history new file mode 100644 index 0000000..90c5a4c --- /dev/null +++ b/day5/c/.gdb_history @@ -0,0 +1,40 @@ +b 45 +r +n +n +n +p u +n +n +n +n +n +p u.b.x +p u.b.x-u.a.x +q +q +b 62 +r +p u +n +p u.b.y +p u +p grid +p grid[u.a.x] +p ind +n +n +p grid[u.a.x] +q +b 45 +p grid +r +p grid +n +n +n +p u +p grid +c +q +q diff --git a/day5/c/Makefile b/day5/c/Makefile new file mode 100644 index 0000000..8a5d155 --- /dev/null +++ b/day5/c/Makefile @@ -0,0 +1,9 @@ +CC=gcc +CFLAGS=-std=gnu99 -O2 -g -Wall -Wextra -Wshadow +PROJECT=aoc_day4 + +%.o: %.c + $(CC) -c -o $@ $< $(CFLAGS) + +$(PROJECT): aoc_day5.o + $(CC) -o aoc_day5 aoc_day5.o diff --git a/day5/c/aoc_day5 b/day5/c/aoc_day5 new file mode 100755 index 0000000000000000000000000000000000000000..0a4e854abbbd4bab958845a0dc7205429ad7b43e GIT binary patch literal 27544 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 literal 0 HcmV?d00001 diff --git a/day5/c/aoc_day5.c b/day5/c/aoc_day5.c new file mode 100644 index 0000000..90d78e9 --- /dev/null +++ b/day5/c/aoc_day5.c @@ -0,0 +1,251 @@ +#include +#include +#include +#include +#include + +/* #define DEBUG */ + +#define INPUT_FILE ("../input.txt") +#define NUM_EDGES (500) +#define MAX_DIM (1000) + +/* #define INPUT_FILE ("../input_test.txt") */ +/* #define NUM_EDGES (10) */ +/* #define MAX_DIM (10) */ + +typedef struct vertex_t +{ + int x; + int y; +}vertex_t; + +typedef struct edge_t +{ + vertex_t a; + vertex_t b; +}edge_t; + +// takes an array of edges and the length +// fills a grid according to part 1 rules +// computes overlapping points and returns this +int d5_part1(edge_t* edges, int len); + +// takes an array of edges and the length +// fills a grid according to part 1 rules +// computes overlapping points and returns this +int d5_part2(edge_t* edges, int len); + +int calc_overlapping_points(int _grid[MAX_DIM][MAX_DIM], size_t dimension); +void print_grid(int _grid[MAX_DIM][MAX_DIM], size_t dimension); + +int main(void) +{ + edge_t edges[NUM_EDGES]; + memset(edges, 0, sizeof(edge_t) * NUM_EDGES); + + FILE* fp = fopen(INPUT_FILE, "r"); + if(fp == NULL) + { + printf("open file error...\n"); + exit(-1); + } + + int edge_ct = 0; + + size_t len = 0; + ssize_t rc = 0; + char* line = NULL; + + while((rc = getline(&line, &len, fp)) != -1) + { + if (edge_ct >= NUM_EDGES) + { + printf("edges[] out of bounds -- edge count: %d\n", edge_ct); + } + sscanf(line, + "%d,%d -> %d,%d", + &edges[edge_ct].a.x, &edges[edge_ct].a.y, + &edges[edge_ct].b.x, &edges[edge_ct].b.y); +#ifdef DEBUG + printf("%d,%d -> %d,%d\n", + edges[edge_ct].a.x, edges[edge_ct].a.y, + edges[edge_ct].b.x, edges[edge_ct].b.y); +#endif + edge_ct++; + } + printf("Overlapping points (part 1): %d\n", d5_part1(edges, NUM_EDGES)); + printf("Overlapping points (part 2): %d\n", d5_part2(edges, NUM_EDGES)); + return 0; +} + +// takes an array of edges and the length +// fills a grid according to part 1 rules +// computes overlapping points and returns this +int d5_part1(edge_t* edges, int len) +{ + int grid[MAX_DIM][MAX_DIM]; + memset(grid, 0, MAX_DIM * MAX_DIM * sizeof(int)); + + for(int edge = 0; edge < len; edge++) + { + if(edges[edge].b.x == edges[edge].a.x) + { + // from y2 to y1 + if(edges[edge].a.y > edges[edge].b.y) + { + for(int ind = edges[edge].b.y; ind <= edges[edge].a.y; ind++) + { + grid[edges[edge].a.x][ind]++; + } + } + else // from y1 to y2 + { + for(int ind = edges[edge].a.y; ind <= edges[edge].b.y; ind++) + { + grid[edges[edge].a.x][ind]++; + } + } + } + else if(edges[edge].b.y == edges[edge].a.y) + { + if(edges[edge].a.x > edges[edge].b.x) + { + // + for(int ind = edges[edge].b.x; ind <= edges[edge].a.x; ind++) + { + grid[ind][edges[edge].a.y]++; + } + } + else + { + for(int ind = edges[edge].a.x; ind <= edges[edge].b.x; ind++) + { + grid[ind][edges[edge].a.y]++; + } + } + } + } + +#ifdef DEBUG + printf("Part 1 grid:\n"); + print_grid(grid, MAX_DIM); +#endif + return calc_overlapping_points(grid, MAX_DIM); +} +// takes an array of edges and the length +// fills a grid according to part 1 rules +// computes overlapping points and returns this +int d5_part2(edge_t* edges, int len) +{ + int grid[MAX_DIM][MAX_DIM]; + memset(grid, 0, MAX_DIM * MAX_DIM * sizeof(int)); + for(int edge = 0; edge < len; edge++) + { + // now we have to account for horizontal, vertical, and diagonal lines, or lines with a 45 degree angle + // this just means the slope must be 1. so y2-y1/x2-x1 needs to be 1 + if(edges[edge].b.x == edges[edge].a.x) + { + // from y2 to y1 + if(edges[edge].a.y > edges[edge].b.y) + { + for(int ind = edges[edge].b.y; ind <= edges[edge].a.y; ind++) + { + grid[edges[edge].a.x][ind]++; + } + } + else // from y1 to y2 + { + for(int ind = edges[edge].a.y; ind <= edges[edge].b.y; ind++) + { + grid[edges[edge].a.x][ind]++; + } + } + } + else if(edges[edge].b.y == edges[edge].a.y) + { + if(edges[edge].a.x > edges[edge].b.x) + { + // + for(int ind = edges[edge].b.x; ind <= edges[edge].a.x; ind++) + { + grid[ind][edges[edge].a.y]++; + } + } + else + { + for(int ind = edges[edge].a.x; ind <= edges[edge].b.x; ind++) + { + grid[ind][edges[edge].a.y]++; + } + } + } + else if(abs(edges[edge].b.y - edges[edge].a.y) == + abs(edges[edge].b.x - edges[edge].a.x)) + { + int inc_x = (edges[edge].b.x - edges[edge].a.x) / + abs(edges[edge].b.x - edges[edge].a.x); + int inc_y = (edges[edge].b.y - edges[edge].a.y) / + abs(edges[edge].b.y - abs(edges[edge].a.y)); + int distance = abs(edges[edge].b.x - edges[edge].a.x); + vertex_t start = + { + .x = edges[edge].a.x, + .y = edges[edge].a.y + }; + for(int ind = 0; ind <= distance; ind++) + { + grid[start.x][start.y]++; + start.x += inc_x; + start.y += inc_y; + } + + } + } +#ifdef DEBUG + print_grid(grid, MAX_DIM); +#endif + return calc_overlapping_points(grid, MAX_DIM); +} + +int calc_overlapping_points(int _grid[MAX_DIM][MAX_DIM], size_t dimension) +{ + int ret = 0; + for(int i = 0; i < (int)dimension; i++) + { + for(int j = 0; j < (int)dimension; j++) + { + if(_grid[i][j] > 1) + { + ret++; + } + } + } + return ret; +} + +void print_grid(int _grid[MAX_DIM][MAX_DIM], size_t dimension) +{ + printf(" |"); + for(int i = 0; i < (int)dimension; i++) + { + printf("%2d ", i); + } + printf("\n"); + for(int i = 0; i < (int)dimension; i++) + { + printf("%d | ", i); + for(int j = 0; j < (int)dimension; j++) + { + if(_grid[j][i] < 1) + { + printf("%-2s ", "."); + } + else + { + printf("%-2d ", _grid[j][i]); + } + } + printf("\n"); + } +} diff --git a/day5/c/aoc_day5.o b/day5/c/aoc_day5.o new file mode 100644 index 0000000000000000000000000000000000000000..76fc6bfab1ba3f5748d06fc98fe482525bd61cac GIT binary patch literal 18720 zcmcJW30zEH{P%CWt(g$&S2QRUl}fZ&YFclMt<93wY1OLbhZLJ9OPecgZCVsvOY=X|fnOV>#Om~WKyA;jwAOw?OFX0{ zTIqDfeEW2xZEQ7bib|4{pp%NEY17ZqZOCQxF}50&rl?M*pHYXMu`v+(>9N(4VR(v8 zPw@HJ)zvJI+LNXLtfZ5^OR#qrvCrM-N>tFMSECzg(@*T=8$h4dpH8?6yU~1I6c02o zE|TWgaJ4Jwz*g8s`*cMmI`BT+Bx>k%qkPcD_2Tx)O3(=<&;f1wF#1!YOjlPI zTg`%^`ITHzhwQ~2nkMRy#b5ntto{YX@vzUx~G>`Yo;F?ymlOKT&YBvc$4~2qkYRLEDM*;RQO-1fPOr4FX&(J}d^>5=rsx7R7SPq&2f!80FXn1j(-KAY z5*7C8(i^6wD<5fEu4VO(< zXjckq+H2VMHCf!GYZC20X#PX6f`|jtnXu{n>vW({GzwQ=Nb)3vu(s@IqY3+w}dV!p{ zF3p1dG`OE+0?%z)8KAcpVaaKUO8hc&_mL{NHqV*^9OqoeeqmPAou z;l809zrbK$j&DRnScIOQ9;M-rbQCAdkK-K{9qJRw(beU^0~|i6MwtO$a9~Ac=D)rX!Cv9vfua7K@UXzp zs7Q`hxK~6J$3Xl4OlSDF4*TWKxgb7`MY9GogX;v6A>rK;HR|u{WB>p#J!925v>;Z! zS1Wx4&6s$;QiSZ}HsF?*1`g7K>jqDF>A~s>bg8wv0*uB>_fc0u*#V&vgv~lAuV`SU zWS>4$dV2cIemueV>FIX8z;yn}G<&eP(SjzP-~*Uqam1vKt|+yHAFW_9U0w(hQ=HEz zf11HnQ*_=hQ15l64X(F>XJRw4Oi+S^|I34L*?=AYbD7Zs%LW`918|l3lQ&|YBL7Ku z#aA0q<@ddcOh4FN>UVv~jqbj~%MmGTJdbI6!92{+D+T2)L@1GUKNo>N|jMG<*?1ae$HS))BqepZB&(mXTdy ztk<@yxYl}eA$+RxS3Wo~q>&t~>5+)`*k}&U6+wZ4RxLo*<@PAC?Yo!WgIs)sD z36q3R&u$7+`#4ZADwj>QXW!{vubFT#esS`seUoHsU8}~t-Y$$g`PAWx{Lf8QqrXfP zcAh-ua95ITb6|h0+LD=1XXMV5Fy9?x+hkKeWL9yhaBR&}hg~vtD#7bN_pOgR^j7lY zsa^_7zIbh+=Hl%9 zm@T~?+-#VAwf4fSN?)C+{U>WX-POIKvwVi0cj??{YUsMlcLrE2*Hk;+zg2JIo#q$D zt0v!e7~Y3}vcC)4NBiHT4)?qd!+)+mv}fwV*i(mM1_aSO$4qW|`i9c%=GA!_0V5Ba zmw$?zB{6Z;jLnv{&FW8Y7Qa&Yy7Z0h4!w~h9DRzFT{u6~ zx)49(=C^p05wAlHviQNuSz}GP#%YQ5S(Q$M!WJ-6QeqdTGClZ>Cpwo#M{;wbJOQ zdhu)L>BDL*+jmZyG~xPk%T^bSaqp&9a9_UjZ})RhpV9Cr%HdF@uFkf@OEnh`DVKbH z#ftykF5(K2hFVrQWB# zeXjZKXP>_|bBw~qsc+q0yuE&{N>9nz7q&U|Lp? z)w+D-?RR=5O>Qq*qNt={Mi0JkZj|3Mab0G%L?_29EYba3m9+e(nH3g~r6;?Zafj$e zC)|CyJW*CRI%n_V%xt^5 zLo&mI4vv>A`f_H@#Lht)Nv~%%Ioy2}BZx`lT`v0^J3{ld-ul+aDOwSO-&&0rqW7_D z!wLz92ceTWbj?B zapBQ-2MXImOLgC^m^OdtfwBJ@?VIw@+$5;VF5P9A6K z9-aO#2X<0>eo3o&?iqEZ!~WN=~KIN8QZr@?rSLVipDM1zosM75X?>3dH-jI{s zArn`zRlT>5U3jhFKtR@~6}#gs6tC9E-;S{pE{_P&H$U}K;zO_EaSk%Egh1b=MLzqFXK&n_F_zpP*yUd(SOb3IImX{ zavN0Fncnvs?i{G+-{<4V77N|isql`bfMaO-sb zw_Mq9#U_JODk^Jt<|>`upP5q6-`lVJ%l(D--3x;E7f5dFZPMR0dVbhIlk@?yHS!y? zJL9U_O2(Rn3Cu?19dJFcR`YS-!|l@wc^c!IvRu+jPDgLm3$K%ZS-2`lS}%WedXlr{ z8|R37j^_LJe2XsHlBGGW`N`2j`^VL?ji)Wn6}g879~A2AB)uFK_9G}sC2yiTJAQU; zyxuk%nV{P(afGAWkEGAaY;smt!v z_TRSEC}QyYc;Bayg)Ox$yC${{El(Y4c}B1*+#{^&N_NA_5&wo!vB@eQ>0-6)fEOd* z3v3fKYu1fcxUITUk`*SkX_2cz-`lm1v`!q)lyMB`BVYgKYmoB5AC(!UZPNR*GB>5Q zPv7w~Q}Vc%-QIcE)psS0zjgGU?%+!@Y;N7iJ60yyC)3}UzpYbxw)1{V+OiRbQKJlv z%%W`%$~P{1d9r00ovLLrDBW#zSTjtHO^2i0hI7W8i@~53TgJq`9U7B+E>+$eo z=_NrS9_PmA#tj*C?1*KRLqTGB*`p%& zG=G(A^JCeD)!Sn(MoT-6OdAonCs-}4e_2e;56cQUR#bdmZ?$F0i!1W~k<$%n8739h zxNPF4MfKj&0R^7EbJsqYEAMjbSyn&av-cW}y-$4znAx|syttSO6|xS@&z(QHa&@$t z_32VS?bkVz@;?mvQTK7mjHEUT)~M&BMon8(_hfa&Tid(r?UDsIZrEGt^l|sGP*XB8 z*wA2fEh1K~ImbG8tCaKML*qiX=Z>5+c4GN_@?5ojX5)6ru5Wm*YUMoUSm?o1 zcC0lSUrO|!xYr!md~W?k88-*Bty#XuGcQ}Z7DPDft#5SKp?Dc9-u5ME?m=}38UncKI zj?uQZWQ}K!jT~p6U8q_%Z2SIAsh?{v9+8ic{PDbhZ1M8*Wrb;71I=H_sC=GV()B9U zPWRh$qgr9(NRIhWl_`}0A1!{&A35%*^0w2#M}yw|v-H_n)8_YHANs}@6h51O{2ycU zoCS+rBtknL-OiBnzjbR_S$>XctSXG^y_V;>XA+9p+TTgp=dU|?O5-eGt`jVAJzN`Fwgng({T&fjH!Hu@4 z)S)e|FWGVFx=<**CA=!64&=nAc*%||lPei?TSqhV__&d2k*8_v>`(9KO`4TFVce;x zaYOz5mfnipEHiIMf{o!C>%ARwbt*cFR_grgsyzGp&$s%9CyJ%leiCN2XDLz2FZyf! zj$0)o4*VzXS*Oc06=y3vYp?5ESvquacz$1cRf2-k&w7&qeau+_yfsHMGnGzpQgS%7 zR8b#)Z~Y4y)w@b&ZJ7I*4jR65(E3|NKl*mC_nlt!Mt4Uy@@W%9-GPXiq948QhsRIcp{?$Yw_4e{STXggHI&DvPe zI_r^lz$vR=vemWwJ*TJYY44lYta*ACUnND~NNV@=A!RRnS=P%sv?*D;?wX-|KW=D4 z^oFAIFO3a23rsaO@q*TuIoTY^9WC=cKK^UPRJk32tSyoY_RQ>c{+fF1^|g!7X1e*c z4w7@+KyNjhd1PSUV|`B=+{n7U&Ft*BAqx}^%k{DIPjtMi?wrkYd2BhC}vD!y{h78(NP4OO03fACs!!~Krja?PW~7q;K- zJNQlfh<8(+tjpee_d7r7E46iJ#mdm<{M4_rbC$m-%V|FUG4H~`eIJG#U-aO8#g(y1 zUj|iimp;`Dx%_X2Z1V}WQgt(H?u@<43%oWsINokF?0@6h@Ug3IZpyi#IYxQjEh{!x z-qJjEenQ=W+qIwpN?yw9#SZkVO&;_G-*eoUpk=Oa8H2Lu}TZ z=F4C1?b~Nl(eLr{x_*v=_^q`UdcC8kx7vOj^|9$*+}Gn$gT7AjR0QUisM=`w9L(ABb>o~b zgXS#_Ia7S1Z~j|J_s0{Aj-UEm^0x1k=R@YKH|`ibUDZ2au z!y`sinfkat+%+z=!miQaN7f#N zYrRhLj_4CwWil^kV37XJvPIW6?F&C!o_BuQF=wr5K7-EPX3etO%h^=BD#&GPYTe-` zhmif|g`FLyvC5@hm*Q%s#QifNQg1D5o2t#oZ=?528k)DeeS2r?iF?Iw;*5hGT;$&0 zGD#f2_8*zIJGG1KTo2HS+RmG^wew$foiBY|xaZ~>-n%zTTe8!eo^4RqJG1s?%u@Hx z8i_l#@9i?B-)9s}Z5y)MCE0UFNxiZTck$N)d(CQiM|1jIx!C#rYv&l=l#HO$NwbW@ zPA(hIc{+4S#q#F+T9z88r~;owXC98-R*fr^D9gJvZRJtkK^Cgf27v* z!Fi0=%yDk>ialJGazFnyuUs_2f984T+N*tv^cAdIt!~b*c)^{N%jsa}Jl)qgm1nt; z{?Tsx#OnI?gG{Lbux8DY{0bs~sQ-yz%`&n54@P0S-N10t)TgfQ4odx=mA{WliDvI_ z25VB3?0=z%%k{u}_rUx1z|l)J;;58pR0#;GQq+L|LJ`MV_4i>ZYS7;R)Wi{GDDVjO zSLrXR$xx!#sEi|n5vLgp?uv6&hO!{|2vJ>zG9$Pq;+6y#y_@f5{0)&FrZ%$}iz+gd zIL@CVlSI4!oi8rpzfV|XVvG1(RL2|f?V}6@UeEtkW`WuOM*fJ-QNZSb4?G9R5(Yqb z{NEmUD&Ww+0_w2noCYjI#Q)@*=$r*?Gx&7pe|r!7NDusU5By>eys!s;4RF~0Y`FM= zg4cpturKNtx~~G&v^J}0{ml0`Hc5~Uo#j`9(KH$mRz34Oj}z=8z&DZt|iaLg9`BtiS&)4 zJUk+!y!b&L{D2@2Kd-=GY-UJ>cm;-1e((zuAPS5OBfgP+uxM z0(_m}M}aR_A}QY`fl(CSE12&Q_U8)^5AhcsVxfnBM4%58^8>sh#Opp73ej~0o>TB! zG+26}Jb=SFl)_p>c<1@(e$Eh(rBI2Df48;j0d+0LsBJzN#B{%H^T&K|fTS~B1`Fxz9<1IJ%z!SNi( zh-(4%VSya3#<)E;5P|~zbHE34F!iDW^>CHOe7_ir^urk({zL;7=w}4@VEr8kL4khY zT8()XgrJb~3%?VE1@eEu2kXB;2nzHw1bi_61tBP;pT6)yi}*0G#rgq=LqG5vGR##N zdgeUZGxW*~{S1a)oxxogT!X<~8Ju~(^a2`K;Jp1=MaAa==J4t~1=+(~f(7c~wNiY& z5sxjC!+lub7{UVe@akU*E1--LZ$upD3`FAVomda!=ApQT3_avnXF>2aNN-Q@wQ#^e znI+zc;zB?5NI!?*S*Y$#@EyocFu`%2Eh0D`(>Q|vLVg4U$N9H|;2)9x0Kxqbhu0}s z;8?cIq`g2pGA;Ax1b z5j+U-Z3It3{VM2z-ypax^3&7<|4Q%!s9&Q|9Nb@g-(yJdI^=&E!4ams369$rP4F<( zj&%e#MfE&_#~}S##9^}`Qb6|^w+X!h>eoXChu0?Y^A$za5F9@lK4b8{KtB?EU}YB0njJ}^MKEnT*Uhmd@tfd z5XXK_pmCc(=(&iS5qu)z7KER8#61Z8YsC2k$LmNS;pZdLuOjpZQC_Ygcn;zl2tT6{ z-^IR0*Ed`}X54&vt+9Qwice?kU_eo~SC8o?6~zscax&lfZ=l?)F3 zR3iN&f|ny+%iz#YAR4zf3=aLMp?VX+hoX85gTuV_03TR>F*x*t^FR{aVB>rAY zIIlWTzYGbz7t&84xGUo33=Z1^-&?^#GdOGy&JP~Jmm@#U3=aLQfKEVhXK?686V<&5 zu7c_d(H8g12K8$r!FQv4yTb4T=cNwmO9?$}3oLbn9U9PUb^`WS+LMsf8K$K!bd*uXNA(5Iog zBf*nUeID9kKk;w}lqH1T3w8pOSc1DEo=Etah5Y0Y`fo_TpWv;CA0hnU=duz)e+dpa zD7OfH7V#>=&keDh`bOv%!ASt6li)#!%c6Ecw{TY-ia}vBI5f>f`hf&ri?}L-!(IG* zq`~0Ok1T5kI$oQ28Zq3 zhuX7`;5!h{WpEhxg2+2q?-?BWxr_Aq1TRIris0>tKPLDm#OoLw#*IaJ_#Sash5fY$ zA6O(&zCaF#1}!rbo8V9ji!y^lKe-|b{1N;T;vocojCdl0qa{ytWCMdk|M-6RB*7(7 zze*S!`oZ~7!Qjvj8|hmJj^9&AqdbK&=m&p)!eVgf#{u~n$>4C@@cS8E28a6jNN+=M z55xl)9FBc98jK{wVRK=gD8ZN9prjIf0OA=0H$!|A!Hp2#N$>@T=MdZl@xu%bQ)z>! zH6WiE9JVt7>GKJ`7;z!uu=}vT)u_K!gkFIq4)B=Z{Sbf7;Ba>^8qe1Rzk_%a!SVC& z2ZGNRhoxExUXD(T_8$08g5&oc_`(P05lRLjKSNL)JP!EzdUg*yo#6QStC-;UIjfc6 z__=R08js&`QG3dJ;P^cd*5mt@!^jSE{2XD4)>q8&bHN*e$UszTxr& z*L*tJPw#+|Em~!rk`pChc-CwJA&iuBc&I)G$hK) z8*HN@#M=P87vUT1r5EK3{t;Bq$1BQ<(({gtr1T=fUlGts`6w|9i^zkeML4&w(0MuMM5h}|GvgjXo|AJV^AM5zCNg`yu> zAm^ZUI1a?%XB(i-4+{zL4F$ak4U6*C1HZ!475$n6)%`=G^}-{-FE}EimZD(30Umx4 zULn3{?EYUi9AFIRoVgZ4e-`i$DEPgtxb|nA#B~+0125SY7@#eOBi=ayor3~(aJLt% zfC9f;hXt+&kfXGONK{sm4MH5bLpAa5PoU5LTYLB(8~ViS33iO*&%gj}aeTbB0K7Z< zYSezbzF{}G|JdFM*^}M%ME4K)`2pMG>lCif1Uuc0f5mXIf;s-sC615B-ybkhTkrv~ z86`yZE9ia<;otVS?hSUjiyuEytPl`9L8Fo(Zafaf(a%v3$H z*T+J%#qGx!-j6_^q`ksFVg*eEB<+WQAl{^wr>BifR#We*Y!9L-hwoy0c$mAvPIB7!XzJe*koPdY1qI literal 0 HcmV?d00001 diff --git a/day5/input.txt b/day5/input.txt new file mode 100644 index 0000000..d564cf1 --- /dev/null +++ b/day5/input.txt @@ -0,0 +1,500 @@ +432,708 -> 432,160 +579,594 -> 579,448 +351,791 -> 351,595 +520,836 -> 564,880 +30,443 -> 666,443 +868,157 -> 563,157 +112,186 -> 853,927 +493,387 -> 456,424 +846,165 -> 160,165 +811,805 -> 292,805 +454,333 -> 885,333 +32,407 -> 32,933 +907,590 -> 368,51 +117,904 -> 375,904 +913,145 -> 913,798 +245,402 -> 245,755 +855,910 -> 427,482 +677,252 -> 189,252 +65,30 -> 956,921 +808,114 -> 808,76 +62,946 -> 92,946 +478,756 -> 581,756 +387,812 -> 495,812 +197,606 -> 413,390 +173,640 -> 515,640 +456,26 -> 456,345 +888,69 -> 888,436 +157,959 -> 824,959 +832,519 -> 43,519 +891,258 -> 660,258 +929,176 -> 815,176 +309,893 -> 309,831 +841,825 -> 914,825 +168,260 -> 168,389 +264,969 -> 763,969 +527,553 -> 118,962 +251,413 -> 228,413 +163,759 -> 550,759 +776,650 -> 914,650 +178,99 -> 887,808 +368,92 -> 646,92 +705,583 -> 394,583 +547,278 -> 597,328 +24,941 -> 264,941 +599,588 -> 597,588 +308,668 -> 308,369 +462,335 -> 462,251 +109,343 -> 594,343 +928,980 -> 727,980 +955,955 -> 100,100 +655,716 -> 688,716 +797,64 -> 354,64 +100,633 -> 100,39 +639,757 -> 630,757 +22,962 -> 878,106 +236,687 -> 130,687 +117,881 -> 404,881 +590,334 -> 590,984 +864,888 -> 864,126 +648,164 -> 396,164 +749,446 -> 191,446 +41,973 -> 955,59 +247,725 -> 193,725 +736,136 -> 736,545 +919,33 -> 122,830 +66,986 -> 735,317 +262,989 -> 262,440 +25,86 -> 59,86 +329,151 -> 953,151 +387,105 -> 310,105 +216,197 -> 307,106 +568,574 -> 681,574 +982,801 -> 982,853 +965,606 -> 634,606 +901,854 -> 72,25 +875,278 -> 569,584 +500,240 -> 355,240 +790,448 -> 438,96 +922,863 -> 559,863 +772,727 -> 129,84 +25,11 -> 897,883 +568,609 -> 318,859 +876,875 -> 453,452 +181,471 -> 544,834 +323,377 -> 655,377 +418,20 -> 418,963 +449,392 -> 401,440 +601,958 -> 296,653 +527,343 -> 519,343 +763,328 -> 290,328 +889,262 -> 499,262 +390,478 -> 879,478 +298,764 -> 25,764 +753,86 -> 40,799 +311,350 -> 353,350 +132,817 -> 504,817 +34,121 -> 837,924 +535,27 -> 535,539 +932,257 -> 932,983 +44,833 -> 596,833 +141,34 -> 910,803 +781,61 -> 453,389 +929,28 -> 449,508 +679,958 -> 679,618 +894,273 -> 894,778 +735,697 -> 735,395 +266,693 -> 561,988 +402,586 -> 402,983 +141,459 -> 368,459 +721,723 -> 721,914 +845,69 -> 871,95 +196,370 -> 728,902 +110,725 -> 110,391 +901,670 -> 664,433 +542,601 -> 244,899 +365,386 -> 365,655 +647,738 -> 197,738 +292,250 -> 292,29 +441,603 -> 571,603 +847,146 -> 847,941 +629,282 -> 629,700 +132,44 -> 805,44 +972,31 -> 17,986 +437,303 -> 186,303 +982,416 -> 245,416 +498,258 -> 752,258 +300,815 -> 228,743 +10,69 -> 925,984 +26,275 -> 227,275 +969,358 -> 969,833 +19,593 -> 136,593 +436,451 -> 436,364 +181,847 -> 199,865 +559,409 -> 902,409 +664,570 -> 749,485 +170,176 -> 170,254 +469,908 -> 635,742 +94,496 -> 341,743 +142,913 -> 142,987 +968,143 -> 552,559 +577,847 -> 629,847 +888,354 -> 214,354 +756,769 -> 756,835 +117,696 -> 756,696 +966,297 -> 699,297 +187,800 -> 504,800 +467,739 -> 264,942 +952,83 -> 85,950 +167,478 -> 167,480 +846,257 -> 814,225 +427,787 -> 867,787 +287,886 -> 287,256 +538,594 -> 838,594 +987,989 -> 11,13 +205,825 -> 876,154 +433,437 -> 29,437 +954,943 -> 105,94 +53,143 -> 615,143 +116,438 -> 116,136 +31,48 -> 826,843 +522,637 -> 522,976 +201,322 -> 146,322 +873,214 -> 873,564 +719,460 -> 719,295 +879,886 -> 12,19 +688,723 -> 688,677 +769,779 -> 962,586 +109,887 -> 940,56 +359,57 -> 147,57 +809,857 -> 22,857 +239,860 -> 239,523 +329,907 -> 67,907 +796,165 -> 979,348 +661,385 -> 661,606 +638,685 -> 53,100 +727,787 -> 883,943 +324,414 -> 229,414 +323,363 -> 323,357 +201,440 -> 201,316 +778,54 -> 68,764 +528,151 -> 528,549 +909,970 -> 20,81 +978,12 -> 17,973 +944,574 -> 944,499 +625,85 -> 452,258 +708,618 -> 148,618 +40,957 -> 40,31 +113,288 -> 113,424 +262,109 -> 262,982 +90,359 -> 319,359 +635,21 -> 635,433 +337,310 -> 918,891 +512,701 -> 100,289 +830,946 -> 60,176 +233,959 -> 257,959 +460,702 -> 156,702 +587,96 -> 508,17 +954,552 -> 906,552 +359,268 -> 324,268 +571,416 -> 422,416 +147,684 -> 379,684 +817,274 -> 631,88 +722,85 -> 527,85 +845,457 -> 288,457 +50,687 -> 282,919 +368,310 -> 704,310 +156,20 -> 920,784 +888,89 -> 347,89 +173,27 -> 173,984 +659,450 -> 507,298 +144,857 -> 671,857 +575,976 -> 455,856 +452,531 -> 452,67 +858,506 -> 858,205 +903,486 -> 610,193 +936,165 -> 498,165 +864,336 -> 875,336 +113,15 -> 113,492 +153,892 -> 153,20 +65,401 -> 669,401 +261,743 -> 261,693 +511,401 -> 241,401 +272,683 -> 875,683 +630,871 -> 630,868 +249,68 -> 249,500 +242,532 -> 111,532 +140,125 -> 220,125 +878,457 -> 435,457 +18,723 -> 693,48 +853,234 -> 853,953 +285,507 -> 155,507 +139,873 -> 139,339 +965,327 -> 965,696 +68,616 -> 68,484 +886,659 -> 701,659 +162,836 -> 886,112 +119,281 -> 119,776 +445,706 -> 430,706 +420,705 -> 420,263 +941,764 -> 941,442 +910,932 -> 910,289 +24,11 -> 249,11 +476,296 -> 564,296 +960,822 -> 450,312 +802,852 -> 272,852 +527,127 -> 527,408 +928,132 -> 382,678 +102,297 -> 109,297 +308,586 -> 308,894 +35,913 -> 99,977 +950,392 -> 950,405 +96,531 -> 892,531 +700,451 -> 291,42 +219,197 -> 219,201 +863,861 -> 267,265 +104,55 -> 944,895 +309,909 -> 165,909 +732,458 -> 790,458 +877,959 -> 45,959 +30,902 -> 907,25 +314,36 -> 974,36 +665,580 -> 665,882 +526,288 -> 865,288 +312,166 -> 312,464 +556,380 -> 820,644 +870,959 -> 602,959 +273,69 -> 726,69 +161,885 -> 882,164 +251,332 -> 251,989 +853,962 -> 348,962 +523,47 -> 577,47 +559,503 -> 128,934 +625,681 -> 477,533 +179,352 -> 800,973 +609,847 -> 609,218 +249,521 -> 249,930 +237,903 -> 299,903 +59,373 -> 59,127 +788,558 -> 377,147 +242,792 -> 421,792 +449,874 -> 449,901 +821,263 -> 964,263 +162,121 -> 561,520 +31,35 -> 600,604 +622,649 -> 622,97 +33,967 -> 985,15 +877,745 -> 56,745 +688,688 -> 688,385 +227,137 -> 728,638 +839,54 -> 593,54 +662,36 -> 88,610 +845,500 -> 163,500 +131,579 -> 131,592 +632,28 -> 632,387 +335,79 -> 979,79 +33,95 -> 302,95 +981,13 -> 28,966 +737,165 -> 170,732 +869,751 -> 14,751 +420,367 -> 420,949 +623,618 -> 558,553 +964,34 -> 15,983 +567,75 -> 553,75 +674,835 -> 674,886 +374,727 -> 199,552 +880,953 -> 579,953 +320,664 -> 777,207 +290,198 -> 290,689 +405,778 -> 405,253 +801,164 -> 801,766 +722,572 -> 722,721 +704,890 -> 905,890 +80,909 -> 974,909 +50,643 -> 371,964 +903,810 -> 42,810 +451,102 -> 13,102 +944,151 -> 337,758 +781,514 -> 417,514 +875,828 -> 77,30 +551,210 -> 728,210 +280,447 -> 484,447 +934,926 -> 144,136 +341,182 -> 485,182 +611,748 -> 321,458 +135,483 -> 22,483 +590,577 -> 590,307 +962,48 -> 962,95 +285,770 -> 395,880 +740,804 -> 362,426 +942,72 -> 530,484 +750,893 -> 750,725 +707,916 -> 769,978 +424,344 -> 47,344 +267,891 -> 267,955 +718,112 -> 367,463 +917,148 -> 80,985 +679,682 -> 51,682 +72,641 -> 72,729 +717,760 -> 153,196 +600,341 -> 600,312 +530,258 -> 747,258 +703,434 -> 703,266 +381,291 -> 34,291 +889,645 -> 640,645 +488,877 -> 958,407 +263,375 -> 43,155 +865,33 -> 408,33 +373,337 -> 412,337 +584,15 -> 76,15 +431,447 -> 263,447 +176,644 -> 176,875 +603,487 -> 257,487 +857,45 -> 144,758 +833,108 -> 64,877 +23,173 -> 23,156 +175,434 -> 330,434 +988,22 -> 28,982 +26,793 -> 26,680 +164,221 -> 901,958 +832,672 -> 250,90 +805,537 -> 805,600 +393,302 -> 871,302 +633,709 -> 171,247 +833,118 -> 990,118 +806,943 -> 806,447 +348,345 -> 967,964 +825,747 -> 399,321 +976,339 -> 371,339 +857,26 -> 857,737 +348,474 -> 715,474 +260,678 -> 820,678 +735,301 -> 347,689 +150,591 -> 150,838 +538,285 -> 19,804 +845,904 -> 60,119 +440,963 -> 440,586 +500,72 -> 500,819 +772,742 -> 772,828 +737,452 -> 113,452 +238,818 -> 941,115 +123,343 -> 123,639 +927,370 -> 635,78 +373,745 -> 235,745 +140,77 -> 140,262 +517,375 -> 178,714 +72,423 -> 821,423 +437,251 -> 210,251 +170,51 -> 941,822 +135,467 -> 515,467 +886,920 -> 89,123 +374,302 -> 550,478 +289,592 -> 289,557 +79,112 -> 944,977 +303,831 -> 419,831 +369,32 -> 348,53 +404,13 -> 890,499 +377,781 -> 260,781 +288,769 -> 981,76 +924,188 -> 628,188 +399,313 -> 959,313 +970,52 -> 196,826 +623,984 -> 169,984 +572,644 -> 749,644 +426,533 -> 343,533 +94,155 -> 721,782 +328,268 -> 544,268 +878,124 -> 89,913 +966,170 -> 610,526 +108,841 -> 766,183 +115,808 -> 688,235 +45,835 -> 806,74 +152,932 -> 152,938 +229,814 -> 634,409 +649,647 -> 649,850 +437,904 -> 321,904 +115,116 -> 784,785 +19,657 -> 19,415 +831,833 -> 616,833 +88,954 -> 970,72 +11,981 -> 707,285 +261,255 -> 909,903 +883,875 -> 97,89 +872,21 -> 872,820 +34,229 -> 34,690 +10,10 -> 989,989 +986,178 -> 986,963 +413,933 -> 413,907 +897,756 -> 897,88 +771,408 -> 771,468 +327,198 -> 327,421 +938,900 -> 938,721 +533,629 -> 533,661 +177,701 -> 489,389 +601,839 -> 40,278 +969,38 -> 70,937 +797,698 -> 140,41 +794,107 -> 156,745 +730,410 -> 730,727 +115,14 -> 358,14 +608,382 -> 608,959 +457,788 -> 393,788 +592,729 -> 363,500 +742,964 -> 87,309 +230,790 -> 433,587 +302,878 -> 725,455 +353,722 -> 353,512 +219,856 -> 824,856 +92,44 -> 938,890 +547,179 -> 458,90 +953,368 -> 193,368 +767,26 -> 932,26 +883,96 -> 883,311 +679,136 -> 679,656 +32,117 -> 393,478 +619,704 -> 260,704 +101,96 -> 985,980 +169,61 -> 800,692 +545,902 -> 306,902 +948,16 -> 52,912 +546,691 -> 546,887 +611,294 -> 611,324 +942,89 -> 942,688 +34,838 -> 34,734 +68,98 -> 68,876 +485,73 -> 485,779 +573,976 -> 573,364 +331,233 -> 729,631 +616,116 -> 616,432 +909,947 -> 904,947 +901,139 -> 864,102 +289,511 -> 289,371 +269,845 -> 269,597 +934,86 -> 80,940 +18,883 -> 790,111 +154,436 -> 154,464 +628,901 -> 96,901 +573,154 -> 159,154 +118,475 -> 118,339 +12,12 -> 989,989 +44,760 -> 512,760 +45,859 -> 888,16 +103,826 -> 827,102 +41,22 -> 945,926 +769,339 -> 188,339 +136,658 -> 748,46 +297,37 -> 297,160 +261,575 -> 293,543 +910,724 -> 910,634 +30,31 -> 962,963 +747,285 -> 122,910 +451,976 -> 32,976 +558,524 -> 165,524 +631,395 -> 631,48 +584,382 -> 874,382 +246,838 -> 246,980 +750,460 -> 577,460 +736,747 -> 560,747 +604,889 -> 604,150 +206,819 -> 18,819 +989,974 -> 116,101 diff --git a/day5/input_test.txt b/day5/input_test.txt new file mode 100644 index 0000000..b258f68 --- /dev/null +++ b/day5/input_test.txt @@ -0,0 +1,10 @@ +0,9 -> 5,9 +8,0 -> 0,8 +9,4 -> 3,4 +2,2 -> 2,1 +7,0 -> 7,4 +6,4 -> 2,0 +0,9 -> 2,9 +3,4 -> 1,4 +0,0 -> 8,8 +5,5 -> 8,2