From 7b5da4d3949adcab03528c84a6963767ae87049f Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Sat, 5 Dec 2020 22:29:12 -0600 Subject: [PATCH] added day 4 --- day4.onyx | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ out.wasm | Bin 8564 -> 8691 bytes 2 files changed, 48 insertions(+) create mode 100644 day4.onyx diff --git a/day4.onyx b/day4.onyx new file mode 100644 index 0000000..415f321 --- /dev/null +++ b/day4.onyx @@ -0,0 +1,48 @@ +#include_file "core/std/wasi" + +use package core +use package core_file + +// Returns the number of fields +process_passport :: proc (contents: ^string) -> u32 { + field_count := 0; + + while true { + line: string; + string_read_line(contents, ^line); + if line.count == 0 do break; + + fields := string_split(line, #char " "); + defer cfree(fields.data); + + for field: fields { + data := string_split(field, #char ":"); + defer cfree(data.data); + printf("Field: %s\n", data[0]); + + if !string_equal(data[0], "cid") { + field_count += 1; + } + } + } + + return field_count; +} + +// This does not include part 2 because it is gross and +// not worth the effort to implement it. +main :: proc (args: [] cstring) { + contents := file_get_contents("input/day4.txt"); + contents_data := contents.data; + defer cfree(contents_data); + + valid_passports := 0; + while true { + if contents.count == 0 do break; + + field_count := process_passport(^contents); + if field_count == 7 do valid_passports += 1; + } + + printf("Valid passports: %i\n", valid_passports); +} diff --git a/out.wasm b/out.wasm index ca2766ae186e6696fbe6adaaf9c8bf56b1feb356..d36f3836a169de95f8d29e7433255bb526d42572 100644 GIT binary patch delta 3120 zcmai0U2I%O6`q;xV*7AZ74+x|_H9S;8i0|CJca1|3 zyVBe zFLgKM<@L4ocE8rx_eyVr@mn8NIWu49)z~^{ z!Glb1V`Gci2l=_3cK_wID?1z8%&}Ul%wv*yZa(jNuFIvzW#04iLC)pO#Xsj_L3oT8 zk-%JOBn$*E%Bs;L74yOLk++u}#mztJ z%k$PO(_(9m)ifunGsi-av6MI}d?n^skp{CldWSEVk+G}hQe(lp!y`-I;pUCT)2Hrm z2tH%CFh45nrl-V`V9L{MN!Z{G*h+MUQ&Uo7aiX=Q!*6NcX*w;Y2=-F9ev{Nn(=~ zn^sO`JlTO;dXL;F)55&@lYNNq8OK?y%rFJOkgCDQR}6cH<0ju&F@N)mFP=$_kQ?LV z#%7Su!BX!dsLJ)owNJ>c%c4NreD=foyS@AyA)j&C2}-Q z_nT$=``MX1BEud8gO4vxDV;#SgMp5I7!iT^4_ZtO>PbzFAgPGcL_iP~p#)eFWfTsC z<1$hY&zVnxE%R|OX1-FWCNi%%lgdJ3{#ELl)1^nuZ>KBf zwdo_~vzZBRd{E+sk4&1^M~+m_aeGj=EUVij+*z|$KN&kHm!kYYa7i*2kR~uATZ6B8 zB%^#Y7x`2eIHSJGpT`+R^Poyn0+j^p0HzJ(d?h=PPsnLM;dY0K&GPNQGTLl}9-dl{ z|DSnJ`I^_FLNmaos-S``>cL&*bfO@_R27iaj9?_(i9Cql;~sEId9-CM$~DP-l~X=h zdTwCKk1$s`GL;fYLJ~x(GT3sUg~Hv69-u*h6qRLODjzNkkC>49w)siCYS?^hY4V$n_6V1jQzsI31M(WucO9I{E3HsnjXm|s3{nGP?!BWAVQFn3ET&cuh0208cN zH&kZ3K5(3_404(7Wt`M>Rq;|58LP?uU}H=Fh+ZfPHw>Ec9?2$fJWd3XVtzmISZV0P z0Az5(>b2&On>}abc`jnwn6TiTuxvgYSv8+q@2;PP%hY9$e6k}X~w?e6Bf z+G+QCJ6Eptd&}z3W}fLuX+M$_S?GVe&-Ain7=9d`_5aDF{ps5G*uMdR3KSIp delta 2934 zcma)8U2I%O6`nKq?%lgPyWVSW{I`z1bJu@K)i^1{fjA`b)QMBt;#NXIL_)F`;v`;g z6USaR0ad=Oh!77vU?$}Si3eJd0ud^zc&hpX5A>-LLTV|zAS6nuM8!ivio^@wnceHy z?F(M{-kCYyob%23oBQ$HzaLISed8$-LeRH*miz>Nlq^a2^ph?3CSJ-wvc-cOW0I}5 z$ZZfy9#$aoc~v-QXQNz|9W#d3qfnS*%V|Ksh^}hL<2GH#gu@#w9;J0j@IJk<(8oB?~YVH0b&c^XkOb` z7T)$7Ly5On1xwe~m+KdWzgLi3tGBK!URztfDl*=gIaMm;v$=dp<-J@^DOFO+Qw1Ul zNKroT5s7?O%b?o~hnzNfDXHR@vQYIM{H8Q#}2Gpo9AqLS29;}XuJFzsksOBG#LgV3U z34zau<8~o@2nL@GXDGCw1ip!dfi@kRKJah{`%svVR-;%|tIz!W4)p;DOE2v}%x-m}evG+s9-cvY*M0({20J z?DQ*-NKHfgu}kw2a582iV3j%0F=_j9HG87?wZ11YHDVq#rS{TeJ!YS*j$H2Q5Mr8! z7~)4|1J?Y1NSNCMqLl8L>YytOUe%&;NC=b1uBf8a{x91 zsq=i;+c;&x5re(kY{iA-i2X1a8aC-=pt`#sAP*`@OCQXvSVCRqeZ7m#Jn?l@7Z3 zcWB=JtMod>_LtFX_K)3VyVZSxw0*DpKK{JD(KG1xYj4bczdUFkFHhS4>VEr9fBXHj z@?^9?67k!~+7bKHq0>poIYg@^^^Qj&XRUNuYd#Q$1LnMRjt4jbqyc9P9!T0ah_gD- zS!6*v5L!YWdsX~05$68=tTl|Caw4Xt+?MH)yblRGss-39lVp?ge zy=4E{H$a!=uKl=o#;*2`7Snu>5y4ybN4;ORxq&65 zYh&Q&?pd`*2cNS)u2eC5y)t)x$BYNPNK>KSqjsMZCgMU-<|V3eH{+J(qdmnQ;^ncc z{B$5bfw6y4V@U>Vxxy+2=f?g|m1K<00+oEI-IW@nskwgX>Xf^c(-L(f6IhR-O6=D> zjwdycPTp!X9#ymeb<_;R27W~ybo6TK-f>(-6*{3nmnhkuq4i|v{Oo2I$>WFxhtb4l zhg*s&p=+C>;iEauJL|4nI`c4XBI81ZQ|-21QXfhgBytM{>pSOaVTXsOX#ADOhaVvO zR^e1I;jRF?UG1NGkd1J()tFnP-SV)1YHHNq1}*RJ%%W7a