From 0dffb33f3bfb1ed121861aeee41b8d99bc4ce224 Mon Sep 17 00:00:00 2001 From: Tobias Berger Date: Fri, 1 Dec 2023 13:27:51 +0100 Subject: [PATCH] Rust Day 1 Part 1 --- rust/Cargo.lock | 2 +- rust/Cargo.toml | 6 +- rust/src/day01/input.txt | 1000 +++++++++++++++++++++++++++++++ rust/src/day01/main.rs | 11 + rust/src/day01/part_1.rs | 29 + rust/src/day01/part_2.rs | 24 + rust/src/day01/sample_input.txt | 4 + 7 files changed, 1074 insertions(+), 2 deletions(-) create mode 100644 rust/src/day01/input.txt create mode 100644 rust/src/day01/main.rs create mode 100644 rust/src/day01/part_1.rs create mode 100644 rust/src/day01/part_2.rs create mode 100644 rust/src/day01/sample_input.txt diff --git a/rust/Cargo.lock b/rust/Cargo.lock index cc9f95d..8efa4c2 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -4,4 +4,4 @@ version = 3 [[package]] name = "advent-of-code" -version = "23.0.0" +version = "23.1.1" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 4fe13f5..d8f3f1b 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "advent-of-code" -version = "23.0.0" +version = "23.1.1" [profile.release] strip = "symbols" @@ -22,3 +22,7 @@ name = "template" # day00 for alphabetic sorting path = "src/day00/main.rs" test = false + +[[bin]] +name = "day01" +path = "src/day01/main.rs" diff --git a/rust/src/day01/input.txt b/rust/src/day01/input.txt new file mode 100644 index 0000000..d92a1d1 --- /dev/null +++ b/rust/src/day01/input.txt @@ -0,0 +1,1000 @@ +7jlncfksix7rjgrpglmn9 +vcgkgxninerqjltdbhqzzpd4nine23 +fx3 +8nrbjbpjpnineseven +7qlfhcsnxn7fpfhjcgr6eightsevenjlpchjtzpztwo +28rzgskgk94ninefive +zdpxcql1eight5 +8two5six37 +9khfphjl71trppsrtwo +lxthkgbbf2jdcssfiveqksvbqvm8four4 +seven9tjcgztctxzzttct +onetljcfh9fivesvgcqnklz9four +4mptgcnzmvvsevenzmjjzhndzdvxmz59bm +1hrqthmr +7eightqmfmsn +jkgdnpzjkzzceighttklsfiveqxgsvxdq4 +hdk28lqhhttjz6one2 +2five524 +363mtk +qlmtpch9eightlzddxs7one +one6five1hxphtl687rllvb +31gdnsxtpnn +sqvbcqlnjhk135 +eightgcdszrsghmmfsevendr2844 +eightthreecdpccfj7 +ljfgt9kvnine175kpnrbttktktf +zjfeightfive9nine44seven4 +sixshbrtr4nmjr +3two54 +26sixbhmmgdcl +drxfnbsdzf3gnxbtmmggvkxrsevenbbzdfxnrdnkfivefive +two8591mrvchg4 +3jjhfzlnklpvvfcnsjbdmgvlfkeight2snxrkzzsx +ztwo79onesix56seven +threeeightrhlxptmtwofivenfourthree3 +fbhcqcttgxlrstcqeight4dbfjp +prsevenfournineglccpgssix7 +hzprzdvbsxzllgvttworstxtwodstxbtjnzm6 +99sevenfive +fdvnvc2 +vmpnpqg32llcxpbzcxqvseven +dc9fgvrvsqqhlj2nq97three +four77twothreeonenine9 +3kfkfour +xfg58six8cjtvmrgvsq5l +gmfxvhftld2hbmmprpppzchcqmxninethreethree3mmplrvbtkf +3fourqndl6 +rj6ninenzkbktfqsc2 +9konehdmllc +mneightzzqvdm14 +8oneseventlrsrzflccrbv +9vvvgqdkrckjlzcfsbdgrqrhhtbb7fnhcxzmk9nine7 +825ngddfhpfrsl6 +mc6tjxxll9seven +fxbgccqmmh2 +five7three4vmxjlqcnc3 +9mninehkmlpcxqnfkqfbg6six3 +3onefourrv1ninesixfour8 +fourtwosdtz817fivevjvlzr +seventhvxk1fournqqqfjrvdvbpkvd +v733rklzvnslkonefive6zbvq +178ncllbfkkh4eightwoq +glbxfjhskzbseven6mjzlxccfive3 +fptwoneonefivefive2ztxpndjdq2 +lxzhsgqkx5mjxtrmbkdtfeightsrchzmq6 +1nngc2338ninedjkvszdmnjrl +five6six7 +bcpxbcbssbtmdfninefivesevendtm9eighthxtvxb +mzdttqmfpssevensixeight3twoone4 +rrtzlhkgrgtmrvlcthreeonefour5 +75threeeight4 +3ttcjsdrj6one91t +3twofgdpfqxxp +seven3gjslxpltpbonemt +82jcvqkrgzkx8three8rmszgdj4 +ctwone41fnjksbxb1mxxzznsvg35fivesix +four7bzfeight3one +heightwo24cxs +fdtwone8sevenfour37 +1sevenmdmlrgmqnnth1mrone +7nqxzdrblffcdm22six +5ttpzlv +zhqjlfive3 +jvzpgppblkb6 +nine77lmfour +kqnvgtkgphxcxsixfoursix2 +pjjdlnineltbcknfqvhj8tworbkqhdcp +nine65fiveeightjmeight +j1sptkfhsczt +4czpqqglpc41bzkss1 +qd28j +three1fourfourm +four5seven4twodvmzzdtn +zj4 +dzzrdkjjdxspfrjsonefive8brrzlrjvzfour +zrjzfxxddn66 +fourrnsphsdzmv9xznt6seven +56eightcbhkmjfourone +fivejzlbvqzb3sixsix +fiveghfclksgqffdpb7 +cmmplbcnml36threetrxnhrrdonelmspsbhfd9twonenn +ccxrlmzrreightone9three9 +zg6four1eight +1ngv +bfhptfjzlgkxtftwo7gthree +txrpbzgjzg272three9jlstdb8 +3seven6twofxvxdlcqj33 +six3eightjrdxgkrkm5five +one67one3 +gnfhhkffqfctxmvznmftwo34gjsrpxlv43 +five6zjdjpptnthreefour7sevenqfjlpshg +onesevenninesvnnrvxxeightrdbvsbdnzgtmlmf1 +2six8seven +3eightjrpqdrtwoxjvmgzpbffjnfdps9 +tptlcldftc3 +lcpqlbjfgmhkjpkhc4eight9ninesixsixseven +eightxjfqqtxnsbsnrdxdjv8six79 +tvkthbbrr8five +seven35threerrkdqjgps58two +5dln1rqqgdjlcmmrvm2pmhvhcxhfsbxkfqngp5 +sixnpvbq36514one +mxdvxfgdfzmkjcrtl2 +onejv7lxmbrbzjsthreesevenninesm +threehbhnm8nine +bvhgqz6 +9two89sixfxjz37 +8xninepvggctk85fivefkj +8sixdjndzzzrkk +five61oneightr +cmthreesixeight7jlvdvmdjfzbv3 +9two1onefour1clxjonetwo +9sixtzphqltmeightlbrhjone1ktrvjldff6 +five68eightfourqpfcxftzlxrhgdcvpd +nxvdtfkltwozzl72fourhzxtqjf1 +91fiveeightthree65twoneh +3eight6ninexqqgxzxfgmsixseveneightfqk +dlpsfmsthree2zgfpdnftvfqgsgr +4kggfpxg8jpxzdqsixeight +fivefourtwo923 +z3gx +six4prlsp84tgvc +1foursrznv62k +vmzr829nkxtlf +3dzsx2two7sixfivebkktgfbzdt +fourpzpmvxc2zvvrhrbhf +frpddtknqjxpqqzhdnfour9sixdqjbqxh +89sevengkbeight6mn +two7jcpnxhbtmhtwo39twoone +cvdqlfkrs821fourrrgnmm +6onefhnnbrzgx7fourxcj +seveneighthfr6rz +9vvqlpnzbxfct8 +two8three2fpseveneight +2three75three2 +znvbrbrqlfive8 +lnfjqfkk8 +14tvvmdlntrv6three +5twor2chtvj +threetwomgrcfivefive7 +five4qbvxthrfxdkjkk +sixthreethree5scmqrfq4vf3 +rjsljnqcrttbpfhfxbfourone4 +threeseventwoseven87dnmqjbbxfoneighttfz +seven4four9eightxqlsixthreeone +1ninesix43bmsttggvzn14 +seven1sixbmnxmz +grqhlkrcdzbhstgtvpclvtphph4twoseven +fgfprscb27pzfvvblxhkvonefive +five77fivethreefive3vddgfngng +13nllfsevenfour6four +threenineeightfour173three +fourqvsbxxzmfh2hhcjxsrkz +4jdtxgltkkkvlnhrztwofxppsdlcqztwo3gdlctj +5four334rvfour9 +551threenine +eightonenineeight8 +qmjqmjvvfkdbnjgkrqh8two +sevenjzqnv32lldmr5one +6five8fivefour +ljvhqqvqxqsix1367 +two6kvjtwonenzf +2p5chjdcseven9 +lnrrrkkdsvfhkl9vfqfgnvonegtwo6 +twoseven4lhhpcvthree4tkrone +8hllnnmpm3rjxndcmpt9jfjqng +qbnlgqeight2csvjshglqzmgkqqxqzq95 +two2nine +rrpffkq15foureighttwo2 +five3ninetpx5fmrzsqvfzq +mrqhcpgvblhvskv5pdsdzzfzfsix +two7fvmhvseventwo7 +3sixone94three8fdplbm2 +loneightseveng79 +fourone7 +zvgjt1 +xpgbfghsmj2six8eight8mzlnvmv7 +grjtwo48 +jhcgjlgxt1seven1 +5dhtppxrxcsbjsm37 +cbhmtp56xbqzppjjfivezhtxxvkrzsix +hctwonelcninefourfive2 +four4rcxpkzbeight95xxdb3 +fivejlplgzflone963two +trgninefourtwo6five +66fournine535foursxbvsfvf +1bskfour +dvlmbrxssevenhldvjxdzcfdvbfourthree2seven6 +6two92635 +8dzszone +hfcm6 +dxrfhpdbrqmqq8four +bfclp5sixeight81three +eightffsqgkmt53gfjxqsskpsfpbcmqvdfour9 +6sevensevenfour1v +9threetfspsfxhnzblgsxz +seven5tz7pfhlpt9qxrqz +pmbeightwooneonefiveseventft4 +xhjhmzljnx7 +twotgdvhkpmg1rthzfc6 +onesevennpcsbfive9sixseven +7sevenmbhlrjxrpddcnl +8fsvntpptctwobjmkgzvc4two +onetwosix4 +fourthree4fourlqbvscdponeights +1glkfrdb69sixsrvvb +ninetwoeight7cvjtdmgpsfivefnlvgsqtstwo9 +9threejtfoureightseven +38nine8 +87two7onetwo +2vkkcgxdqpnthreehklfmfmjdpkz9fivetwofour +one5oneone5oneone +three5hlxkxrmxsbgrzqsgrone +twokbbnbjp7 +mvxpdllxrvfthreeone51eight +rrqvfiveseven5two1qgqppn +92s +fourxcj8frbvlxzgpvoneone +648211 +4eightgzxnsixlvksllptszztmkjb3four +fivegqg6 +foureightmmnknlseven1 +83kx +sixeight12kskzhrjjpslmprtwo +1xzncrsfrlfivetwoxptv46nine +fourmxfq6twotwo4 +oneht8 +3prjdlrcznine +btkpqmxxmggkzftmkxbzqvdccchxdmjlqztzfgfour7 +tvbstznine9z +two1fivemmnlcnmqlrnbp95gjjh +dq671ninezk +6cmxtt769 +629rkhc198 +2fourfiver +three5nqkjdsixfrjnf4gcbjrznine +xjhqqf7oneeightrgkdprrssmxp63 +5fourfivekpvmnlpfrt1 +xnqkjcldhttbpjr8 +fdntjsb957sevenhbmntp +jlmmmmdv482three +63lnbhmdhpsp32 +99cmntldfdflqkfkv +kqnlqqkpr9eighteightthree15threenine +6threefttghrvjsjg6 +spmrjzfm6eightwokn +bdcjfqvsdronertfztlblqbgfgtkjv8qhbjfhthree6nine +9fvltpsxtcbtjxbtlfdvm7 +6jxvxrdmpjthreefstfgrsixfourzbfznjjlqtjx +8onesixkmhgvsnfhqnxlkn +rrjxvqjbnvvsgddtvmb3six5 +eight8sevenbmtgbvdzcpqnzqone1hbhlgcfour +2nineseven41 +8xptgrh1njz +geightwo93sevenseventwobpdhhjsrbfour57 +m4kd9four +6nine5seven9v +glzc1fiveeightvbmvk +ninesixone3sevenzmvrqbtwo4four +9onefoureightfivefour +fjqpgnjdd1twoninecgsqsmtonenine1f +94sixthreedflcddxnvvrthree +vvfnbgpkgsnjtszxhrsixfive5rrdtfpkdhdvsg +39four1pjfkt +45sixkhlfc1fivetcvnlstnine +sevenone2seven +twofiveonenine6eight5 +grxzndnqpd56 +xnpdfnfgt5fivetwotwo +9four6two +sgmlzbpnkrmfivesbdzbnhkcxndpone49 +88six2hrmkl2 +mthree3eightfiveone +smrzqc7twothree2three +nmtwo8cr +378one47four +27four +5two7seven68six +9onecnonethree9 +nineqhvbjqbrkpjhjhdbpk3twoseven +rq4qldc +86bqzct2nine +eightsnfgrjzhsnxbfivethree6ljxx +oneeight1threevzdcplnqrbk92 +8k9dkqmqhndthreethree +9sp6j5two +4rsone1seven2seventwo +ninehhdcbxfgs7fljclncb6vpzhqphxz +drplsnsch3zfr +86nine +2threeeightsixvzpcqjs +dmkhbxsggeight7seven9 +fourshjlmrbbcnznstgj2sx +gcbzbldk6nine +fourskpc1vzfxsrjckcmccljtt9 +1oneone53oneeight6 +six3fourqxqbs9nkbsixthreesix +pmlrkrhqdjgg121nineseven9 +dmgnq6 +kpmponeone5 +mxmhbqnrcjj1threeeightxzfive +onebzxnrqqfltfourglvkqfive4nine5 +threezvmfl7vsdrthsdsjsix9mbrqqmz1 +boneight8onelrtjkj +tqxbbceight9rqbthreek +3h32nklscdkfhtztwontprj +2threesix +qkzmpvkvsixxfzlrfrgv682 +3seven6mvkeight2fourvhvvqone +three389sixeight +bx664nine +nine82rcdvqtj91dbffscng4 +2sixsixtbqhvcndjtcvrrbtdzsxrlrvdxjtd7fzdtlrhlxvbpvhknmm +6zbpblsznhlzljtmstwothree28ngdcfkk +eight8nbfmdqlcvonenine +8two4sx7rffstvxlq1seven4 +gmzbd8nine5nine1one +sevenfivezdfbn7six +5892 +ss9 +8xcvzgzkjcdg +1seven7three +8four1fourtwonezs +hnjzk8 +xfour5mrj +vnkspgtkxspdtwofxlvtlkqpqcffxbqth13cll +mmjkshtmtwofour1 +sixthree6 +seven9mzmbkkrzsix5five +9cbrsqjlhntpzfivegmgn1six +bdbnlrdpsninenine3twotwocpvjd3 +twonine193 +twothree1twor8cmtxtd +bvgtninevfrjs6 +eightsix8 +sixfbzsxfjtfv8 +5onethreeone +dgzcksnqz8foursix +9onetsrtwotwothreerbv +4dnzc8 +fivenine4sjzsdgvdqsix3511 +7twofivefivefourqdgpmfblgv +oneonelgjsk9 +zcfhrrpseven8tlffkfnineeightttwoknlfdjpj +nine5nine +8sixtwotwooneoneeightcdklzjgvnqrsvvkbtfj +7one9vxjdkbhqmfbpt +6twoeighttwo +sixthreesix162 +5jhxxchf69twosxjckh5 +sevenxspmvxpmc788one +9fseven4 +vxzqgxbmtgxnm588seventwoqtmfsb9 +four8nine4ftn5 +eighteightrhjzcmxql28four +twogqjdbmmxqgtxdppchr2xxhcptq2mrvgsdccs +six24 +nqdptone3drgtwoone8 +threesixnine8hlkrj +four7pvvljkscc6hvsppgxrsixknrnrvfjqqfive +7tdnbzqqxftqtxjqxgmbdhbvsqdone22drc +59rqhzrfrps +six1scbkqjd4 +89blbn +lqhoneightthree96tppmhtpmlt7 +threeqpnsevengfx3 +sixk27lfjrvhvtsixtwo +four5slf8onefournine5 +ninehgczrdslkstltfive96bqtz5 +scfkzsr4fournine325 +5eighthzn9rjdzxllvg +1six1threedrfpflhqfour64 +fivekdtgcdsjxone8nine +7sevensevenhronepdgbxvfd5 +619nine6threetwo6 +fivehchdssjrlshfqjlptsxghzrcsfcglm4 +6two73smnqbbmsix +84fivermpjpjgkn +oneeighteightfhjtxbjc94threefrnnnncdz +lrckglbdn94eightqbfxp +mtztmbhthzone26sixgjvnbzsjfmthreevqdqrld +pnrtpgzcnznfive3eightwogkq +threevfpkrjddtpszxddckhftt6txkszsbxnn +ninecxdtmdnineseveneight5fivesd +xjvv7one +5eightfiveseven +twodpfdzvqmpzmvs7tpjnpmv5 +75fivethreesixsfqpzdonefive4 +4onefive6bsvtplblfbmnjjlb +eight75one73pjgdqq +ntcnmnkvjzpvxpmb7twokqfour1 +zd1sevenmgdrgrzvvh +65four +3kzfztjxjbseven67bnfcntfknlxlv +eightfive8xnnkeightfive +6three95eighttwonineonevkrtwonebgs +92seven2cndf +onezxphkcrsix7klrhnhdcxrpz +mgl8ldbxzdlgtwo6cdvxbp +foursix7lzcddxnjdrfqtthree7six +hxheightwoncdcrkczbninefour3lfdtgnqgcnbfxbqlnt +2pmcvctfml1one92 +nineone9eight +6crppdpp4cmngqseven3mmv +473sevensqpvvhfdrfiventgvmvrhtqx +gpnzc1rmfxqgj8nine271 +84sixtwo +frcrtsqhfour3threefivesix +bhcvf6 +seven2seveneightzqmdqhb9 +28hjjrgqklqgbm +98three +jqzjntlc541 +oneq22 +7fc92ljfmqt19 +sixzpzkgfiveonezjvrzfdcf43lbqxqseven +1two4kfxglzcdjc3dpvb +fivembfkfdq6 +nplrclbrbf5ks6five4hzzbsnine +3mkmbgxhn +seven9d +vnfj8qng +eightrgtjpdjjktwo1lphnlrtjfxtvghhbncj2two +eight66frbpds5g +3one8four9two5 +9ninefouronefcckhcdfb1mnmdsltdrsix +eightsvsix122241 +3fgpmgxcdqfourkhnrptlktrchfqbxcbbcxvjgznfjkj +eighthbhsgrqkgcxtwofour2nzj +93xnjrphktk6vshpvnftblggghskg34 +seven2sixsdvmcfgq64 +twothreefive3hrmkbmrskcvknineninebnjksp +82fourninetwothree8 +2two158threeninesix +hgltdx48onetwofvnsmmsdzjthree +k38 +ninenine4sixctnznsb3tkpx +pvfzqtgpntnfhfp47rhllqrlx22 +815qxtrghrsg +5vhfourvdblpninemdzbbgmvsfone +nine8nine6four +threebcbsmxbks2two5twon +kzpsc74qxflxpsix6jgmzgqxvsngc +7dbrsmpksixqttqsphqpd7twoeight +kffivefourdknzqsevenvkssgvhxf1 +sixeight5sljd5fourxkkxv6 +rnsjsmfcbp4twofour +zdfour5pktmsmxf3 +threen42 +stgtphmjk7onexfour2foursrpj8 +pjbgtsevenseven7zzhgxlmz +sixeightfivefourseven9bpjbcmvkrfive +hfhxfqlbqtwo4cdfksbbtlcsix +778lkffbzmpdbxjbpfoursdbp +tvpjnvtxeight1onefive3nvncq +38seven47 +five8threexqtglzmpmvbzfour +nmtsjjfvfzbhpltbbsrjphrnxhr1two3sixvp +4gbvkbfqrfgrbr85sixone +6mxqltfsxqxnpdrjkxhrp +lftdxbhhzvvhpone51six +3grhbqf5one +six9four94tthree +sevenh1bdcgdtmjqhnkzxlkxsevenonecbx +jvtwonecfksxckgq6 +zvmjbthreecbpfdvd6 +6bsvrsevenbcbcgrrhpxtvbhhfp1 +sevenfivemtmpcgml9mljnhcrdbfvksvlbpmvhs +8nine9 +mszqdg7jsrcckxn +eightseven9zzsixninexhscseventhree +eight57 +4zjpjz26dxnzfb +rmcnbnlpd3nine4gngphqfmc24 +1vvgfxdfourprlmsjmvvtxnn8seven +nineonethree6zznkfrcgzvfour +gcnjsdlhptwofourtwoonemggshpdh3eight +4eightfivenxftjch +eightthreeseven94 +twokvtjgcq992 +69psqdmgbtljjzjmpsbs1fiveoneggjbbk +3k +eightsix3seven4twosevenq7 +jlthbzsc2 +22nine8jhmktwo5 +8pzmtnlfptpjckftzrzqsrxkkcc3 +four33jfxmhcdktzhqvmkxhklxjllx +nine3lqcsbmmh4f +three514twonellp +4qhn5 +sixbmkxqdgtkbcghvpzonecfmgkpfrxv68six +6threeeightjhfsmp8mpvhrjcxzsevenone +sevens9two37fjdfrnk +jhzpvfldrbmmmglvrkz2ninelbgpdlpdcteight +qj9 +rxfhkkvheightfouronejh8238 +zfsixvbqngj1vhbvxpfk6 +vjbqvcm3 +51six38ngvq42three +7zjtcczjz79seven +five8fivexxmrn +sixseventhree3sixcsk +zninefour8tworxkfb48 +63nine3 +11eight +bxlgdzqthree2ninegqn6kvktfts8 +tvmzzlpnineztxdbkxgthree1four1 +gxcnhxone9 +8eightfive5jkqx +qcfgbpgdveighteightone7seven +86eight2five +tftbbfpsvhtwo8eight8seventwo2 +skfp8 +8hdlhh4ninenxllmthreefivebhslxkvtcp +sixbmljnmhseven4sevenmsfbsbqlzrrseven3 +v1828 +6seven53hhtj +five51lkfsrm2 +bvnrdvjnxjbfv9prx +tqbnxeight6hztrsbvronethreethreeqvh +pcbjr3cjhrqxbcvpzdmfive6oneightgt +qdeightl6four +ncprx96ninegn3 +sevenb4eightwonr +qbslkmkqlf8ztzeightpcn +fiveeightcpn7hvxmtpcsbqfvpnmvgncfbpxzhfive +3rxxcqhlp4five +threefouronevdbdmktp17 +sixdtmnlhth9onefive +fouronelxgxpvtmseven2ninesix +eightrfxrkcfive21ftlcgdcrmbsnrr +nine1fourfourxkppvqrxfdhsdphjcgnhnfnzlld +562 +4sixhj4eightzkbfpdrtzcsp2 +ddfdbdqzfshfxnseven6onetwo2 +five915b3 +sghrbfzmmrrbnone9four5rkmqgh +threedmmsdvgs6twotwochp +seven1fivesixnine9four +6dvmgsjcfour3q +cschsrvz3nkk +4fnqmnd4rnxbjvcbxpchfour +3eight9 +tboneninerzhsgqqcxd2gxhm2mhdpkjeight +vpsbgmzbjk6nineeight +sixsjbzldfive6 +qjprfk1eight7vbdshhnfive59 +dbxdgt6 +pdgghktdjhsxnblgpzmtc24onecmctldqtsc +bgfzght2szvttsdndfiveqgns3 +6ninebdnbxzmeightfivevff8pdllfour +four2nineeightvfeighttwo +fiveone3sevenhfqnfbjg3five +eight19two +fqkeightwosvszgpjvbl2xtmgmc6128six +6five6one24fivemcgpx +pmvrz6threemlhoneightdjf +7cxrgxx53gksgdsv9 +six3two +nfqffqrvkvhqfzthgxp3fivesix7gb +nlqdkgllxdvgj8xdhdfnnnfive +fournine1nineseven +four35djzxvsvvdfxbnhsixfouroneseven +9fourhntsmprtddm +fourfsix81sixvxmz8eight +3pqngffjxqpntqtl8zz4 +five325ninemfqxnseven1 +1one2gqx3 +hqsfive67rr3q4 +onefblnbfvzlzthreenine1 +96zsvdl2 +1fourjjhf1tn18 +sixfdpljnbpzxlvhncjs9threefckbgtcm +seven6ffmvnnmxl8fxskzvpfs +5tgbqdkfive +52czvkbqgztwo17ninesix +bmshtrzdcmkfour5 +nrfn25one +9two4plklcqzjftj7 +onedks4five6hdllqssixbssl +2xftcfnd2twotwo +rzxzkcdtnmsbhnncltpj62 +6snszfour +398seven58 +vstfive8869 +1fivesevenvgjrlqqlthjz1 +tpg7eightseven +gqvpptsix356 +7nineone9fournineeight +tr1threenine +tvz8xconeightfz +two11five1nine +jntkxfvt2threegseven3 +b69ztbtgmqfntdnine4two4 +threedsgrrfcpzpfivebrpjhzfhs96gxmfhkhfive3 +eighteightthree5crdbzgqvtxx6two +nine4onepxjtmbhrpklmlhcfspxrjdnd +7fivetpttvnmgzd +8lmddfzjeightxxvvcvp +loneight1three4dmzxqncjbninerbsrjxxlsb +657fourdjkhrlxjdp3ninepvlqhz +three4threekddjrfsdk3 +8xbjcnsjq89 +six8ninesixfourpcsfhnsxgrz +8twosixmvhmsps3 +six9sixeight +4seven175 +4twomspqqn6929 +71seven9eight +4znc92eight +ninetwo2blcllflxonezljhhsfivelngxk +nmbrjnsqhkxzxhmxsix1oneeight5fourseven +42kvzlcdjzxmgnpqmsmkxq3seven43eightwovms +rj5hxkldqseven +f7 +5sskjblmnbzjhctvmttwotwott +9ftmpxlbphsfxzsbktjttkxclknsbkftwo7 +3ndmzlfbsfqhxrlj2fourfive +8378vkthreemggtf2 +2hprlpkbsfzbnbpsmflxjh15one +dxvtfrhhxthree68four529eight +xgjvjddtnine1zxeightwosnx +sixblpgkznvjseven2oneskvxgngzlpzvjcxkcjgblh +bhhkfive4jgngngjfhbp8kpnjtgrmblone +8vmfivetwo9eightthreefxbvf +8738 +8sixlgnpbpqpltbqqjjxpkcdfourhxzqpmm +seventwo5three +h46ssnqlfrl8 +ninetwokrkfqhh2jbznndtchssjtbpqdhtnrhsix +254 +1nhbdtwosixonezxtnvhjnine +qxx97d1dcnqzqhsixnzbrvrksnc +fivegnxzgvmzone8fourfivethree5 +fivexhx7six87 +zngqzxpmd63bgfzjpftsjgzghdppqfqbnblt7sixone +ninemzlgnkglj1 +fiveninesixeightthree4six1 +fivesix5ninethreeqkxczhp3 +eight19two16pqdstm +mplj637sjtgzltwo +7lvs7xzmjmxjhlgdqhtqllhtzlkmbfm5 +six6kqvbjfoureight94 +one9qdjpfszz6vxbrdnntfz8btft6 +65onendmdgtr +seven368 +eight31ngsdmnm +2threetgpvcseven +nine297zqgvglthreel +7eighttxvrbjsnbcseven +rdpcnrscggv1cxv63 +2cdfltscsnzg8eightwosg +jrszpsjthree8n8bdjtlcbxtsixktkcc +dns3 +2threebpkctf +5pgzpfqntc +9pkone +oneseven2fm545two3 +9threegtctbldnnclqpdmjnps7seven +1dknxbdcvpssix413 +rzrvm77one2 +sixnttfive97jdcjvcmg +spdmkhnthreebqsmtqgnm5threedxjcvsrxbq +btzkx8ckninevffmmfm3four +hgx8fivenine2oneightc +thdfczcpnxctgfiveseven65threeeight4 +five6nine +qgtds7 +hqnzcfleight8two2 +8q8zbkjrqxzhlzgmqmzrbfqceight +nbbrrmksdm2ninefive3x +fivec2sixsixmngbsjzk71 +821one4 +5eightvpxfpnzvsfhcdtn7kdkjdpsqcl +6seventwotwogxvgvxzjbvcqcl38 +onetwo23863 +24qtzzxfhq +one7six814 +czdhrn2twoninetwo8 +one54 +foursslpnrqcv7sixtwoned +9xsptsgfplpbrtpc1sevenjrggpr52 +zoneightg6sixgfdtwo7 +34twodhthree2tqsevenvqqrxq +monektltrghq97seven +ggeightwothree5cpfvrnp48 +nine7zpcbx33bbmd +six831 +63vjlqdc5one +nine9cgxgrq8 +5sixxpeightsix +onecgpxlhhgtthreetwo3 +336 +xcdjlblthreefourqrcxbxlhsdlseven5five +9znnlhrrmb1999drzkckthreehghffcgfr +two8one +ztwogggh48 +six4pcmqkpqb +14two47vmhbsgrgdone3 +84eight2 +5cnoneskjzppm +nine8threecstfxqp7 +threecsbhnn22three9three4xphcvgnz +vjq8ninenhr7 +qcffmrfthreexgjjrdbdthree3 +eightsix5 +threeeightfcsmrvdqzp6 +sevendcpm3five4eightbthreefive +kq9one46dqnr +jbmtdqbzn5sixlnthree +ninebdz4fourbvq +phbzxtvtthreerm89 +dqlgfoursix5k3mcrkmxcp +3fivesixqrrvtsjdxtdqp14pznxpnrgkrvg +5cnkfz4lxbvbpmcfninetgn9 +mtjq8threeninefourhnzgctvtrfive +47l6784 +twopdmponenzpjfbqgt2nine1qccqx +77hspkdhqfztwomkdshrkn3nt +five7pjrslqhkzcjzhn6 +twoqvgphqs8zzmgclhsseven5eightfive +threehmkjmrqqblnrfvbpzhrsix4zvlmcqeight +6lcfjthree8ninefive54 +sevenfive558four +htbdrfh8bthreeninedrjdbjbzlknine +hkhknzrbfsevenhcvbdfs2sixcbjqzltfour4 +qrvfpxdseven2 +139msnzkfgpzdz5nine1 +rbdone3ftvrdkssvmnzjgpcbdjzdkcgbcs69 +nine58 +2ckxdtcqc5seveneight4two +qtgndtm4mrqvtgbgjf7nzhvtvjqqrdmfiverzzgn +3rchqn37tlvgtftdjqxgbvhlpclpneightfive +11sfhcntjzpnkvpzjfhhpmbtjptngpnbqthreethree6 +fivenine4cthreeeightzqlckkvs +5threekjqxkddgvzph92 +five372seven8eightthreefour +fivegjjxh15zdnbxzlhleight5fourqrpxj +84sevenvckrdpxlgzkcbpr76fjzbpn +mvvxgjfqj9five1psvtflxhkpfourdxzxhvxmthreekp +seven7pnltbp1twotwo9lfdgzpj +sevenfkrtsgrnhgfive54three8csmsg +sevendczlbgjbg6srsbtseven +onejscsevensix2oneightd +mchrcflvfj3znrzhrvbhm +brfninexxntnine83kfzbn +97tfgthreefxpv +kspdrcnvvntts8bb4sixvghhjcpt +8onedxcbnlvpntljztxs +c91drttnrsevenxj9 +9onethree9fivexrszjfxcrjdbskdmn +cjtnzpfourxspsjvmrbqclkzkdftc8pdfbfxjnvflgfkqctvcsc +5seventkqrdpmrrchxfournczqzlqqm7p +nhpbdxgzzjltdftqc5fivelgvjshonervrxmgscvhnnfl +2gcqpdcgjv +bqhzdzxb54 +nsmxljkjcmnmxvcrj7threegcrjs7 +2cninev1eightdjcztnrk +cmjskeightmjfrlfhm22fivetzmfive +8ndsix +nzrgmlcrg5r4eighthfxm4 +threeptlf3x4 +3bhd +cbmzrtglngmghmonezdqnhxxd1ctpghbfzqfivefour8 +eightpdzftbdlcrtwonine29bcgxflmf +69crzsmjfivecxcqtffoursix4two +92zghnv +fivejmdxvnf1 +1ntvtnrjmeight1onegckvcnsjnthree +ncxgppbsnhsfnhlonelfbxqzsgfjj8 +eightfhjbrlzxcgtls42sixtjk7two +czrtnfzjnjhxdxtbgtmntkcpninejtzrprsstm4eight2 +483nine +onecnxpmhjjcvdtzc71seven +5l15 +19jmkmrxbdbtz4shpdgmmhzrxtbftpgrj3plvlqdvnr +two4two +kqgtjstcpnhf8 +sn6 +grtgjxgqhv2fourbjmfnb +bfmtkqfcp5hks74fivesevenbgvgzr +peightwoninef2ninejmlhndvjd92 +1qxm +2drkgnvghqrjtfxrvnthreesevenpzzldp +four4zcmmzgbzc +4nfbpctgmx +3threemfbgthree19sixone8 +ggc1gldjhxsgvq +1four4seven824nineeight +ninefour6one5ninetwo +bpjs8rjdxpm +zggcvkzeight7onejgkhpsrdkfvfx5three +7h7lpjzsdv4six1 +6seven9one4 +sixfour6 +4hkddrmgfp +43ninecrtoneseven2qbhkkbzdltfour +85 +hlfive3dqzdvjkdd +5chpcxbjkrdzbjtwofivethreem +6ninenineonefour +5five8twoonesf2 +four1seven5pbbjgmxgxmvfzjtvr6vttbnd +zzkcpcckmsixeightnine4 +9xxzzvcsg45one +xmd3ninerxllskrl +xxj2onesixfive3six +threeseven8 +one43 +1sixthreelcbcfgbone3bzgrl5 +four12535three5 +jztxrtwo8495 +threeqhsvcvzfnsevenfourtwothreeffrz9 +onevqlxcz461five4fthree +znine5 +cch5ptlbcbh2ngnlqnrdsjv6mfhndf2 +threehblbzlddttzkrsl51eightzrj +68pgmnbz7seven +twotfhcgltpp1ntpcvrmkgd998 +seven3fourfive7eightsevendlqqseven +jqtcrf43zkktbqhsevendljgb5two +3one5threethree +vvpjcnine9seventhreeninebtzmr +jfourp7twoseven32 +2prjqnineninevjlmqkrkdxv +67six1oneddp9 +tcbcttxninenine21hrmphqrjkvtnfgchjnb3 +sg1six5sevennineone +ninet7jkrzxtmmz +ninesixtslvqck9 +dnhsp9sevenrrsjdn +onekqkvb7 +2sfflskftk +79four +jnngdkghtwo1two +fptfourseven4hjvkz3onesix +tzhtsgkcp8 +9n +six4294seven8 +seveneight74five1 +kfghjdssttgrfour2two5three1nine +5gkhgsixvlpcdmpgbjkqtjlthreetwo3one +sevenfour1tfxzgsnldk1fiveqg +187qhhqlrjx +2lthreethreexthjqcsix +cgpxkxgkmcpdzhtpc363 +sixbtkvqt3 +4twotwoqqmtb7dczgqrtsixseven +seventwo7z9fzgjkl5fjndrznc +qsgfnjqsghtwoninethree8lppsthree +threesevenkdzzvzbl2foursxrlq4sevensix +seven8bjbmcnhrcp3one +gg531 +one8sfvzplxlknine54 +dlxeightwo48fourthreeninethreeeight +sixxlglqsjtmqmgcnfvpljsevenqlgllg6 +tszncfour7one +three54three4 +qkjxzcdmxqvjngmrkpmleight83 +5twoksv49 +7six58sseven87two +fourseven6ndsgfjv8 +ppmclkxhpjpqrjoneeight8two +538 +sixlhsixfive5 +twosevenb3f2twonebpb +lxqbgl55fgzfmvtpgjbxxgffsixlkxlbvmjkkslqpkq5 +7ptnpseven6one +3mtlbfc6tx46five +99pgdmnrbjv +7twokvzlvptxcrfbfzqsxsqvxtfkcpkczkr9fjxsr +eight82lfivenine +onetwo2jvqdhkktbeight +8zhxksgcc79one +knqqz4 +36twofour +2gdssixtnineeight2 +foursix4 +49hjbscbjvbckhjmjrdbh3one +fivesixdqpnv2 +7ftwo +fourffhffkphssbxzsgeight68dvhgrb +two8sevenfive1 +dggljb5nvhpspbscfhd21 +twokeightthreeone6lqglrseven +cklfcsqgtwohptslmlgdpjktvvbbx3 +two3sixthreesevennine +7ninepnclmdnv7ninevmqoneightpct +czzbhfhhrfonetwo1ttvpgxkgsonektpnfrptjltklj4 +7sixthree1five45 +btwone3fivelfzmfxsr81oneqhkzjvt +5kmrlbvpcdrfivefourfive3 +9fsl3nine12 +1seven1seventwofivetwosix +sixzdeight9fcpzvsbtz85 +n1jmxjvgfiveone +1qsptpfbqtrl19three +5twoeight3grrksgjdkgn +1dq4sjknrp755 +2three2five +txktfive2ngqfl57 +vnrjvh1qpbbzqlgjpgrsgrqgggthreeone +sevenone8srlxqqlvv +eightsbfivefourfourseven6 +853 +eight53b3sxfvnz7 +qbhrhkhcbnsfivenszghnbhsix2ggvv +two28three9 +rltzcpbqxfive1nineone +5threedcfspjkm62seven8 +tlndznhtthree268 +ndfgfkphmn2sixjxxtlbqlnine +51eight682fivepnine +dqvrvthreesixsix2fivenrjeight +seven69 +4qlkktltwo8tqgxcninefour21 +threefour32j +4nine27ngxp8 +seven5ghxkb8 +nineone56 +two8onezonesctsttzt5 +64km6ttncd +three6six6 +threetwoeight7six7jgmhreightwocl +3sixfivehjgvqjlrsfivesix6 +fiveeight3sppjtccnineeighteightnffgtlsdj +12seven9fbqxhs9jgh4five +7dmbqrqsnckxtpt +ktvlgfzt95lfdvf4lbppfccjcprdpkdj +seven65lrjmmqdfjfourtslnhdh5 +sblgrkqccmpqhfksmg5532 +rgqzkmmv4ctgzcgvqdghmvfour3 +24rtxdxqnbvdnkgtgcbfkfbtwo +63seven78hrdnnsh +eighttpj79 +foursix6 +6czcdgdmrmzcdcfmsixfkdnbdsplcscqh27 +3333dgrd +8threeltfpfz3 +xgxddj3qkcnbbbhtvbzkmvh8 +s2pzqkldrcx43xzmxqvspm +eight1gkvlt24twothree19 +lkrzltxknd5fmjgbds2klkfgcgp3xcbxxpnl9hzfbfclrx +2zhn73 +sixone4eightninelthreeeight +seven8vlqqfjfmltwosevenfivetwo +spfkzfmssfjrsevennine8ltlrnrjbcfive8 +1spbthreeshsgmrbcp +ninefive7cnxznfmcp6nine +eight4one9x3nine +eightnine4kgxhxx1ckrqlrn +6sevenkjmfxrbhck +jsgtwonefvmcdsnqfp4fivefivesevenhkbkqcb1vgkshfnxfc +eightcvzmtlvsm49 +78four +threeoneninecjzs75 +xrxrsrh58 +1zqkhcvoneseventwohbrfbqgvp +9zfznrfvtgjfhsk +v5jcblbstnvxk +6s1 +6three1seven +75xpmzmhqqphgtrblhkcdxczcvbmg +2rqv989fourthreefourone +zmghjgrfqlzpdcqq9fjnkbl7btgf +2three3qvbfbn +fivehnklrqktnqqlqfslfjpfpfx9six +3xvskqbjzrlonetwo +95fx6sevenseven3grfncsdttt +two8twoklgnrm +two9seven6eight +7lh2sevenshfvljtphhnbhvkzxxgjjrvlq7 +ninemdgkndsevensevensix4seven +4three6eight1lkdmtbh +7rdpvbqljvnine82pmqclfive +nine6nine7seven6 +54rvpqphbpxmcfjmcspsnhrjp +eightn2skzmpmtgqhvvfxgqonevtbfsmfklzspxdrgj +nine276rzshsrvncjrdzfxbmzzlvkhdlcc +sevenfivexgznfftgthree44 +fivekltdkmm3rdmdnm32nineddsfdzpks diff --git a/rust/src/day01/main.rs b/rust/src/day01/main.rs new file mode 100644 index 0000000..333bf98 --- /dev/null +++ b/rust/src/day01/main.rs @@ -0,0 +1,11 @@ +const INPUT: &str = include_str!("input.txt"); + +mod part_1; +use part_1::part_1; +mod part_2; +use part_2::part_2; + +fn main() { + println!("{}", part_1(INPUT)); + println!("{}", part_2(INPUT)); +} diff --git a/rust/src/day01/part_1.rs b/rust/src/day01/part_1.rs new file mode 100644 index 0000000..2be6d69 --- /dev/null +++ b/rust/src/day01/part_1.rs @@ -0,0 +1,29 @@ +pub(crate) fn part_1(input: &'static str) -> u64 { + input + .lines() + .map(|line| { + let mut digits = line.chars().filter(char::is_ascii_digit); + let first_digit = digits.next().expect("At least 1 digit should be present"); + let last_digit = digits.last().unwrap_or(first_digit); + + format!("{first_digit}{last_digit}") + .parse::() + .expect("Two digits should make a number") + }) + .sum() +} + +#[cfg(test)] +mod tests { + const SAMPLE_INPUT: &str = include_str!("sample_input.txt"); + + #[test] + fn test_with_sample_solution() { + assert_eq!(super::part_1(SAMPLE_INPUT), 142) + } + + #[test] + fn test_with_solution() { + assert_eq!(super::part_1(crate::INPUT), 55488); + } +} diff --git a/rust/src/day01/part_2.rs b/rust/src/day01/part_2.rs new file mode 100644 index 0000000..928ee24 --- /dev/null +++ b/rust/src/day01/part_2.rs @@ -0,0 +1,24 @@ +pub(crate) fn part_2(_input: &'static str) -> u64 { + todo!("Part 2") +} + +#[cfg(test)] +mod tests { + const SAMPLE_INPUT: &str = include_str!("sample_input.txt"); + + #[test] + fn test_with_sample_solution() { + assert_eq!( + super::part_2(SAMPLE_INPUT), + todo!("Add result from example part 2") + ); + } + + #[test] + fn test_with_solution() { + assert_eq!( + super::part_2(crate::INPUT), + todo!("Add result for solved part 2") + ); + } +} diff --git a/rust/src/day01/sample_input.txt b/rust/src/day01/sample_input.txt new file mode 100644 index 0000000..d67f8cb --- /dev/null +++ b/rust/src/day01/sample_input.txt @@ -0,0 +1,4 @@ +1bc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet