diff options
| author | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-06 01:45:05 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-06 01:45:05 +0100 |
| commit | 8089545c22b1ae4a98e967f070c3e298e6808961 (patch) | |
| tree | 0f8b13fbdeffc7ae03f3d7bfefbf6ef81bb3fb3a | |
Initial commit
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Cargo.lock | 54 | ||||
| -rw-r--r-- | Cargo.toml | 9 | ||||
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | input/day1.txt | 1000 | ||||
| -rw-r--r-- | input/day2.txt | 100 | ||||
| -rw-r--r-- | input/day3.txt | 140 | ||||
| -rw-r--r-- | input/day4.txt | 203 | ||||
| -rw-r--r-- | input/day5.txt | 212 | ||||
| -rw-r--r-- | src/day1pt1.rs | 21 | ||||
| -rw-r--r-- | src/day1pt2.rs | 51 | ||||
| -rw-r--r-- | src/day2pt1.rs | 44 | ||||
| -rw-r--r-- | src/day2pt2.rs | 33 | ||||
| -rw-r--r-- | src/day3pt1.rs | 64 | ||||
| -rw-r--r-- | src/day3pt2.rs | 69 | ||||
| -rw-r--r-- | src/day4pt1.rs | 45 | ||||
| -rw-r--r-- | src/day4pt2.rs | 49 | ||||
| -rw-r--r-- | src/day5pt1.rs | 39 | ||||
| -rw-r--r-- | src/day5pt2.rs | 39 | ||||
| -rw-r--r-- | src/main.rs | 5 |
20 files changed, 2179 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..625450a --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,54 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "aoc2023_rust" +version = "0.1.0" +dependencies = [ + "regex", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..0cd0fb9 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "aoc2023_rust" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.10.2" diff --git a/README.md b/README.md new file mode 100644 index 0000000..eac8cdb --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +This is just my attempt to learn the Rust programming language. diff --git a/input/day1.txt b/input/day1.txt new file mode 100644 index 0000000..541babf --- /dev/null +++ b/input/day1.txt @@ -0,0 +1,1000 @@ +fouronevhnrz44 +eightg1 +4ninejfpd1jmmnnzjdtk5sjfttvgtdqspvmnhfbm +78seven8 +6pcrrqgbzcspbd +7sevenseven +1threeeight66 +one1sevensskhdreight +rninethree6 +eight45fourfgfive1 +xdlnbfzxgfmhd4t +7tf +8oneldkrfcssbfeight +five5ninebvvfv +sixrhxkzcgfhltrchq3three91 +lnxms8 +threekv33eightninethree +fourxrsxhclj99twosevennine7htxdr +5hdhtdxgktztjdjrhkmlblsevenseven1four8 +25xmvshkbmtkmvqpfhgq8fivefqctjm6two +nine533two +sixmbkjzpcxvfive2 +seven3fivevhkpjvfqsfivemfdvlkhhmmvtztjf +3eight5threefour +fplrjjznseventwocrv9 +mxqvdb5onesix84fpkzf +17five6mvxgkkmz2two2mf +lrqnqfncvvvrrpkfour92xsxfztwonehsb +dphngmgfhhhcjxmbmqdk3nine54 +34xdbhnbhbmljxc55oneeight +cpgdcctwothreevlqmk1qpdthree +977ckpkmx5 +7cx81 +vrtgzhhrsevennzgjqhsqdxcjtm2gsj +dtkgj89bz5threenine +256mctgqnjbpr +smmthmrnj6threevrndhnrqq4qpnxz +vfrcvbgpdfjbzhchqmtjgxrmddhmggmqrgs7gxfjffivefour +twoeight8two3 +threedpfour5eightthreebc3 +csdfivefhgkjfcsvsvqsrbtplhjnine7pqhpvhjqone +seven3375sevenqgjndftrsh9 +4six1npbnvfdl27hqvdrxztq +twopmmblrnhmq6zp1 +34jvrtkfdcmnmblg269six5 +fouroneeight1lpvssjskkjvhpmcb +kjb6 +8rsix4 +hcprhbhzgjklpql92pntdmxskg +3766zthm7lts +eight9sixqnkqbfrbrstbxxsixeight +sjncbhbcrmnmsmf4sixkhscclmrjfjgqgrdtpjqpgdsg3 +zrxtgzscx5lgfcsbqkjnst1 +nineonedzhsqlscgl2xpk +9eightljkpkkq +blhstnzdfttwocfjhgsix41hrx6 +5dzsix5 +vhlkone6five79 +nkkm65tfnxhtmzrfpfive +7hcnzjn4 +ngckn5ppcsvjsbstwo +5qld +zbgghnineninezkphpf6 +8nine4sevenjlhlzlbztxbcrpc +3bcdmqxgb +8xvhfr3foureightwocj +nine68zvlfs +8one8xldlrninenine81seven +7dtvdvgnnqt6 +htxkfzhxhfmc7631lklzppbtrbfive +seven89lrxddqtsvvt18 +dnvcsqcmp7fourkrjhndsghjr +ztkqqqdctdeightonefivezdctxbfg7two8 +lptlbtmmkdthreetfcttkknf53gtmvkcgmj9zvsvmsbstznmd +hbxr1ninefvjkkxkhbrtwo6 +dbmxvpsvp7jdnvsdnlv +seventhree1 +seven1oneseven +seventhreejcdvcgfthzlvl8eighttwo1 +2fqkkgsvpjv9ninesix +xfmkdtxk2two +6fourfive +hpghf2cfgrmb34 +714 +nineonemrzxsmtwo28 +llgnrpcdxt4eightninedl9 +pdvhcvpmceightpfjpgvbfnrhh9 +gvzzrvhmj464 +592eightmvkdnjqthreedtcldng9 +77nineonethreerqnrgczsn4hhdnpbtkxthree +four78zrqfourtwo +5chnktntwoninezqzfhthreegpmkvrsbfs +mpgvbnzldvbhchthreeseven4cvone +nmfbdpeightfour9fiveqnnmbfsheightsix +onexrjdhtmsdkssrgghlfsx5fourtwofive +5seven3zfdnqxqqdgqcphhjctjhddfggrfstqrb7 +hcpcvfllseven8 +qhpmcthree1sixdjkg +32mgqbmsn6five4c1 +seven78 +four8three +9seven5five6 +five67 +twopqsjvpfxdone81gsztrlxrhx5 +9bctqg +jqkhxlnvfhninepzmvfmm5 +fglgdrnlnqthreeeightfoursevenseven368 +nineeightjvzdqnpnzf86qpffrfsp6 +34kckxkrq +sixppr854 +oneeight6 +7onerhqgbzheightpvxjnsfdnmfive +68seven3 +56ninedgzqmlvjp22 +six69nine7threethree +6oneightskl +5six9four5twoone +fivefourfourhvgfqrqst99 +2qvvnrbvjhs8dstfpfnineldkpnkskz7 +41jrhj9nfeightonecqrdg +7onefour8 +rxtdz5gbxbvdxbbpghfvljdbknqsqgtmmgrhf +79kftqmdnbj +1cf4 +threekdrpvtsdtrdfzxtvqh3 +zxcnsfkvfivezhcknlhcqfour9159 +twodjdbsfive7two +47bnvbkseven4one7 +nleightwo7 +twofive5gptl3nine6twopngsq +eightqn32seveneightqfrfmsfgqhfourvrgdkfnxn +sixfivefivepnxb1jqzx4lk5 +three97onebssix2 +fivebvkhcmt3one6twonegf +xzrv997pfhxsblfive8 +5nptkzbsixxgpmrkxponegnnqfqtgvl4 +7mvxkfkjkxninesevenxjtrjxbj +jfloneightfivetwo7flmf +qpncksix1fourthreesixtwo7fcjjdx +17nineninesixhpbh +four88ngtbtfcqfr6tjqbqhrktf +vgtvfsftvljjkxnsevenltszqrgm6cgxjlqsgcqonelcdjv +6tznfmdzxkt +nineoneninefive2oneightdp +kmjjzvblthreethreefour1dhrsk2pfjx +fourfive6six2 +rmqzgfivenineeightnine6qqnxclq +fourninefive3kgeightonerfxsr +four7qjpkrfxsvt31seventhree +vqgqgk69twoseven +qfxvmhk9 +six1b69 +vcbmbfjrdpnfour9 +twoclpjtndvxj8fpxblseven +28xrggnqqttk544 +39hgczgvjhvs31fivesix +qstz85sevennine +ddc5lqftnmhldv4dxfvhrxcnltr61 +ninedhhmpzntqlninef7 +63fourhznh +three39foureight +4zlfzjfrqsixjzb +2sfiveeight +fourfivefive46 +fglfbbseven7445three5mfgrmkfgdc +8sg +128three3seven +five4threehrggrjgjpninetwo5eight +3hjnmvhtfxpzmdt7224txvnpnjsjf6 +beightwobhz86fdhsthreeqjxccxhjvk45r +lgd2sixf7 +6ninefour +hmhfeightsevenvlgdrm3five6kkjblfqbjsnxtcxrpg +jxvh5jjxvfdeightwon +1qfqdqxvtsztkkjxqz +1onenineppgphdtt +fourrppqprfmlpxbvdhpltfive1qfzr +xhqkzhchcmfnrpstgntwobrntnm4 +nplmsixmx5six +dtvrlxzdb4clddlfivefour4one +67cnqshcbgsix54two8 +7s +fourfourhbv28six91 +seven6twospmcsixcvmzfj9nine1 +1five1bphjprtm2twoxfslkqh9four +eight7bfzdbfccfl7 +8eightl +klfpjslgdmgbxlftszdltn1 +eightseven5threeseven +onenjvvqsfhgfhmtv6foureight51 +qttmv8zxdh25hshpn4 +7875 +3ljptgbzsix1sgqrqlgml6sevenfktjtgtv +tdtwonethreeeightfivethreeqmdmc9 +rkx1 +eightseven26ftngc +tjxxsdsnxg696xhthree +2gdbxmxqjxnninefivenzhpmx3zqh +91kq5sixspxqqvpjxrp +mkztv5knjkzrgcz +3ninefpdbptdnine3qpzc +fourtwodg86 +nineeight1sixfourseven +dvlgone1foursndcghxgxzrtsztceight8 +6bskrcjthree +fourninebgcqkdlrx79 +4sevenxfoneh +gmvptkcgx69vqxmckppmlnptsrndfrhtc +9959ngrjdgltllpmrtbrgrdpnjlgl6three +2c +3qncfdmhdcmleight1 +3eightvfstts +sd7175nlpq9xhfour +foursevenfour477four +snsixthree7bmlrvdtmx +nhsninesevenjjhgthzhfour66seven +52onepcltqtlnk +fivedvndklt1twoxplzqtgf +1twohpd8xxtwojmcblxxtdk +nnctpnrhjtqvcpnbncpfsixseven9rrbxblhcsr +95ninemvhbqhpkqksixsevenone +5seventwothree +threeonetwonine2 +cqbrtdnjzgx38twoneshm +4fivenine1 +czsfivenkkqbqbbpc1 +sjmeighttwo32one771 +5mtmkhkhd7nineeightrq4six +one7vknzhj9ninesix +jcsqnxhp1pmfpvkdmcgzm +zjm5two2 +4onejhdtnhqtlcggbxpmhtfiveone +nr6hvcspxjgvmlbdtgs326two +fivevsrfcv5fnkpftvrbnine +kbtwonesixbbrtjvcbblzh4 +2fourthree +eightntgeightfivesix8 +twoninefive42 +bcjxfqlqvfslqgq52 +tmrthree8twoxthreers +9fivenineeight9xdnnqkfbnkg +onesclfxsljp2 +5one34 +18nlbghthpmhntqpxnfivebfstnkcrpvxmrlrhcq +fourthreesix43three2fhn +nine5zbqpcxffpmmzxp +dbjgphmmvf7eight +6tks +ldnkcj6572two5sevenf +6jlbdqjrx86pxxnhneight +191pbjnlqh7vkgvrhtrkxqfgxczq +qpxpcnmmmone3zkm2nine5gttbdpggf +vnbfthmm1hckvdcqqv1sixxpldbmnxmmgrbl +eight5ftlsixlmrf +6gtqkvvmvvq5seven6mkxvxpfthreenine +jbskqm5gfntjjqtz +2eight72 +nineplkthreesxpeightxzkfvg4 +xzcqqnq5seven2vtsldzpfnine +six9t1rmbnzrkdh1 +75kcdztv7 +two4gbffour +seven8rlqhshzsixmtmpvfzjpeight5sixvh +7nrrcqpdqhfourthree +21fivenine2kjxmlmnhz6 +3stsfthreejgzxhbseven7threebfhlml +dtdeightwo4jxrfivebpzf +qhrr2five5oneightr +pp2pbjgmgffctbtseven +737kbsxrtpcgslrmcnd4 +qpxrkdnineqzkkhzjfqqv7twocghmkrh47 +gfptsfour4ldrjlvzghq +9ninezvxqzhlgzckb8fztrsevenvlqgdm +7562sjpbvpeighttwo +qsmnktmlpznxz25gpgjqsm +7two5tctnfxgqvd2four +rls41threezlpkvtbhvk4sixnine +six8dpd +msljvkd6fourbtzfjphskfxqpjkzmzgkxvqn6hddzxj +mfspzjjcfour49csfjgjkdmktns +b3tllpmmqkktclkntlbgkkg9five +rqnbftghx35 +rcgrb26five +sevenvkhzbljfour9czkpdltxlbqbdgcpz +two7fivehrqeight +mgmvtjl1zffzbt3two +trxmmtdrvh1scjhcsevenonejmzhsbttgfseven +one8sixtwo58 +nrs24 +threerrrrtjhngptrpsrq8sevensixtwoonecntmmmxtjf +mzgmrh5qcml +4lfxxdgnnjzeightninesone +phvmnnvzseveneighttwosixplbrb5 +sixnineqqgbmlxdrvsrfhkrff5 +6sdfldthgvctwosevenvvnbgqxjrn +7112xslv +sevenfoureightfivefivelkhnxb98 +nine6pljkszdp6 +two4xlhfhrz5kbpstsfive +bbgdsix5 +sevenlcbsdlhftwozsnx1two5 +one2jjmlqsnxx1b +sevensixsix5sevenzqhjzlkjgnvsxfkfvxzhq +lone19four1 +1fivesixpv +eightfour1 +xsbgprjfthreefoursevenrqzbcbfnbhtwo2two +ldtwoseven47dcrppbfbv +1fivexgtwosixone18three +nine93oneseven +5qdneight61xpg +rdzckkb5five7ggmbkzjshx +37lxlgmveight8 +scqvdhm9b +seven9six +pvthreesixfourgctbsix8eightseven +83oneonej +5four83cfmnthreeone +fivefiveeight1 +9tnbqpthbn5kvgmsmfmfsevenqdrksixmbmgm +onecrs76 +vgdqvmt23onesix +dlvmvtj6eight2dxjrhdlfghfhxcsxz6tbkz +414sixdbzhmxthree +sevenfivesevencffvbdhtk5qmplrjzxnjnbnt6 +qgqjxchmxfourknine447three +4tfour +fivercfvsvlfglbxrtvxznhr8five +sevensixonesix7399 +two17 +zcmdlqzhps5twotwojkltrxb7three +xllqtjpxsixsevenfivefour29 +ninetpzpr51 +6751three6 +rcfpnskfivethreelbtgpltxsevenfourbtcs8eightwokb +eight7rfr2 +six5onenine29 +zjbj238 +rgprs5fiveldvmgqktnn +meightwossfvkncf5sevenfivesqpgrtnnj +onez4eightfour62tmrjmprthree +foursevenjtwoc3threesixfj +qmmzmzlxmthreezvzxv6zgcztv +73mbm +nine251k1 +sixhtfhzcbtq7sevenonesnkpfvsnnnine +seven44vp4jxbrvkzcmlnjfiveoneightvzx +3twoseven5 +one8mfpgflgqkb2six7dtgftrplb +lrgnb4ninetwo5vjsmmb9 +6sixq2three +999eightvkpcpv4 +947fourtxdmhv +9msczjqjggsk3six4 +bone1 +5fivevvlljvmsdgqjnrhfourkstccckr +7hpblpnmxqlninethreesixpvpnine +nineeightdsrqfdnghgkeightone8mpkvfdhz +4sevencrjtpdq +mbvgsfoneltqkfnbpftxhtv7two +onegbvcctwo8onesevenone2six +vt36onetlmtqbv +nvvxx51 +threefnvcvbnzvs4 +7rxcjjdeight81587 +mdmjsg3seventhreesn +dtxsdmsvjcjx819jhhpzzf9 +9jcxsninetsl2 +6vcllfssthkxgdgh1ghjscsrvnhrpmjllh +6kkhpcjhmseighteightppvdkffdcpchttzone +878 +sixdkkjchkjqtllfpn31rpgxspktkgxjgcf +2eightsixzs3kx9 +sixthreetwo9 +35vtgrpcqcnvfive +4ninegqqlc49fourthree4two +czd4eight +tfcmfdxhhqlroneninethree43 +8tbx +1xqpdxznzhsixseveneight2 +6hg9clj +vfnthreevzt88 +seven4317pkxd13 +stvltfvs7eightcmj +nbrxfmsshronesevenrrnp8seven4 +7jvtgqvm36fivegccbpkp +6threeeightfive8tnlninekb +eight1sixtp +17ninezjhchkvq +tfxvhhkltlnffournlmlsqfclqlrsk31 +two889threezthree1two +five9one48twothree +eightseven8dqjsixlrsrscgzjpfour4 +988nine4fk3 +76dfkqfbqzffplx +9zmgrr9 +jhsbj4twohxrgdr +kgcfgninetwoctqzfbhhvffive2fzlk +8six25 +six35oneseven7 +2cvxrnine33four27zk +4xctr9threemrckmkmjgtpxzfqdzg +fivelrs3ncmgdxgqhnfqrlzlnbvrqp +3zgblb +rztshfoursixfour226four +2hfth +5d94fiveninezfvprvgtnxfive +21four5zcb6szsjgsseight +2fivefpdkzxxgchfourp25lsnqjrmxmq +gxlbzlfzsixtwo8snhpdtgdgthkrvzsxkd3 +five4n2 +gscjzkgkeightqlljzx12fiveonebqzmlh +xhsrzj1 +klxkdzxvvrljbnrhfive7four7 +3sxmbgvxkmkpfqxccvj8eight2hl +2bcdbsllgcmftxftmzrhnfive9dgkqpqkloneskztwonesgh +eightsix7nine7eight69 +five6lsgslhtzzv +fivesix47 +3kxfbcjz6vmhzvkgpjbfqq34seven +threevlmlfm58threebkfdzd5fourkpgddjlqsz +sevenzdeightdtxrxzckfktrfpm7 +qjkrfltlsdrrcm6 +795six3hmlkdnine3 +foursixxjnqsljktnnbtwoeight2mskdbkbtk4 +fivetwothreeeight9sixqhqzm +fiveqjdksix14jlzcvck +16sevensixvzjnh +nkpshpkptggnsxp272three +zrv86 +35lgqsdfive6 +x3npthreethreercmnlphkchmrmcg9seven +5sixninefiveninenkxrvmk +jfjqrvc3 +bbqxjhds4 +hdkqkq5twodbbrpnbmmj +4twosixcfdcf515two7 +mgzljdxqkpzbhfh62threenine74mcvrf +4ninesevenvnblskhgxmhvkhpmxg +fourvktpjlpr5sevencfvthree +9six9vtrkdfjkbb4five7slq1 +dhroneight9xthreenjqk +eighttwo1twopxzxghjs9 +six35ctcjrmfclone +d1sixmmctvr8 +qsgcbzdtworzgzbqtrd7pttltxjsgptwomfmrzns +sevenseven6twocqhvmvgxn9vmlxpfourjvqsnmlbd +7twopc2four +three1nineeightgrnzbpqsvbkpbqzvmqsnm +91fdf985tdjvtwo9 +svlfivetwomjhzfourone7 +bqpssscxckkljxxtwo8dpcbpqgq +gjhdqvgcfive3five +bpqdnpbf97tgpkkmdg +1lksrsrlqkmzmbfgpcqq +kfftvhrlqpstwoone6fiverklbhqqgdpvmnine +xbtfhfivenine9lpklrnrrbnthreensvgrvdzpfpvzznq1 +xkfjtzdqmhnine96sdgfveightttbhfkthree +fourbz2six5 +rggoneighttwo19vfdjvjbr86zkqmfclp +3fourx4klhkhglvjszj8 +glg2fournine5sixxbjseven +3zdpsone +htxgljmx262five5 +3ftshpgpnnhgspltjrvb3cgnghgzpvzlnxvzcjone +threebbnrxczqninetrone7eightseven8 +g2seven +threeddtgc8 +3fivepcfgpvjzsj471 +28zfour7seven +clxslzrrkbbmxbkzfnreightone6twodlztb8g +9eight1 +2gvvdgnvnptwohhztfggrndzhplqgx +qspcbvlv48 +1eight1sevenrlhdnhs +fivetpnnlnp317seven +n4onetwoninexnvstftnchzfxzrqts +2lthreeseven +two3twoseveneightffournbrhmseven +seven6fsxnfqmlg75bznfkjbch81eight +4dgszfourggjmjjjrr5xmddgsgp +b5283sbqdn36qcrxnphkg +9lmklvnvczeight +cgm2vsrmjtzmbh +7lhqhfm5sevenlg +69cmcnbqseven6bnztjrpfvx +eight84nine8 +92xcmffvvbr +fivefivetwotwoglzqftlfpnine2 +gtffdsrzmmnine6fourtwo +cjnxbkvxq7onexjjhds +onenine9lgkp4bxztcseven +bthree4 +bqq4dbjbkftfx2cxdrdgjsixxqlcgztnv +twovtxqhsgx72jtgfqzfqnine4 +87gjbghccqrsqxbflkhk2fivelmkmjzmfzxbcmjtb +seven7six83vdxxrfbfkfg +sevendnjssc7threecrccqlsf5xtgmqk +sjphck271threekvldbgnvtcxlcdkf +sevennpfbbsb3kgpdm +ngmhtfnkjl5fourfivegnpb +xthdbtwofcgdrrjmfive1five +89hgld6sevensevenfour6 +36kgtmxxx1fivenineseven +eightdklr6 +23zkrplrpmlpclqjkrsrxcbjone9ffjrqvsix +5njvthreeftxjninefnlcq +1qb +three5258kpcrl +szggtxbvql443 +3threemvbzslgqdninesevenxzgbfkcg64 +6fivefmhtdcbpx +five4fivesix +9ninebrdczqjpnine +q33ninesix6threepbqjnjdb +onelvhdtljltmjgdsnine1eight7 +one2seventwo +4jnfchm5jtqgbmnctrsix +5six3 +eight9hklfhjnine2onerl6 +2nzncz9fourdcqmmcfgbgsqchvnrdnrcthree +2337 +tvqqfkxcg81eightfivedxmb +mxkcbqkptqbgqvgjxbrbnine3dtzhkmeightsixdxdhbpxd +two9szthjhjmcfseven4 +rkcsnrl2btjgvbmlnine1jdjczcskjg622 +six75three9 +5threethreetwo8 +1eightngz +seven3sixn2 +three7pdfjtzfv5threesxpgrbkmx2khxcsbdblh +onezzrzpbvsmflzrlfmv4h46five5 +6jdv +smseven3eightfivegzlkm3 +nine7eight5 +sixthreeone54four +7mrxpdc6xvkhcmtwo4 +3crrcmxzqzfchtnvnh +nhxtwoseven84 +9sixvltbsix +6ctsnvvgm9sixpjhmtskzggtgsevenseven +ninehfqcvgkgqf167one1sixeightwocf +dtsg38sixtwonephq +rpfbnzn2vhjxeightqdfbqmpgpdqn +cncdqcbgzt8 +xbhqsrfp6357ftq7 +1rnnz277 +8threeonejvkfldcrnxjflltr9 +l8sevenseven8qmm5plczqnkrhvkppb +one7qjgnslmrdnbsone451xffltxrvdk +hmcmtzcl59 +8qqffcfhj59 +rzlkxvgckrfvnone2rjtwo +two9ninesevennine37 +2x5 +4cjkghzhtfrdhhcrjvt2 +cpbhsgbzt8nzcjqnine5cntrngcqj +9three4sixeightcxmvmgglf +31dptlfdphx7three +fiveonethreesixppgpbzr8jlrpzhr +731bdfdvtpqb3pcbrsxvtxbtgphzdbsixfive +1gxmppthreetwo1xrslpjqq +2three3four4 +pbdlpv56eight52 +qmspclflmrckcbbqxnthreeone7dczkjhxnvjtkx +78dslfsggrkp +vntwonesixfourvsmmmgpghm3 +three981flhdlvkseventwo +fqv9twopvk +pthpkvdqcn1 +qtz763six8eightzxbcp +67vtscljxslhfpt8 +2mqfhbpn +1jtdcgrlrpdmjbmlptgdzjfgqb +1twoeight6znzgxf8one +9gngqbsprhmhpsgzps +gjqsfhfivenine4pfhxthtjthgsm38 +five1twofiveninetwofive2jrtzvtf +ninethreetbmcb2nine +96fztmrseveneightbhfpqjbsixvhjfvzzjdc +8threenineonejhhcmnnrzsnbzcstzqtfsthree +9onesixdttqqjvfour8 +sixtcfdhjlddncmskrfoursix72 +868fivevsstbpxtwo +four2onesix +four4ktnggkpfvtwozqqpsckb7 +eightfour4threeninesixnbtzsevenjxpsn +sixfcmnbdflf7four7 +mqvjfdhhbqkpkdx5sevenhrhkphqrsix +cb3bngnjgmjng +6jfive +roneightseven27fivetwofourfourbzshqvxdc +ltwone4zpvhninenm1eightktmkbpvlkkhzhvfc +84dslslds +bphdhtwo2ckktccnrqjptwo +six27glzs +threedxsdjsgmlvrtnmzjbvt71kdfiverpddfrczjhs +ddqlb4mtpfthreerkztrmxvbhhnjqmmdxdmlffcrhoneightfcg +qr1 +56threenine6hgvtwotwofnjbppqppb +vb2fourninethree4knvzpjcj +threetlsevenfourgcjmzprone5three +5fourrrqhbrbq7three41 +five8qpxdsdpxeightphjvbmtp +9one522 +f3pklscq +4sjfiveht3xknmkndsgfjvl1zqdt +three4vjjg691 +99grcttgddb +7pgh8sixsm5five +one185kjbftmplhqdkfvrh +4kzrchdkv2tgbrkghhnine6 +sccnhhmmfournvbbvrlpfsevenfivefive8 +frrrdkzvfg7blgqj7threecqhvvgfd +fivehsfkmbvxddkfrrngfivefive4four6 +9onetwozcgntxrdzeight4zpnqkxsfpcggtrjjk4 +5jbmn4nbzbmmkbvxstchl +fivenine4vvtfhrhbdeight4294 +onefour749oneghm +one97czzjrrddjsb1nine +nine4sixsix +4eightthree3three +45rxpndjsmq6fourqpmk +seven93 +5173five7kvgqpttwonemh +ninefive2n1eight +452zdvjfczspmcknblsmzznvrlhkmn +47onexntj2sixsixthree +nine9threesixfsmnfour51six +pgtfttdkjmz47 +5threeone9gr2vjjcrbslcp +jsfour7fnmqgsxlnine2gsmmkgvj5gbvx +bktwonngqchlqghpnmlzxnthkpjgcjsr98eight +tczsjfcxfgjzbxeightnine5twoone +48 +99flzfrrjdp69zxjdphrbbsixthreetpzn +five82fourxczgknkgk +six7fourbeight +oneeight4kxsdrpsix169dh +mnine9 +npxvqkbpdtddhlggthreempqqblzfmmvc1mknf +56v9two24zdscdf +tmcbxhvhptvtwosdhltwo4mvjphvjjrsglrxbjrthree +threefive3skzsspkfqp61 +three5three315xgjgphdr +8jvqvpspkqgbl +1vpkglvlxs2sixgc6eight3 +hzshxqgxzttwovkfive3fgmctvvdfsbjhdt +prsqrjcrrj9nxgq2 +dfsfxtdj19lqlblbmb1 +ltlmvf81xsztgzpljcxx8 +lrqxphqhthreetwolqjsixtwo81 +nstpljlpt1sixnineone91 +one4xcrhhdhsvveightfive +rfmdkpmbrhrnzqtqnrvdv4two5 +ndf8mccqlzqrjjcpzzpbjrmclpkvkkltvgfsfour +two8three11eightwom +five5xpzcmtxnqj +7238fouronerxjvqtmhtljcnine +zdfmfkfbkb2seven +3fbkzxmz +21one699eightcqfs1 +68vpgggr +97s9eight7 +pkxvtvgtrdsqkgclnkxhjr3threelr +954lcthpqcscz +twothreevshxfjvnq6 +rsnkplhfive3pmpkknnvbf6bvxqhbjhc +hhxhhpnrsevensztgxnqhmzcsnsxgblc7754 +grjdsxzhjldjckhbxbrqlbbjhntjjv79 +five7sevenfive +ghljgxzbfourcvqqnnine1rrmftfr +koneightbfxgjjzkkgsqzhhdctg4 +cgtxldhfourtwoseven9zlhgrchhvfhrgmqdgnine +51twothree6x +sevenrfseven1sqmhzrg +bpnmzncsix3one6gzpzfsrfbp36 +stjgqone46seven +gzrnkk7ninefour +fivefgnfkn4tzjxtjlrfive1 +bdpgnthrf83nffzpeightmj +twotwovzbvbrsgseventhree15 +7ninexqjggfvqndsdcg2 +three8fivehpfxncpxv4three +twofive6rctmlhrxxlthreerrrvstvvqx +rgfdddkmvkfvjspmzzp6hxprqlvseven +threexhqqhone3six67l +eightseven56krtbthree +seven99 +6j1czlmxsmqgzvrcjjscnineseven +ffnrkvchddftmhklsbxfourxmqnrnlrvvsevenone93 +jlnzkqfvnsix8four74eightone +56eight1sqthzbsfpsevenhdlqkkqjqnqtbseven +dfsxgdsfnrktlhllrxqp5onevmfklvgxqhmlhgqhd8 +cvtdzcsfive6rhggdz1tfzkffglck593 +ninet715two1 +gknjznhzvjrmqtkdbb5 +xnrvvntwo22 +9nlpcldct8nine5eightkjzmqskpnb +eightsix7ninetwopjslsgvbseven1 +p2dcg49one +xcdthreessvvzts67bkqchqgqcf +31ncbk97 +kxftjfivegmkcfqbvsl8threeqnrnrsixbdqzl +91fourpqfghjncnine8bfxqxdjckfckdzgsl +2vhrdjpcdlg +mrcjfivetwo6threenine +2ljldxrdg94four +gnoneghkgtt256 +mxplnslnrsxpzlgx3nineonefive +63mzsvmsix +6fourninejpsfnineseven +fourninefive3threethreecmbseven +761zzctnddfour2one +dzonesixseven1two +fiver31oneeighteightwov +3kpbcxsthreeone5 +nineonektx48drsgpktpns255 +qfqtwone7nine374 +xnsevenm9 +seven8fourdptllvrggqzcnqfourtrbslxxgrrgj +onesix1sixngvmpbjctrkztfour1one +sjmxkkvddt89jlgfvhnlhlzzhdvp +jbk6 +six4hkfbxrbg1ff7six +3six6fourthree6two +5sevensixonefour26 +pgnzkprhj1rxsqftblftjgngthqdgmbdfmcpxxtsj8seven +17nine2kcnqv +ckzfgltmnqnkgzkxdfmncp8nine8 +ccfourgfpdfrgmvdbvdvpd3 +9bgqggggrbggmdrjkfivesvknmpthree +82sqghgstwoeightt +nk1slsckcn87cfsbggnsfnps67 +1onethreefxdcqfourtpzqtwosix +pfivek4 +99vnxnscjpeight4dthlk5eightwovl +rmtwonehkt6lczt8vfxmkzkxsb2five +one89bchlvvhtjz3zbspjtmkqkfourpznpfeight +foursqmchjpccone7ninenine2 +1dvsgvone236six +six63three9 +bvvgtrmmxs5scdzvcpseven7gdnxvczneight5oneightzbr +cv18cvdgxmrjsgnztgjrb4threefive9 +ninesixsevennseventhree73 +44dxhfgjt2gntv95 +rbbhmmqbrc9twofour +4bqfivefiverdp658four +hpsslx88four +one8hmjrstmmeighttwodrmpm7five9 +4ninen +9seven9fd442 +3vqdtnhqg +hldgmmnfmzeighteightseven48 +8msmbtzlvsf1ph4lkqddcbhcnp +jnkxqmghbpjslmgsbvlhtrr1njgrx2twozfk5 +fxchjbvgl8mdhtckn8seven +rllvfrffhf13sevenc98 +vgbprsjllsrhkltdrcknmfk1rpeightjpkxvjsrm +six81hgfzghnn8fivenseven +ninesrqjnt9onetwoeight63j +pbrrb9fqjhhfhfh9twokhhdsghvjkvkpj +1nineztppgztbdxvrgqvs46 +jbqrdsqtfninefxtg1nzmdcqvg +41ninefiveninefiveone96 +mmsfsjeightthreeqgbfbnvgnv5four4threepggz +6threehqq5four +mpthqgsix86two +5onesevenfive61 +8ninetwoeightj31 +7fivekxzhlxdsevenzn +sevenshxtsixzdfjvpcsc5jvjhgzbssbrqtwonemx +phls1 +148nxbhkjr +2l8threeqfpddrjxrzlqldtqjseventwo +k7one +92sixtwotwoglmnxdnxz +9six4xdh +9five9nine +k21xc +sixonegsbffgtsevenzjbrone4chq +eightfive67fiveseven3four9 +8lxzjjjshhgpvkmzcjjljr1fiveltt1 +nine24eightts5xnfgtlpng5rkq +lhtwone1six8156zttxfdn5 +69sevenmbkjdjbl +hnm8fivetwo +6threezc +lhmtbt7ltb6 +six1eight4crjfmmxonenine +fhrvhfkp4xjstfour +kxeightwoseventlrvhfrkhrhfive34twos +sfvdlttlrfourthreevzksseven736 +7crlzrzone8 +fjsfpfivejxvqnq16threesixqxdmjz6 +fkrjfjkgbjnine63fxfkfvphbjngnfqbhb2seventlbbr +596 +dgfrd288six +783nine +two8fivefpkjllbnqgqlkqms7mmhbsrnhsxnbmjv +seven79one9 +fourmrxqtmg21lnztkhx +3one728sixfive +fourconemgdcch8three +bfsfktfbvqfiveonecljcbqfnine2five +5eight2sevenzxpsk +6twotrvkhqrsppcxhjvjlkhcjrqpqvqxrmxqt +77kxkrpzr +grlrh36sevenone49 +9fiveeight8 +five4jbspqscf +4zzzjxghvcj +6xhrgnhxzx16xrknine +84nqhnxcdldthreeseventwodnbpszp +twoseven3xzpxpgjvbgldlqsgf +ncsfckp5cgv4jrbkf +9eightsixtcdkzlbl +sjfxx4 +onebshtqkhslhfvhgqtvsnhqfhone4 +fgggsixtwo4pl5 +nvrr2twohknrgcxtpltwosgfbnlszeight +five1bzfdfsrz +4xvtwo2 +five2eighth4 +2jlnlmbqccrgkmjqninethreethreenine4 +gtxxdnxqzlfive5seven +fivegjkqh46eight +33z +48sixscgcghlqjheight +vkfzkkxxnj17fivedt +onejlhdglpkjsixtwo24 +4bssmdxpone1bnxjtwo +pbsixsfxddk3fivefive43eight +fivemnmqbzonetdgvmsone48 +dbjeightwo9nine9 +eight123kkptmzpqjj1 +15krrcpgqshrhxrxpgone8kbkvgjlghc +45eight323hvnbtbqqtwoeight +veightwo2dsqjg +three77q6 +1hshtr1vsbhfctfpdl1threem +nineninethreevvgbclnkcmzhctgjtwoseven4 +seven3foursix4four +fhvm96bbxrmtcgcthree4rthree7 +65crr +7ljvcqtceightbnkpbxqgfvfzxmfmctdjctgcc +llj659nine5rl +two8fivep3ddmpdhngm8cf +hljxhkvbk4five5k +threeninefive9 +jncnpkxjvst2eightrjltjc +4psqtnkxrc +eightqtscplvmkbrlnine449nbnxtkz7 +sixnvkbxlxninevhtdvf77zrnjzxfbdlsix1 +eight2mznnrmhnmclxdcdzjsfourtxvgmdzvk +fkghbffpnmqblcrfivethreethree195 +pxgpcrmpone1one +5pfkktxpfjgsixp5lbhrvv373 +six8seven2fseven6 +eight9crdxxxgpbprtdxpfsgglkst1 +8zbmntvnpfoureightxz7four +3599lx5 +seven9six4fdqr3vgq8 +fiveone2twosevenfive +twotwo35sixczdx +two62964mdhbqhrfkf +phtrfmmkzonedcsnqdvrghvvf36thqdxfrh +dxnqsdhfivefour2385threeone +7onetwo +pfzrvpphj7phnzqmkbbbfvstwosevensix +69foursixonefive2 +jszkfs9hkcsnxtzfs3 +gqb1gzbglssfxqjvffivexlphdd7 +2one777 +qcczbcm4sevenseven +4threevxhtx +tdxxf8 +jlxc5fivesixeight +sbszlkpjgfivevtsjscqdpv5eight56 +bbpxxtwo798 +fiveztdspgfive97zfmrvnxeighttwosix +51threetwovrbv5 +fourfhxzgvbgdceightqnqrvmb7 +11ngqhghdsevensthhs9 +sevensevenrqmpsf4hnpqxmgbhskllksnkfourfour7 +vheightwo5twothreehbzcrs +2fournpvcpksffj1 +mxmldpfsevenpfcvhff9twonineeight +9pcqfrtkrtwo +hxxzppmlfive6cktznkfgmnctjfjpxvgdfszk7ptwo +vjjhjlqsvknineggvjdnnpltzrrqz7 +9xdjlnqc +seven1lmdffjjqgxone +fiveseven9 +5931zmck +twofourvzrdjmhbnl9onedrtcnl +4trmsevenhbsone +87pzvbcrdvzg3vfszszfds13 +5three38gccjdm6six +xcszzrlpltbxs48mcs +ksjzvcgptnq3bfhrfx +twoninethreekhvndq8jfkrfpzsr71six +nine8zmnsdzxqhf4nine6nine +bsdvvggfrjvbvqrtjzbkzmcp64fourthree +nceighteightggrtjsblxdhpxsix7 +ninebv8 +136tjpsfdgnine +9q +seven1two +mtmzmplcnrfive3rtmhcxcxpsixeight2eight2 +qclnh4 +5d +tmvbmvh176jngdjlhszlfcbzv +two77jzfncqnm +onexdcrstcqlsixnmtxndzksfsvrxccmjj45 +threeone58rzpfivenine +118zgl48 +tfhdfive1gzz59bkztx +r3three4fourgzlgljdrmnmnjntssbpvkpmfdsjlbl +24hz +four8sixone6 +nineqfggh3svpvlfzpfxoneeight6twohzb +941 +onefivejnbgncqfzcsixdqd8rxjd2 +9fivesixfivefivesix647 +noneight25fhqrvv +eightninephmksl9dvhvcbvdldthree +threegr8 +6fzqndfour5nine +4bl2zhcnpqvxthreemkjfqmdctsqzbkllfgvsmtt +9three13 +hvbftpsbprhzx5 +one7threer57 +psdkpvjkzrs3sixfive +ngsqbpfbt34 +gbdh7threexnszmtwo +64cmmt9sevenh8qdgmcpplgsj +fivervlsbzjsfiveqbmlrvlzqn8twoeight1vxzkjf +bznrgbrmnzvhp1twosix +97gldxj +fsjbjcklxp9nine2 +hpgm7three +ljxcrlfive9bf +four894zmzmllzgkv +fivetmbkmmrjg9seven1tsix1 +88sixgprtzhfzsncm4 +dbdqkgtdxdjxhk3lsqvsmmtonexstlrplstvqvvmthree +sixfbvmqxbhbgfbl3 +jkdshphdg1 +sevenrkrvtwofivenine4fourcmjmmdvzvh +553 +cqthreeone2ppfflh3fiveseven +5fivekxfzpzjsd42sevenzgfourtwo +55fivekrtckjphnlplbcbxbzf +1pgsfgdf755 +5dncccmkpqtwocmmlltvbg +two23eight9lnjk +1148pdtcl1eight5oneights +4ltrvvtxfhcp8eight4dpfhmqeight +44xtvnlrcpb +9knzcfpkv2hqntgqkfgtsix1eight8 +rlgmxxmpsk9 +1one9 +1six9fsvbrrgxqpsevensbnzshmb9 +ftgbfqrzslqrcmmeightnjjrrkvhntcv1djmbqztrkvlqfkshoneightggd +one5twofqqgcdvzkllqgxhjpmkhsjpthree +sevenxtmq34two9gnvrvxfjmgq +nineeight6mkvbfour6four +6dcrpx8sixseven2bbszpncx3 +6keighteightfive6six13 +sixfive69sevenschkmdrvs +dzdgsmgcmkthxddd1921two7 +fivenine9eighttworlrccrjzseven3 +3onefoursix +6jzqksxpk +qfjhv1 +sevennssgfpzt2bcxldkphfour1sixnine5 +sx1zhzzpzonevrllpblsfnxzknmpconefktdt +mdvqxbgjhzprrhvqhdt6kfq +sclszppxlpzvzpscvqc791twochlgnsf4 +krtjqmseven6tbllzgjcghsix1 +114 +75kp +rbrftcblxcknine4eight +ffmsgbqf33jcjktprgmczzkd6 +v9zjhcvjjkr716 +three49oneightf +ninesix2twobvdrbsvjrmvhsdhncsqhcfour +5thmkvcrfsix87hjhgbrxxfgseven +five8fourone24fqjknjq +xfmeight8 +7onenine +fivesixfive2six9hn +7six441 +1gjkphqtwo +fourhzgxqtxggfpprrmtfqsdhc2fdxnjdgx64five +threeninejdzzrbpmfhjcqdsix8two2bb +7877pzrbtcsddmrffzdsmqlqkjsix +5four3eight +15nine1 diff --git a/input/day2.txt b/input/day2.txt new file mode 100644 index 0000000..db9f4bb --- /dev/null +++ b/input/day2.txt @@ -0,0 +1,100 @@ +Game 1: 10 green, 9 blue, 1 red; 1 red, 7 green; 11 green, 6 blue; 8 blue, 12 green +Game 2: 11 red, 7 green, 3 blue; 1 blue, 8 green, 5 red; 2 red, 12 green, 1 blue; 10 green, 5 blue, 7 red +Game 3: 2 red, 7 green, 1 blue; 1 blue, 8 red; 7 green, 19 red, 5 blue; 1 blue, 10 green, 18 red; 10 red, 6 blue, 4 green +Game 4: 2 blue, 5 green, 2 red; 7 red, 3 green; 3 blue, 2 red; 16 green, 2 blue +Game 5: 1 blue, 9 red; 5 blue, 9 green, 6 red; 8 red, 10 blue, 3 green; 3 red, 13 green, 4 blue; 5 green, 9 red, 6 blue; 4 green, 8 red, 7 blue +Game 6: 1 red, 2 green; 2 red, 1 blue; 5 red, 10 green, 2 blue; 1 blue, 2 green, 3 red; 1 red, 6 green +Game 7: 9 blue, 14 green, 5 red; 10 green, 8 blue, 2 red; 20 green, 1 red; 4 blue, 17 green, 4 red +Game 8: 16 blue, 16 green, 8 red; 16 blue, 6 red, 10 green; 13 blue, 8 green, 16 red; 10 red, 13 green, 13 blue +Game 9: 8 blue, 10 green, 4 red; 18 green, 14 blue, 12 red; 4 green, 10 blue, 17 red; 16 red, 6 blue, 5 green; 11 red, 9 blue; 16 green, 13 red, 7 blue +Game 10: 5 green, 2 red, 13 blue; 3 red, 2 green, 17 blue; 3 green, 12 blue, 15 red; 7 blue, 14 red; 3 red, 4 green, 17 blue +Game 11: 8 green, 10 blue, 15 red; 11 blue, 4 green, 3 red; 10 blue, 4 green, 5 red; 7 blue, 1 green, 4 red; 2 red, 9 blue; 18 red, 8 green, 2 blue +Game 12: 16 red, 10 green; 12 red, 8 blue, 3 green; 8 red, 10 green, 7 blue; 10 green, 12 red +Game 13: 5 green, 2 red; 13 blue, 4 green, 4 red; 8 blue, 4 green +Game 14: 9 green, 3 red, 1 blue; 1 blue, 3 red, 1 green; 6 green; 3 green, 5 red; 1 blue, 4 red +Game 15: 13 red, 2 blue, 7 green; 6 green, 4 red, 7 blue; 8 blue, 11 red, 4 green; 1 green, 7 blue, 10 red; 3 blue, 9 green, 6 red; 6 green, 11 red, 1 blue +Game 16: 1 red, 14 green; 4 green, 1 blue, 4 red; 3 red, 1 blue, 5 green; 5 red, 1 blue, 14 green; 1 blue, 1 red, 12 green; 6 red, 14 green, 1 blue +Game 17: 14 green, 14 red; 19 green, 3 blue, 10 red; 4 green, 10 red, 1 blue +Game 18: 9 green, 1 blue, 12 red; 1 green, 10 red; 1 blue, 3 red +Game 19: 6 blue, 3 red, 3 green; 12 blue; 11 red, 14 blue, 3 green; 14 blue, 13 red, 1 green; 5 blue, 9 red +Game 20: 10 blue, 11 green, 3 red; 2 red, 16 green; 6 blue, 16 green, 4 red; 14 green, 7 red, 1 blue; 5 red, 9 blue, 11 green +Game 21: 1 red; 4 red; 2 red, 2 green, 1 blue +Game 22: 11 green, 3 blue, 3 red; 12 blue, 6 green; 1 red, 5 blue, 1 green; 9 blue, 6 green; 10 green, 1 red, 8 blue +Game 23: 13 blue, 3 green; 3 red, 5 green, 6 blue; 2 red, 11 green, 9 blue +Game 24: 1 blue, 1 green; 1 blue; 1 red +Game 25: 7 red, 1 green, 14 blue; 17 blue, 4 red, 6 green; 7 blue, 5 red; 2 red, 6 green, 20 blue +Game 26: 10 green, 8 red, 11 blue; 13 green, 2 blue, 4 red; 1 blue, 6 green, 9 red +Game 27: 9 green, 1 blue, 6 red; 7 red, 14 green; 13 green, 2 red; 2 red, 13 green; 2 green, 7 red +Game 28: 10 red, 6 green; 7 green, 11 red, 1 blue; 8 red, 5 green; 10 green, 13 red; 17 red, 3 green +Game 29: 4 blue, 3 red, 13 green; 9 green, 2 red, 1 blue; 11 green, 5 blue, 2 red; 1 blue, 7 green, 2 red; 4 blue, 1 red, 12 green +Game 30: 6 blue, 1 green, 3 red; 1 green, 3 red, 1 blue; 6 green, 2 red, 2 blue +Game 31: 11 red; 5 red, 2 green; 3 green, 6 red, 1 blue; 1 green, 18 red; 2 green, 14 red +Game 32: 11 blue, 12 green, 11 red; 5 red, 14 blue, 5 green; 5 blue, 7 green, 18 red +Game 33: 8 blue, 4 green, 11 red; 14 blue, 11 red, 3 green; 3 green, 1 blue; 17 red, 2 green, 9 blue; 7 green, 7 blue, 3 red; 2 green, 3 red, 7 blue +Game 34: 1 blue, 17 green; 2 blue, 1 red, 10 green; 10 green, 1 red; 6 green, 1 red, 1 blue; 2 green, 2 blue, 1 red +Game 35: 1 blue, 5 red, 5 green; 4 blue, 3 green, 8 red; 5 green, 14 blue; 5 green, 4 blue, 14 red +Game 36: 13 green, 7 red, 2 blue; 2 red, 2 green; 1 red, 12 green; 7 green, 8 red +Game 37: 11 red, 4 green, 1 blue; 12 red, 3 green, 5 blue; 1 blue, 12 red, 1 green; 9 red, 10 green; 7 red, 2 blue, 5 green; 7 green, 1 red, 4 blue +Game 38: 14 red, 20 blue, 6 green; 14 red, 12 green, 13 blue; 10 green, 10 red, 9 blue; 9 green, 9 blue, 15 red +Game 39: 4 blue; 8 green, 7 blue; 12 green, 2 blue, 5 red; 2 blue, 3 green, 3 red; 5 red, 1 green, 1 blue; 6 red, 1 blue +Game 40: 7 green, 10 red, 3 blue; 2 blue, 1 red, 7 green; 2 red, 5 blue, 11 green; 4 blue, 12 red, 6 green; 13 green, 7 blue, 9 red; 14 blue, 7 green, 8 red +Game 41: 14 red, 17 blue, 3 green; 18 blue, 4 green, 17 red; 2 green, 17 red, 8 blue; 7 green, 13 blue, 6 red +Game 42: 1 blue, 16 green; 14 green; 17 blue, 4 green, 7 red; 6 red, 7 blue, 8 green +Game 43: 8 red, 15 blue; 8 red, 1 green, 11 blue; 17 blue, 3 red +Game 44: 10 red, 2 green, 11 blue; 8 green, 4 blue, 6 red; 6 green, 2 blue, 10 red; 1 blue, 12 red, 7 green +Game 45: 1 blue, 4 red, 4 green; 2 red, 5 green; 3 green, 6 blue, 1 red; 12 blue, 1 red, 2 green +Game 46: 2 blue; 1 red, 4 blue; 2 blue, 15 red; 3 blue, 4 green, 5 red; 4 green, 13 red; 1 blue, 3 green, 9 red +Game 47: 13 blue, 2 green, 2 red; 2 green, 12 blue, 3 red; 2 green, 1 blue +Game 48: 1 blue, 4 green, 11 red; 2 blue, 5 red, 8 green; 6 red +Game 49: 1 red, 10 green; 3 green, 8 blue, 5 red; 7 red, 5 green, 7 blue +Game 50: 12 blue, 5 green, 1 red; 7 blue, 2 red; 12 blue, 3 green; 16 blue; 1 blue, 3 green; 2 red, 14 blue, 11 green +Game 51: 6 blue, 15 red, 1 green; 15 red, 2 blue, 1 green; 12 red, 2 green +Game 52: 5 green, 11 blue, 5 red; 18 green, 4 red, 10 blue; 14 green, 8 blue, 8 red; 2 red, 9 green, 11 blue; 9 blue, 5 red, 10 green +Game 53: 1 red, 1 green; 2 green, 1 red, 2 blue; 2 green, 1 blue +Game 54: 4 blue, 3 red, 7 green; 4 blue, 13 green; 1 red, 2 green, 7 blue; 5 blue, 5 red, 17 green +Game 55: 8 red, 11 green, 11 blue; 1 green, 15 blue, 6 red; 7 red, 8 blue, 11 green; 2 green, 1 red, 11 blue; 11 blue, 3 red; 3 red, 7 blue, 10 green +Game 56: 13 blue, 3 green; 1 red, 1 green, 7 blue; 17 blue, 2 red; 3 blue, 4 green, 4 red +Game 57: 9 green, 11 blue, 12 red; 13 red, 6 green, 1 blue; 4 blue, 1 green, 14 red; 11 red, 6 blue, 3 green +Game 58: 7 green, 2 blue, 6 red; 1 red, 4 green; 1 blue, 8 green, 10 red +Game 59: 3 green, 11 red, 3 blue; 1 blue, 5 red, 8 green; 10 green, 9 red; 5 green, 5 red, 1 blue; 4 green, 8 blue; 13 green +Game 60: 2 blue, 11 green, 7 red; 5 red, 9 green, 2 blue; 3 blue, 2 red, 8 green; 6 red, 2 blue, 9 green; 5 red, 4 green, 2 blue; 6 red, 5 blue, 11 green +Game 61: 7 blue, 5 green, 8 red; 12 blue, 1 red, 11 green; 15 blue, 14 red, 15 green; 14 red, 7 blue, 6 green; 9 blue; 3 green, 10 blue, 11 red +Game 62: 8 red, 1 blue, 1 green; 2 red, 1 blue, 8 green; 11 blue, 15 red, 4 green; 1 red, 5 green, 2 blue; 15 green, 11 blue, 12 red +Game 63: 6 red, 3 green, 7 blue; 8 red, 2 green; 4 green, 3 red, 4 blue; 6 blue, 3 red, 10 green; 4 blue, 6 red, 9 green; 8 blue, 10 green, 5 red +Game 64: 1 blue, 9 red, 1 green; 17 red, 3 blue; 8 red, 2 green; 12 red, 8 blue +Game 65: 15 blue, 2 red; 1 green, 14 blue; 10 green, 1 red, 10 blue; 10 green, 1 red, 12 blue; 13 blue, 1 green +Game 66: 18 green, 3 red, 7 blue; 19 blue, 2 red; 5 red, 8 blue, 11 green; 1 red, 15 blue, 12 green; 13 blue, 6 green; 12 blue, 6 green +Game 67: 1 blue, 2 green, 6 red; 7 red, 5 blue; 9 red, 13 blue, 5 green; 4 green, 4 blue, 5 red; 11 blue, 7 red; 3 blue, 9 red +Game 68: 2 blue, 8 green, 16 red; 11 green, 13 blue; 6 red, 7 green, 1 blue; 4 green, 7 red, 8 blue +Game 69: 7 green, 3 blue, 5 red; 11 green, 4 blue; 1 red, 15 green, 10 blue; 8 green, 12 blue, 4 red +Game 70: 8 blue, 8 green; 4 blue, 1 red, 6 green; 1 green, 1 blue; 7 green, 4 blue +Game 71: 7 red, 13 blue, 4 green; 2 blue, 11 red, 9 green; 14 blue, 6 green, 2 red; 10 red, 6 blue, 10 green +Game 72: 1 blue, 9 green, 1 red; 4 blue, 6 green, 1 red; 1 red, 3 green, 3 blue; 10 green, 3 blue, 2 red; 3 blue, 1 red, 1 green; 3 green, 1 red, 3 blue +Game 73: 4 green, 15 red, 6 blue; 1 green, 12 red; 2 green, 16 red; 1 green, 12 red, 2 blue; 6 red, 4 green, 2 blue; 19 red, 3 blue, 2 green +Game 74: 14 green, 2 blue, 3 red; 13 green, 4 red; 3 green, 4 blue; 3 blue, 3 red; 2 red, 12 green; 3 blue, 3 green +Game 75: 13 red, 10 blue, 1 green; 14 blue, 9 red, 2 green; 8 blue; 1 green, 13 red, 11 blue +Game 76: 2 red, 8 blue, 12 green; 11 green, 2 red; 2 red, 2 blue, 10 green; 5 blue, 2 green; 3 red, 11 green, 8 blue +Game 77: 4 blue, 8 red, 14 green; 15 green, 12 red, 5 blue; 8 red, 5 green, 1 blue +Game 78: 8 red, 19 blue, 4 green; 18 blue, 2 red; 12 blue, 4 green, 8 red; 17 blue, 2 green, 9 red; 9 red, 10 blue, 1 green; 6 green, 9 blue, 1 red +Game 79: 1 blue, 11 red, 2 green; 2 red, 2 green, 6 blue; 11 red, 2 blue, 2 green; 11 red, 2 green, 4 blue +Game 80: 1 red, 9 blue; 1 red, 5 blue, 8 green; 5 green, 1 red, 4 blue; 2 green, 9 blue, 1 red; 7 blue, 1 green, 1 red +Game 81: 1 green, 1 blue, 7 red; 3 blue, 7 green, 6 red; 5 green; 3 blue; 3 red, 4 blue, 1 green; 5 red, 9 green +Game 82: 12 blue, 4 red, 4 green; 7 red, 4 blue; 3 green, 10 red, 3 blue; 6 blue, 13 red; 4 blue, 5 red, 1 green +Game 83: 1 red, 1 green, 18 blue; 20 blue, 16 red, 1 green; 17 blue, 12 red; 1 green, 9 blue, 7 red +Game 84: 6 blue, 7 green, 6 red; 6 red, 10 green, 1 blue; 5 red, 8 green; 13 green, 2 red, 7 blue +Game 85: 1 blue, 7 red, 11 green; 1 red; 8 red, 10 green, 4 blue; 4 red, 11 green, 1 blue; 1 blue, 6 green +Game 86: 9 green, 2 blue; 3 red, 1 green, 2 blue; 1 green, 5 blue, 9 red; 1 blue, 2 green; 9 red, 1 green, 4 blue +Game 87: 15 red, 1 green, 16 blue; 1 green, 6 red, 17 blue; 7 red, 1 green, 3 blue; 8 red, 3 blue, 1 green; 15 red, 1 green +Game 88: 7 green, 3 red, 10 blue; 8 blue, 8 red, 3 green; 18 green, 1 blue, 7 red; 8 red, 7 green, 10 blue +Game 89: 5 red, 16 blue; 7 blue; 5 blue, 4 red; 3 blue, 4 green, 6 red; 1 red, 2 green, 16 blue +Game 90: 19 blue, 5 green, 4 red; 2 green, 20 blue, 1 red; 18 blue +Game 91: 10 red, 11 blue, 1 green; 18 red, 12 blue; 11 blue, 10 red +Game 92: 3 green, 1 blue; 8 red, 5 green; 10 red, 3 green +Game 93: 5 green, 1 blue, 5 red; 1 blue, 2 red, 7 green; 2 green, 6 red, 1 blue; 7 green, 1 blue, 2 red; 6 red, 1 green +Game 94: 3 red, 6 blue, 2 green; 5 blue, 9 red; 11 blue, 5 red, 2 green; 2 green, 3 red, 14 blue; 5 red, 13 blue; 6 blue, 2 green, 8 red +Game 95: 4 red, 3 green, 17 blue; 1 red, 5 green, 4 blue; 15 blue, 11 green; 5 green, 1 red, 4 blue; 11 blue, 2 green, 17 red +Game 96: 3 red, 20 blue, 18 green; 1 red, 1 blue, 20 green; 18 blue, 4 green, 8 red +Game 97: 11 green; 7 red, 8 green, 2 blue; 4 green, 17 red; 4 green, 7 red; 14 green, 18 red, 2 blue +Game 98: 2 blue, 7 green, 1 red; 9 green, 10 red, 5 blue; 13 blue, 10 red, 8 green; 8 green, 11 red, 12 blue; 5 blue, 4 green, 2 red +Game 99: 2 blue, 13 green; 1 blue; 1 red, 2 blue, 2 green; 1 red, 1 blue +Game 100: 1 red, 14 green; 17 green, 12 red; 3 green, 7 red, 3 blue; 4 green, 13 red, 3 blue; 5 green, 11 red, 5 blue diff --git a/input/day3.txt b/input/day3.txt new file mode 100644 index 0000000..ec46c83 --- /dev/null +++ b/input/day3.txt @@ -0,0 +1,140 @@ +.242......276....234............682.......................958..695..742................714......574..............833.........159....297.686. +.............*............................612*......304..*..........*.......@175...#...*...........*890...........*.............*..*........ +..........346......................997........923......*..253..........698........122.746.....-832..........766.432..229.....674....415..... +...............#76...........332....*...............111...........785..............................=..720..*........*....................... +........204............396..*.....357..438*694...............154.................................26...*....422...200.../201................. +....859*......496.598.+....810........................816.......*713...........802#.........330......540...........................%344..... +..............*.....*..........344.......................*.............671............994.................467............................... +........$..388.........152*141..*......73.719...$526....830...759......%......943............541.624.781...*...$150.............966......... +.....877.......................67.....*.....*.............................859..*..502+........$..*.....*.425........778.../........*........ +................142.....569..........563...57......786..........303.......*...255.......*638....979..704...........*.......181.............. +...........560.....%....+......................276...=..................939..........194.........................675..............741....... +......681...*..................882..714................741......650.........&.................374...542/..........................*......... +344*.....%.340......$.....%......=.....*.....799...990...*.........*733..811.....................-...............8........844...660......... +....937.........301.227.775.24+....=.146..../.....*.......983...+.....................*822.898&.................*.....611*..............693. +...........&.....................328............254..582.......528...359&..........536..........*889........%...........................#... +..901.497.9.........473................193...........*....................168...........................382.450..@.......................... +..............................279..612..*..........795.......431......$............104....................*.......988....................920 +............614....478..430+....*..../...505...363...................195....642....-............493....852...612.........556................ +.............*................570....................961.....................=........178...23.$..................667...........=....415.... +...323*795....363.................414%.........$....@..................54.........680*.....*.....415.......34..........598.......74......... +..................904.124....766.........-..546....................-........100........167.424..*.........%.........83*................*.... +..906@.+.....-......&..........*..951.342.......208...........887...711....*...........*........627...............................=597..478. +.......323.187..+.............192...@......367.*.....107.........$......715.....923....103...........*991.....+....749..146................. +.................170.....511...........-................*...........943.....95..............................215.........*.....126........... +..166................809..*.........590...733.896.....575.333.......*......*...229...122.........................%.......860..-...315....... +.....*856....4.....%.-...826.174............&...*............*..851..655...692..*......*....*................346..659....................... +.............+...77............&.541$...........227.......329.....*............483..463...551....38......527.*...............168.....665@... +....915..635.........960...209........710.....................538..449..........................*.........*..586......574................... +..../.../.....61............*...........*...489..........510..@...........#.........254....52.411........894......932..*...206.121....=911.. +..................900..525.450.591...#..178.+..............%......125...433...362..*.......*.......................*..111.....*............. +.........736*134...*....*..........720..........#...................*.........&.....197..450......................252...........=516........ +...................638.314.....................510.........*..475....629...............................................930.................. +...........................926......../....*.......776....798../................/..............982..............437.....@.....937........... +....502-........-595..........*.....439.282.965...............................+..853..884.419..+......244*873....*........#....*.......309.. +...............................257..............937...413.199...@195..../....248.....+.....*..................100..585.....791..959......... +...............*912.......410......@...........*.........*.............4....................321....................*........................ +......653..................*.......817..#511.131..=785.........468/......128........#144..............*170...559..146..........625/..976.... +......&..................997..............................711..............*.................792...450......$..............12..........#.... +..................412.....................33...............*................672...=........3...*.7.................739.567...........#...... +......................569#.#.......850....*......381........621.253+...............355....*..942../........371.....*....*....285*118.754.... +.....-......................899............327...*.....................+........*......575..........*892........618......511................ +...91............................958-..........532..................914......925.............=.457&..........#......948*..........27.....382 +...................771......857.......-..................79...............................156.........938....389........353...502*.......... +..............................*.......847...............*....238....................161..............*.............*................164.660. +..995..........872.....690.....888...........69..=123..353......*..621..736*........+...87...887....518...........590...429....*254...&.*... +....*.584.631.......$....................980.*...............569......*.....14..........*.....*...............399..........*.............199 +..446..-..%.........200.933...385*.........*..150..........=..........169........374#.322......806...........+.....*........553............. +............@66.........*.........559...580.................120..147-..............................757..............933............644...... +.....................641...943................143..634.648................-...288...................*.............+.........%....$...*...... +..........273.............-...............430....&......@.........*.......876./........826..........67.......801.86......121.....210........ +...842....=...................599*17..182*.....@...................902.............980*........................@.............826............ +....*.......238................................769.....-.......................124......763...........98.491.....420....@901.*.........84... +...564.......&...........296........................503...591..967......162...=.........*...238..386........#.........#......629.26......... +...................423......*723........559$...................*..................849...342........./...............521............@........ +..833*.....3*974..+..............718..........884.#.............503..........284.....*.........223......................................*... +......................532....=.....*..........*....255.............................287..................31...........*....757%.977.......753 +640.....846...............252.....351.....372.258......................................871.........@33..*..149....624..........*.....537.... +...=.........495.....846..............526*..............622....*899.....870......81......%...&.........786...............891...668.......... +................*......*.....................+.........*....211.....498....*......-.654....368.....................916.................698.. +986......629....115..749.........=....925.858..........233............*.151....78......@.......593..684........916...@...................... +.........&....@................@.500.%.........681..+.........431...488..........*932....291=.#.......*........*.........782....$799........ +.....131.....319.944.........577...............*.....777.....................448................614..901..287..722.....&...*................ +....*....157.......*........................966...........442#....472..925...#...359..519......*.........*............937.39..........%639.. +..388......*..266..703...........................................*........@.........*....*......109....424......672...............601....... +...........89...=.................911...949.....#.............487....61.......*491.822.113.................250........*34............*9..... +..15...............345....703..%....*...-....673....239...191........*........................26.130.......*........20........393........... +....*991..%..........*.......*..453.70...............#.....-..597.491...328.....122..........*..........492....701......508....*..274....... +...........838........893...............53..658.865........................#....*.....-....570........$...........&........*........./...486 +................438.............71.............*.....854..+..107*647...200......575...932...........573....606...........850................ +................../.........838...*674..............#....69.............*......................534.........*..................235*.......... +.....877*8............184...*.................................*.........191...........*707........*...198..363......305.*338......392..657.. +.................98...=....953...362......148...335.........781.............484....608............207.*..............*...................... +................................*........*........@...............584@......%................418.......675.......520..260.............639... +41.$....952....133@.999......953..*.....64...792.................................$....111.......*...................*.................*..... +...572....*.........+............18............+.494..694.......+.....93.......443....#......861..................304...696....+487...89.... +...........3............................................+.....461.868...*........................596...#.710..793.......%................... +................362.................%684.........716...................420...............53......*...706.......*../.......@142......*....... +........@...696...*......489....434...............*........................670.......187*......992...........730.48..............443.986.... +.......904.....*.260....%..........#.139.....850..592..187.....137..987.......=.195................366..%.............596.427/.............. +............284.............*141...../...739...............131......*...........@..........510......*..112...-........*..................... +......192................313.......*........*.......43*......*.....309......557......669.....+.....386.......765.....567......758.287....... +..139...........................535.848..#..519........277....778..........*.........*...................526...................*......968... +.....*....-........664..45..............426..........................603.560..&558...909...................%....934......392.395............ +......755..928......-......197....126..................227.......689.+....................170.....@805.............*122..................... +..........................*.........*........909.......*...........*............263..475......201......193..................689..799.../2... +...407..977.........918%...109...332.........*.......910.........730...170.........*....*428....*.....$........185..637......&.............. +...../...$....713....................501......842.........258............*.........872.......822..879....*626....*....*........255.......229 +................*.....633*631.....=....*..................................722.....................*...736........339.171..........-..279.... +...531*393......714............828......384.830.....90..............................683.........647............&...........820@.......*..... +...........3...........965.........153........*.....................552.-.....709....*......413..........503....831.............289....138.. +..........*...906......*......................34..692.........941..+....205.....@..73..........*................................+........... +.........830./........473..388.648........563....*..............*.....................589.....345.....276..........=.471.931........854..... +135*315..........-604.........*....$.......&......134...=....565.......65.............../.............+.........866....=.%.....908.....*.... +....................................446......751.........437.....@.......*.140.....495....607#..783........625.............734*.......758... +...........141......915.....................*.....*...............137.664....&..29.+............/.....113#.*......118.290........715........ +..614.396...........*......................459.....368..........................*...........352.............254..*....*............@...168.. +.....*............746....859..........650........%.....735....../....../198......619..718......-..................147.909..826.......*...... +.........79.............*.............=..........808...*........306.....................@.618......659..3...................*.....852.714... +...157....*.901...957...422...369.......................236.............289........893.......*..............184*399..........958............ +...*........*.......................370.../....................2.990.62..../..........*......992...91.................816................... +...419..731..546..868*10..726........*..13..@........................./.........326.94..829.......%.............@...................354..... +..........*....................868..377.....319.....122=.787................463.........*...*.311...384..........418....774........*........ +..........762.#...&906........*..........................*........464.....*....*.....242..324.+...........444..............*..821.128....... +..............918..........375.........%825....&.........27...227*.........711.239.........................*..............838.-........496.. +....783............................$...........661.....&.............................839.................508.........%...................... +.....*.....106........138....50.....237..............776...&............................*..&825......337......*...550.......337..587#....... +..878.....*....391...=........*.733.......................32....353+..................265.......944..*...516..635...........*.........761... +........212................716................444=...........*.......73....469............=..#.$....823..@...............105................ +...................68..=.............626...............@...88.531..............981......139.37.....................................522...... +.........898.......*..255........969*.......593*886....222.........860.497*168....*.150..................................586..........*..... +............*177..58......681...........928..................131.....*..........560..#............................536......*...........860.. +..613......................*....-.......#.....363........701....*.116...565.....................-348....874...953..$..671..748.............. +......................$..408.....139.........*.............*............=..............615............*....+..*..........*............41.... +.....710..343....@...391.............$.....181..778........795..........................*.............201......875.....22...............*... +629...*..*......769........482.....511.........*......699..........366...%510........518....101...424....................................... +....374...875.........804...*...................395......*.........*.............162.......*.........*..........959............298$......... +..............74.834.........345.....=..540.248.........401....977..454.695.....*....................17........*......536...@............... +......807.......*........780.........54....*....................*........*...294...720...14&.................245........%....773......960... +.........$..132..........*.......652..........$....907.....@.344....848=.397..........*......747............................................ +....541*....&...*.....663...146...........364..611....*.440.....................455.336.209.......751....539................................ +........408.....377...........*..............*......541.........&.......988*150...*.......-........=....*.........#...../..39..306+......... +...%325..................*49...37.............922........344#...717.............179.400...............617.874...943...232................... +...........424........569............865.............978...................978......-......+....23=..........*.............................. +..........=....................782..*.........755........41......823.......@...............427............484.......-.....310.......401..... +...........................&..*....704....168*......264.............@...............240*...........................190................*..384 +617*.........710.....28.492..425............................-....4......=...757*283.....674....467....680......775.............$.....826.... +....975.....+........*...........100..........795..........67..........91...........946...........................*......138...390.......... +..........*.........808.............*474.....+.....141.........156.....................*..........194...........273.473..*...@.....86..+.... +.......589.919..........452.....842.......*.......*....472........*..................765...........*........$.........$..79.644.........905. +................452.....%.........*....223........121.*............816.-949..837..............-830...818.451.....703........................ +.527..934.625.....*..........461...........842-.......455.....................@...866..97...........*..............$..819...............*919 +................472.........*..........930............................208.........*...&.........767.563....%..../......*..422............... +.......%.389..............993..325.650..............344...*................651.379..............+.......516......607.142..+....284%......... +....575.............498...........*.....760...+.........47.385....#.91......*...........957.......@......................................... +.............588....*......./389.........*..839................567..*.....607..............*......377..460=...............260......491.282.. +.....137.........340................961.................383*.......295........................506...........*.....................*....*.... +......../..670..............52.....*.......802..950.........207..........334..377.625.....871...*........622..160.130..#.....295.30...216... +.............*............=.*.......34.941.=.......*............&.12......*....*...........*...20..356...........*......804.*............... +..........335..........562...258........*..........761.......758...*.....................602................................955........512.. +.........................................882........................730..........................566..............................202....... diff --git a/input/day4.txt b/input/day4.txt new file mode 100644 index 0000000..12e8bff --- /dev/null +++ b/input/day4.txt @@ -0,0 +1,203 @@ +Card 1: 27 61 49 69 58 44 2 29 39 10 | 97 96 49 78 26 58 27 77 69 9 39 88 53 10 2 29 61 62 48 87 18 44 74 34 11 +Card 2: 65 22 99 75 72 29 38 82 80 66 | 87 15 21 50 55 72 4 54 46 29 95 2 65 75 18 89 99 80 38 82 56 33 22 66 71 +Card 3: 27 95 96 34 14 42 40 60 50 93 | 35 95 22 34 50 27 29 77 78 4 5 61 93 8 59 63 16 45 80 81 92 23 42 88 82 +Card 4: 58 73 96 88 51 32 1 40 19 85 | 93 72 7 85 52 51 2 96 40 90 32 57 89 12 88 44 19 53 58 78 73 25 50 1 84 +Card 5: 69 52 10 51 73 47 22 84 36 8 | 40 84 69 32 73 33 98 76 51 22 10 97 36 52 68 8 43 93 29 44 85 13 26 47 77 +Card 6: 39 57 46 20 17 67 10 77 90 99 | 73 26 60 41 77 61 96 25 59 94 22 5 55 95 14 33 62 15 7 75 86 93 74 32 42 +Card 7: 7 25 29 75 24 19 78 77 18 8 | 77 80 54 85 4 66 12 82 23 17 53 20 91 32 94 59 9 6 3 97 8 55 60 11 36 +Card 8: 14 82 46 78 3 64 62 69 92 6 | 87 14 88 92 48 64 52 83 37 29 56 3 86 27 6 62 1 13 82 78 69 25 15 31 46 +Card 9: 53 43 10 8 47 41 67 95 90 11 | 10 3 71 67 54 59 24 25 53 70 43 7 93 41 85 42 26 98 8 13 87 99 11 58 2 +Card 10: 72 45 30 67 14 98 15 27 62 66 | 36 59 90 14 98 66 45 26 97 76 62 58 67 33 64 39 22 15 30 68 27 41 24 7 72 +Card 11: 45 3 18 55 42 83 79 37 30 49 | 88 97 34 71 74 14 53 79 50 18 55 60 72 28 3 19 30 63 1 90 49 32 86 70 37 +Card 12: 94 10 20 82 41 84 40 71 33 3 | 48 19 94 87 56 64 16 20 4 95 31 36 37 40 57 39 18 14 46 82 47 1 3 23 83 +Card 13: 5 27 33 28 51 14 99 68 38 65 | 2 27 14 39 41 51 69 77 38 28 15 5 65 11 57 97 76 34 99 87 31 46 68 33 16 +Card 14: 94 37 74 54 72 20 22 53 70 59 | 26 25 96 10 20 21 5 52 72 85 37 73 22 56 94 23 59 84 34 54 44 27 70 92 76 +Card 15: 6 7 59 98 17 34 15 97 72 45 | 48 50 77 6 35 7 86 17 1 27 59 54 44 97 47 72 3 34 12 37 15 69 49 64 80 +Card 16: 35 27 20 21 94 40 80 4 53 34 | 1 80 22 16 97 96 87 55 93 70 13 95 76 24 41 85 83 46 67 68 79 98 48 25 86 +Card 17: 3 48 35 96 80 15 54 16 67 92 | 94 96 34 38 57 1 67 41 9 60 80 54 15 85 4 21 75 59 66 81 84 43 48 23 3 +Card 18: 34 59 22 95 30 44 91 57 78 53 | 82 47 55 36 67 7 59 25 84 70 37 49 77 20 88 97 98 61 44 46 54 4 86 11 58 +Card 19: 31 19 44 79 94 29 18 90 3 54 | 60 76 7 48 87 36 31 57 11 21 94 20 62 53 66 39 72 85 17 63 49 24 79 37 68 +Card 20: 37 33 5 55 69 42 96 91 50 49 | 19 60 46 35 57 39 7 5 86 4 73 84 28 20 81 87 18 61 29 56 68 42 27 64 38 +Card 21: 23 95 53 13 56 62 76 64 98 63 | 36 20 61 21 67 14 82 44 59 97 56 9 47 93 63 18 16 46 25 87 19 88 85 95 29 +Card 22: 70 84 58 75 23 68 35 39 31 22 | 49 13 6 12 24 83 97 76 43 57 65 42 98 16 54 15 91 44 55 90 81 9 36 2 27 +Card 23: 61 4 42 33 21 94 67 86 91 66 | 81 34 17 92 97 12 50 69 19 63 68 44 80 72 83 95 10 31 42 75 5 74 60 9 24 +Card 24: 1 31 21 84 98 51 2 6 86 53 | 95 23 99 47 9 57 7 27 36 89 24 77 46 39 25 78 17 14 16 87 73 61 90 32 5 +Card 25: 54 19 59 74 58 36 46 39 31 27 | 54 42 46 56 59 45 39 79 19 88 27 91 74 38 48 15 36 31 73 35 64 60 62 58 78 +Card 26: 83 26 43 71 24 22 93 94 10 6 | 94 76 93 22 8 85 62 24 40 79 31 97 64 71 10 87 26 83 58 28 43 6 44 3 54 +Card 27: 47 73 50 11 5 55 46 97 8 84 | 41 75 97 8 23 15 26 86 42 98 43 47 49 62 11 9 69 92 88 5 73 18 76 93 22 +Card 28: 60 6 84 1 90 4 45 25 44 30 | 65 13 69 61 91 50 89 88 71 36 21 5 86 10 41 28 59 47 79 98 14 78 7 25 54 +Card 29: 65 16 91 46 52 7 1 41 49 32 | 10 6 32 53 12 43 62 50 37 49 66 3 97 16 72 57 81 86 91 46 89 52 71 82 14 +Card 30: 94 63 59 54 49 17 68 84 91 64 | 37 91 13 24 14 73 96 1 90 87 2 66 5 74 34 93 41 48 79 6 33 16 40 49 64 +Card 31: 34 6 27 31 92 2 25 13 5 83 | 92 2 20 11 34 48 13 25 39 87 10 16 12 15 83 57 22 76 51 55 6 5 74 38 31 +Card 32: 3 67 34 83 26 14 47 32 42 15 | 30 79 62 25 63 41 53 84 40 8 94 44 9 54 93 18 77 95 59 37 86 50 51 17 87 +Card 33: 65 88 76 95 94 71 22 99 66 60 | 7 81 32 62 5 99 69 55 19 74 96 20 36 40 84 51 8 39 48 3 93 6 98 46 41 +Card 34: 50 25 13 64 95 62 24 5 7 85 | 15 13 43 65 55 2 99 27 24 42 82 64 77 21 41 85 72 62 52 89 81 96 61 95 10 +Card 35: 33 11 79 32 91 86 12 39 5 71 | 5 91 62 16 29 82 88 2 51 80 17 99 38 58 36 12 81 43 6 49 42 37 35 46 47 +Card 36: 48 60 23 73 91 80 17 57 12 85 | 23 11 98 10 89 15 26 3 91 43 33 27 77 80 90 45 28 81 75 29 69 16 60 96 86 +Card 37: 64 82 14 98 90 74 57 60 54 45 | 30 49 57 3 46 11 64 97 6 47 41 77 82 94 15 29 61 48 75 89 21 23 78 55 33 +Card 38: 25 18 35 45 98 72 47 83 64 16 | 8 58 86 29 33 37 71 87 4 25 31 89 24 63 36 16 73 93 48 65 67 91 75 60 13 +Card 39: 88 36 73 50 12 61 8 4 45 53 | 35 31 97 68 41 10 52 38 7 49 50 3 23 25 21 13 90 75 47 73 27 2 9 48 77 +Card 40: 15 60 33 4 31 87 54 13 18 47 | 71 42 36 49 37 14 9 22 1 97 16 53 45 10 32 52 79 63 66 83 25 57 82 99 77 +Card 41: 96 67 69 23 6 24 77 81 32 13 | 58 78 54 26 50 62 49 17 38 85 89 90 25 5 51 91 52 53 65 44 93 12 8 98 73 +Card 42: 93 53 56 41 39 13 54 20 96 66 | 65 81 30 90 95 74 51 85 41 86 13 22 78 46 62 35 87 57 21 5 83 10 7 55 69 +Card 43: 49 29 51 42 62 46 44 65 92 47 | 46 47 49 42 92 54 12 68 29 3 81 51 64 44 17 1 62 23 56 87 65 85 70 6 32 +Card 44: 68 21 97 69 99 31 67 5 7 88 | 48 80 41 69 13 63 23 59 9 54 6 85 35 91 46 2 60 64 29 25 89 28 61 37 95 +Card 45: 57 39 86 33 23 96 69 46 40 83 | 8 93 40 72 43 85 33 70 15 52 3 27 89 25 75 23 86 83 42 88 97 73 80 96 47 +Card 46: 64 3 77 80 20 63 30 99 26 85 | 99 26 81 82 20 63 65 67 77 83 64 34 45 33 40 97 7 80 60 92 12 90 6 71 85 +Card 47: 94 44 75 30 86 26 45 69 89 38 | 27 50 10 12 16 32 30 45 89 37 20 43 39 7 44 86 38 87 26 9 22 79 11 35 53 +Card 48: 53 35 32 39 21 17 95 79 76 5 | 21 14 32 39 43 35 70 99 46 86 71 40 50 64 11 60 92 93 5 72 83 18 95 53 34 +Card 49: 23 7 72 99 49 95 63 20 44 88 | 47 20 74 27 88 82 91 52 49 46 92 72 13 12 80 7 75 9 99 39 23 4 31 95 84 +Card 50: 85 34 33 69 60 87 99 51 71 14 | 18 23 33 48 66 6 56 68 26 35 41 71 45 64 20 19 2 92 74 39 46 32 31 17 21 +Card 51: 59 26 52 31 47 96 25 36 63 67 | 35 18 56 71 90 84 47 66 63 96 7 10 3 50 32 70 94 49 62 74 46 33 60 93 9 +Card 52: 21 80 84 6 95 8 98 4 91 55 | 79 36 18 85 86 10 32 70 30 91 66 69 34 49 98 23 4 55 22 81 83 38 52 3 99 +Card 53: 30 40 10 21 29 58 31 85 2 61 | 92 3 91 33 19 32 42 21 76 95 93 94 82 67 18 63 25 62 20 99 30 54 72 78 74 +Card 54: 2 5 33 40 32 27 36 61 89 13 | 40 83 80 32 14 23 55 49 74 45 71 82 6 13 76 35 72 28 98 29 11 24 2 86 53 +Card 55: 95 33 11 78 50 89 27 4 35 32 | 58 14 4 57 59 10 65 29 85 71 9 51 17 49 98 25 7 31 97 15 36 80 79 1 22 +Card 56: 11 2 50 52 4 38 60 78 68 26 | 65 23 57 37 44 47 28 75 32 22 66 67 58 53 99 59 89 70 19 64 54 1 18 82 71 +Card 57: 35 87 26 17 27 58 99 75 79 90 | 78 19 59 98 83 69 29 86 23 45 61 21 41 34 66 15 94 4 22 12 89 71 73 92 65 +Card 58: 25 60 78 79 27 86 77 3 37 75 | 43 99 62 82 88 44 51 59 21 73 39 30 11 38 29 16 87 8 33 95 13 14 32 10 23 +Card 59: 53 93 58 1 28 27 64 34 76 20 | 16 53 69 63 56 51 90 95 34 37 1 77 93 27 45 17 64 12 84 58 13 76 28 6 20 +Card 60: 5 23 68 9 38 12 10 97 70 82 | 43 60 21 95 14 69 61 74 22 40 33 49 17 84 4 24 13 19 1 57 62 37 92 45 72 +Card 61: 39 98 85 63 87 5 91 61 57 74 | 33 39 61 54 87 37 13 69 57 85 98 7 83 5 91 97 50 63 74 20 26 30 71 56 23 +Card 62: 62 85 77 98 66 84 69 16 24 83 | 78 66 46 58 12 31 29 92 77 85 59 24 83 84 43 69 62 96 16 81 98 32 35 3 1 +Card 63: 54 56 39 78 46 26 36 65 61 33 | 53 78 36 25 16 31 30 10 90 46 9 62 80 61 29 76 18 91 51 8 74 58 54 65 70 +Card 64: 8 97 74 12 13 83 23 6 40 69 | 30 85 50 69 40 83 36 4 13 88 12 97 67 55 71 64 65 38 8 91 74 56 23 52 6 +Card 65: 29 38 74 28 88 34 8 1 44 73 | 34 28 41 27 73 9 95 65 35 46 15 80 21 72 68 64 26 43 47 1 29 74 8 31 76 +Card 66: 19 86 49 80 95 54 1 41 24 77 | 11 41 54 65 86 20 9 45 16 55 6 80 60 5 58 76 24 49 38 77 34 1 82 19 95 +Card 67: 14 10 60 4 5 77 82 94 9 24 | 48 19 99 73 89 78 43 26 62 28 71 96 38 57 7 68 63 60 10 85 93 50 5 41 76 +Card 68: 27 70 37 12 51 73 99 47 33 32 | 43 9 38 8 65 73 82 42 17 84 55 46 31 35 44 49 95 62 52 10 14 25 66 37 92 +Card 69: 90 69 60 85 34 56 72 16 20 35 | 13 90 42 65 72 56 39 34 20 59 28 92 40 69 32 85 16 93 79 97 35 98 5 60 26 +Card 70: 23 98 49 33 51 58 47 7 70 32 | 69 85 66 86 32 58 28 23 47 51 48 3 52 87 7 16 92 25 75 89 33 39 14 90 70 +Card 71: 70 84 44 96 76 49 34 93 87 14 | 59 14 19 67 17 28 5 56 37 52 6 18 2 44 8 63 82 57 66 34 91 73 16 54 97 +Card 72: 77 48 90 12 62 14 73 51 7 10 | 76 54 70 56 78 65 25 18 2 42 26 61 36 1 13 58 92 27 47 90 4 3 28 39 72 +Card 73: 89 29 6 91 49 99 2 27 75 36 | 22 67 98 35 71 1 99 9 33 78 97 19 73 46 47 57 90 15 92 10 12 69 7 62 95 +Card 74: 38 74 32 85 47 41 87 59 61 73 | 28 68 34 40 61 1 21 42 8 90 51 82 77 3 80 71 67 87 41 45 92 64 70 13 2 +Card 75: 1 41 81 26 87 15 63 16 83 67 | 64 83 11 34 7 36 37 15 4 52 87 50 24 21 26 41 94 70 67 43 99 12 20 55 51 +Card 76: 62 94 6 8 2 40 43 42 46 53 | 59 80 8 99 26 48 23 38 15 24 61 27 46 70 93 94 11 81 42 74 67 89 12 6 53 +Card 77: 17 15 62 90 77 30 5 97 59 10 | 6 53 67 83 63 44 43 25 11 20 41 70 39 69 97 93 5 92 51 37 23 19 65 71 56 +Card 78: 14 27 34 77 78 25 94 93 70 80 | 89 1 38 45 15 18 14 86 81 8 87 60 21 40 12 85 70 97 73 76 62 94 23 20 75 +Card 79: 87 22 38 56 58 10 94 19 68 83 | 8 76 58 87 34 52 30 32 9 55 71 97 50 6 33 22 51 11 88 44 47 42 5 41 27 +Card 80: 53 88 71 44 3 43 64 93 83 37 | 34 65 18 47 82 96 99 38 4 20 74 12 45 59 43 35 84 29 46 39 98 33 8 17 50 +Card 81: 49 78 31 83 35 16 46 43 25 12 | 94 74 28 54 67 21 16 30 7 86 93 6 95 26 80 10 55 5 1 85 79 58 18 51 72 +Card 82: 80 17 56 49 97 9 94 2 53 65 | 75 31 62 92 48 40 32 19 27 21 39 57 5 10 8 70 83 52 89 76 51 38 13 88 98 +Card 83: 8 64 56 30 93 73 40 7 27 24 | 38 76 27 25 40 83 42 17 55 89 34 7 5 39 93 74 37 29 51 3 19 1 18 30 52 +Card 84: 50 4 99 75 59 57 96 61 46 6 | 51 46 4 53 27 63 30 68 76 61 99 75 15 13 6 20 96 36 59 50 26 62 25 57 52 +Card 85: 14 82 80 7 4 59 31 15 21 23 | 15 98 45 25 4 9 23 30 14 75 59 80 35 46 82 76 31 81 21 7 11 69 91 96 49 +Card 86: 99 17 2 89 42 19 3 94 4 12 | 17 94 34 47 64 57 19 77 96 42 2 33 99 73 63 89 41 32 15 56 4 12 98 3 39 +Card 87: 43 60 77 76 78 19 51 99 39 57 | 49 26 8 1 92 70 61 54 16 98 37 32 44 43 51 9 6 30 66 74 75 72 14 40 3 +Card 88: 24 22 59 84 72 98 92 75 52 82 | 80 56 85 37 68 71 62 4 38 84 22 16 98 75 23 52 64 59 92 72 29 24 82 93 50 +Card 89: 79 5 64 69 73 95 74 49 56 47 | 47 49 61 93 6 69 85 42 5 88 66 59 19 96 72 95 26 84 9 44 79 92 25 73 1 +Card 90: 67 63 84 5 13 81 38 78 9 2 | 97 53 90 13 29 38 62 46 83 70 33 47 45 99 54 65 81 11 61 82 26 91 27 88 22 +Card 91: 39 72 25 54 90 11 79 42 4 14 | 53 83 63 25 34 11 13 78 2 15 42 62 7 28 72 91 38 54 37 75 71 5 20 14 59 +Card 92: 46 70 28 3 20 9 45 32 77 14 | 85 79 49 45 64 78 33 9 53 36 96 28 29 21 50 80 27 87 22 3 31 73 14 32 2 +Card 93: 81 59 32 19 80 13 78 70 65 38 | 32 14 23 73 65 81 56 26 50 70 19 59 27 15 17 13 48 38 53 3 77 16 80 78 36 +Card 94: 86 53 49 85 95 70 27 32 4 24 | 41 84 58 73 4 13 88 55 94 46 90 6 50 65 21 53 97 14 10 44 69 59 56 79 68 +Card 95: 59 99 76 63 47 4 8 67 23 96 | 69 9 21 8 47 75 44 29 4 12 88 38 11 13 23 85 6 18 97 2 34 1 17 32 16 +Card 96: 82 97 72 34 28 52 78 80 20 92 | 56 83 32 84 21 74 25 24 61 23 88 66 94 1 29 73 35 70 57 11 81 26 60 63 58 +Card 97: 34 76 39 38 23 51 55 25 40 22 | 91 43 59 66 40 3 45 24 56 96 98 73 29 71 30 1 50 46 78 8 11 9 27 64 26 +Card 98: 66 42 1 45 92 32 71 88 5 82 | 50 88 42 70 60 6 27 49 36 1 35 53 82 14 71 77 5 7 78 48 31 81 52 92 45 +Card 99: 12 2 77 94 59 98 95 10 39 32 | 76 88 5 12 45 55 27 17 11 98 10 87 97 99 20 78 46 4 96 26 14 82 22 39 16 +Card 100: 22 96 56 41 90 47 29 58 87 32 | 15 65 80 82 49 24 33 85 20 74 70 54 50 12 78 47 28 9 32 16 67 71 99 1 17 +Card 101: 1 23 74 4 72 26 75 68 89 83 | 83 58 63 1 52 20 26 33 64 41 53 65 57 80 69 38 4 90 74 39 32 13 61 55 14 +Card 102: 75 14 28 46 23 36 68 71 70 98 | 19 33 54 4 5 8 41 6 14 88 46 3 62 10 48 7 77 92 16 39 40 27 31 99 1 +Card 103: 65 33 61 53 51 29 26 83 19 18 | 7 2 82 55 13 22 6 27 90 99 14 50 79 25 63 46 97 81 85 61 87 28 75 31 96 +Card 104: 51 87 57 78 60 94 82 12 88 11 | 72 78 77 70 54 39 55 24 86 18 58 52 20 63 29 33 31 97 66 69 62 6 56 25 35 +Card 105: 17 55 95 42 16 52 72 9 79 59 | 98 30 35 20 46 43 51 66 75 48 52 44 34 96 65 37 41 50 74 21 38 18 73 10 76 +Card 106: 44 91 36 94 24 31 83 50 70 52 | 18 38 42 17 12 56 64 32 79 76 39 73 60 80 53 57 96 88 82 77 4 69 23 45 7 +Card 107: 45 48 58 26 5 2 35 63 78 70 | 49 71 10 21 50 13 95 6 68 84 4 40 45 31 1 34 27 2 5 85 39 44 98 83 46 +Card 108: 18 4 63 24 83 40 16 48 21 26 | 87 48 21 59 22 6 26 40 98 69 43 14 83 4 16 15 58 68 64 57 63 72 18 60 24 +Card 109: 36 46 49 57 83 68 45 30 1 58 | 35 38 22 12 39 90 86 26 72 67 81 87 79 27 25 29 4 99 41 59 96 94 9 28 75 +Card 110: 58 2 71 72 92 91 75 4 19 81 | 75 26 14 91 71 19 88 11 13 72 32 58 92 24 96 33 74 46 27 38 4 81 20 28 2 +Card 111: 3 78 14 85 53 1 2 32 59 10 | 20 62 53 94 72 45 2 46 87 17 98 74 44 25 47 60 83 59 65 81 38 24 23 39 12 +Card 112: 61 37 90 17 55 94 89 87 5 39 | 90 27 88 64 94 13 41 55 44 21 30 37 84 39 5 32 46 86 14 54 85 17 89 35 31 +Card 113: 73 76 33 37 82 79 56 22 57 6 | 76 20 41 85 2 60 37 32 6 82 94 26 63 56 16 28 33 47 70 99 73 40 22 79 57 +Card 114: 11 54 66 70 60 78 89 94 80 96 | 14 76 70 33 48 53 90 47 66 6 64 96 83 20 56 34 35 11 75 89 41 60 7 39 1 +Card 115: 45 5 33 12 63 95 27 42 1 84 | 51 10 31 27 45 42 1 74 48 72 53 69 63 47 83 33 91 95 39 12 84 11 23 28 65 +Card 116: 5 77 89 65 52 69 32 63 23 85 | 82 73 70 91 11 28 41 14 15 62 37 94 90 95 56 30 96 25 63 47 43 49 83 68 29 +Card 117: 64 80 98 39 45 11 40 22 49 55 | 44 88 40 80 49 67 69 79 62 42 43 30 55 18 5 59 87 98 54 23 45 39 22 11 64 +Card 118: 44 61 75 42 48 66 36 88 9 54 | 62 81 70 3 35 34 79 38 10 32 19 14 65 30 18 42 55 64 92 88 45 83 11 43 23 +Card 119: 82 29 59 20 19 18 66 28 23 49 | 20 19 25 70 59 18 14 36 58 40 23 3 24 80 30 78 88 2 79 72 82 7 66 49 47 +Card 120: 61 40 26 25 4 42 19 76 51 22 | 6 25 11 24 22 44 4 98 49 97 46 88 23 55 66 48 9 33 85 65 84 29 13 60 83 +Card 121: 97 31 11 71 90 96 84 76 53 8 | 71 82 44 99 98 47 40 4 52 53 84 43 27 94 13 88 3 18 28 11 60 24 21 20 38 +Card 122: 29 65 38 48 52 55 3 32 35 95 | 91 45 82 57 38 78 47 75 2 12 46 50 23 87 60 99 18 29 65 25 1 89 35 86 59 +Card 123: 4 91 26 38 36 83 60 72 19 56 | 35 26 36 22 46 69 14 5 70 3 74 47 7 63 72 89 25 60 17 19 62 76 93 75 38 +Card 124: 16 17 73 87 56 22 10 44 92 58 | 54 61 96 42 83 97 5 2 73 69 37 9 50 79 6 57 63 40 75 49 64 70 34 52 11 +Card 125: 37 77 17 70 18 59 65 81 48 15 | 59 49 62 81 12 1 71 90 99 36 25 37 60 64 19 83 21 11 3 27 52 32 45 46 72 +Card 126: 30 34 31 37 3 7 10 8 45 25 | 78 25 12 34 89 63 59 96 41 75 58 71 93 28 17 90 84 7 4 21 13 33 52 14 19 +Card 127: 3 31 15 35 26 88 75 82 77 68 | 13 33 47 92 51 32 74 66 99 44 79 62 22 64 43 23 12 49 60 57 4 83 89 65 21 +Card 128: 9 72 20 10 14 95 86 50 85 82 | 82 25 99 53 97 31 42 8 89 68 58 43 15 30 47 1 26 67 87 57 78 18 60 61 75 +Card 129: 73 72 68 95 79 76 69 24 1 98 | 15 51 83 7 74 5 93 8 27 40 78 81 3 37 44 14 21 99 97 67 57 71 84 86 64 +Card 130: 30 80 40 86 26 36 75 44 41 57 | 81 23 30 73 12 44 8 97 39 42 87 58 33 85 98 57 26 92 80 45 63 21 43 11 99 +Card 131: 22 20 60 75 26 57 33 88 74 38 | 21 92 47 36 5 65 69 9 39 1 33 87 34 53 72 44 15 51 58 25 18 67 19 2 93 +Card 132: 49 65 86 52 33 67 8 83 61 3 | 43 7 74 30 19 53 89 94 32 11 83 59 71 33 51 20 65 41 86 82 49 25 21 63 18 +Card 133: 91 17 74 21 23 47 9 57 82 35 | 23 98 88 82 33 5 92 99 7 57 74 96 9 84 66 24 65 46 40 17 2 4 47 21 51 +Card 134: 47 26 41 16 61 76 72 98 24 93 | 2 25 93 11 31 14 91 73 48 47 64 98 85 26 95 19 16 69 13 10 61 9 56 52 24 +Card 135: 23 13 58 83 99 69 93 33 10 37 | 35 54 80 42 58 46 88 19 99 81 47 89 10 30 33 92 69 23 13 37 59 34 39 93 62 +Card 136: 1 36 37 12 22 19 42 56 98 17 | 70 42 47 17 29 61 73 18 94 72 20 80 7 78 6 15 66 37 71 97 44 96 24 43 23 +Card 137: 81 73 66 58 28 36 27 19 67 4 | 21 85 77 72 99 29 38 73 71 86 6 16 58 93 79 91 39 66 80 67 81 20 11 34 40 +Card 138: 30 89 31 51 9 63 81 38 91 14 | 1 32 6 9 91 81 56 95 89 74 96 31 44 23 82 54 39 16 66 87 93 46 20 12 60 +Card 139: 7 22 84 59 50 53 73 13 97 26 | 17 7 46 18 98 82 53 81 10 39 90 45 16 47 95 15 43 19 50 58 99 13 35 14 12 +Card 140: 93 88 6 10 70 26 9 98 29 73 | 35 46 6 48 13 93 61 83 25 19 67 45 89 58 28 39 3 98 75 59 4 81 88 50 54 +Card 141: 12 6 9 54 93 16 99 71 36 11 | 88 98 87 30 35 93 14 54 82 48 78 13 55 90 36 80 46 63 83 39 61 23 69 96 8 +Card 142: 23 50 74 59 27 44 9 24 48 97 | 51 20 19 44 28 83 50 67 70 32 69 37 62 45 65 82 55 2 33 97 14 60 86 87 27 +Card 143: 79 37 21 69 97 74 33 16 39 83 | 98 39 81 84 66 24 17 87 27 48 20 47 78 61 90 53 43 41 42 92 1 52 5 15 59 +Card 144: 92 31 18 6 70 10 93 56 95 43 | 47 32 28 23 77 55 94 42 4 64 14 59 81 97 96 45 29 78 54 69 21 76 92 48 7 +Card 145: 14 42 45 75 62 1 47 66 31 23 | 30 68 76 97 65 83 22 89 34 80 38 42 62 59 74 56 44 48 71 33 51 82 36 54 40 +Card 146: 22 80 81 31 45 84 91 69 47 66 | 5 43 24 39 70 78 58 79 68 88 53 11 63 32 92 99 40 10 34 83 65 28 76 30 19 +Card 147: 83 67 45 87 14 75 29 97 64 94 | 2 86 23 53 1 63 34 54 79 82 35 88 41 44 17 13 37 12 10 56 57 31 70 30 68 +Card 148: 90 42 32 81 64 66 88 60 97 7 | 46 92 67 88 89 7 81 90 66 73 57 37 26 12 10 60 3 97 42 32 87 49 75 58 64 +Card 149: 26 62 65 96 74 6 48 61 91 83 | 74 26 85 51 89 6 44 91 75 65 1 3 96 54 20 77 87 42 61 14 62 68 24 88 17 +Card 150: 14 58 89 56 74 82 75 60 17 29 | 83 27 62 14 66 58 89 75 17 74 16 5 46 56 29 50 57 55 39 54 98 60 4 82 68 +Card 151: 24 33 68 94 57 59 46 17 84 80 | 43 76 66 46 92 39 73 59 84 68 11 81 87 85 62 33 80 99 95 24 17 57 30 97 94 +Card 152: 69 58 62 31 16 20 40 98 96 64 | 63 71 56 31 54 5 85 3 77 42 53 51 19 55 37 49 79 13 80 75 39 6 50 84 40 +Card 153: 43 50 22 2 47 75 76 56 26 80 | 80 70 19 52 43 27 56 26 86 47 50 13 2 88 93 11 74 23 22 57 90 81 40 76 75 +Card 154: 10 79 52 43 44 26 55 6 73 88 | 37 57 55 40 65 47 14 17 39 1 18 51 67 19 21 12 83 59 45 73 3 32 23 88 10 +Card 155: 69 40 90 61 59 70 77 50 31 15 | 31 34 76 14 10 91 12 86 37 24 68 8 15 59 3 35 84 97 30 77 46 70 40 69 61 +Card 156: 65 28 6 23 17 62 13 37 86 73 | 9 69 65 75 18 14 97 57 20 61 94 56 8 58 1 66 21 60 89 63 54 55 76 30 87 +Card 157: 52 34 98 50 56 69 68 45 20 11 | 34 54 69 41 68 20 44 50 76 65 35 24 84 56 45 51 98 64 23 33 9 43 91 2 97 +Card 158: 12 52 92 10 96 84 2 24 14 51 | 85 15 21 63 72 37 95 93 24 5 67 96 6 58 46 22 3 65 99 17 11 10 13 92 78 +Card 159: 85 42 96 78 39 75 21 50 14 20 | 57 88 68 79 61 20 1 78 35 59 12 76 42 92 96 75 52 13 50 89 53 81 11 69 49 +Card 160: 67 59 62 15 26 85 53 79 42 63 | 53 46 1 30 92 23 91 95 88 89 60 38 2 83 96 4 78 37 14 28 69 22 32 41 3 +Card 161: 38 4 97 98 20 55 51 64 80 53 | 53 34 94 65 3 23 45 1 4 72 64 67 51 39 24 63 90 66 29 14 61 40 91 82 49 +Card 162: 41 19 60 53 94 79 1 77 63 47 | 79 6 42 68 95 94 66 27 24 76 61 96 20 84 60 25 85 78 67 63 53 12 89 8 51 +Card 163: 33 83 82 29 51 57 63 88 66 74 | 9 71 58 88 64 70 96 29 77 25 24 55 21 35 81 33 23 45 18 34 63 6 44 83 17 +Card 164: 1 34 54 15 24 97 8 96 73 26 | 42 6 3 21 11 27 69 92 39 59 45 96 73 26 24 98 2 81 83 17 62 54 70 52 95 +Card 165: 75 92 74 11 5 1 91 36 32 24 | 87 16 28 41 79 88 96 63 86 31 58 35 65 68 8 77 42 52 38 19 70 59 14 57 37 +Card 166: 22 87 29 9 56 32 96 28 61 71 | 80 50 45 12 42 72 5 11 63 62 84 39 20 85 95 47 37 91 60 27 81 2 14 33 51 +Card 167: 60 89 56 55 84 30 95 86 11 79 | 26 94 42 66 52 2 98 8 38 71 11 80 19 4 62 10 89 27 91 61 70 90 63 16 68 +Card 168: 59 90 46 84 16 39 34 88 81 83 | 37 56 92 96 59 26 5 45 67 1 63 73 55 21 33 12 79 13 17 89 82 3 43 85 18 +Card 169: 40 31 62 10 36 69 84 23 95 98 | 22 78 4 46 94 83 60 19 90 70 86 8 20 27 35 17 95 85 14 21 28 61 16 74 37 +Card 170: 11 57 4 84 3 28 89 37 50 23 | 42 59 63 33 62 61 75 14 73 68 69 72 67 45 47 58 10 79 91 98 44 49 27 76 25 +Card 171: 37 47 28 12 74 3 96 26 95 22 | 94 79 13 35 89 57 19 71 15 11 78 45 24 32 87 61 67 51 36 73 14 23 70 2 56 +Card 172: 81 58 92 24 61 10 29 77 93 68 | 92 8 77 73 86 57 93 91 61 19 49 88 23 24 72 64 10 31 32 12 81 4 29 58 68 +Card 173: 4 79 39 55 62 88 18 87 24 96 | 79 87 74 39 16 91 55 71 2 88 54 1 58 20 90 18 62 86 43 4 93 24 99 84 96 +Card 174: 15 69 50 70 4 98 73 68 46 22 | 93 36 96 73 49 64 74 46 78 38 22 23 53 17 69 68 89 43 71 94 79 16 58 60 19 +Card 175: 29 61 14 30 9 23 7 31 60 49 | 78 73 61 91 31 27 63 30 9 64 12 51 8 56 74 36 22 88 1 29 21 80 96 38 99 +Card 176: 36 3 35 86 6 93 47 25 79 48 | 91 79 11 20 23 25 30 97 90 24 17 50 60 89 96 52 98 88 99 51 48 68 67 82 61 +Card 177: 89 81 54 66 51 77 61 11 42 39 | 36 26 40 59 90 8 33 65 11 38 96 79 80 2 13 56 46 86 71 92 72 73 95 39 85 +Card 178: 56 34 78 53 2 7 97 88 27 16 | 12 6 97 8 53 17 50 19 21 41 70 86 25 63 84 52 59 78 81 83 85 72 75 71 39 +Card 179: 63 98 17 49 6 40 18 8 82 25 | 56 66 49 33 53 59 2 21 6 80 76 4 17 8 62 57 82 55 98 58 93 52 51 22 25 +Card 180: 56 80 35 88 2 24 98 66 71 76 | 77 28 86 36 70 85 65 58 15 32 19 56 61 33 27 79 81 35 16 69 55 57 59 45 82 +Card 181: 6 31 42 96 19 4 68 28 58 99 | 48 73 97 4 68 42 70 49 39 56 14 67 89 85 81 96 27 16 15 5 94 69 33 11 44 +Card 182: 36 8 13 24 90 99 52 1 56 87 | 12 85 1 9 88 30 74 13 26 80 48 72 10 65 91 44 21 37 70 3 93 29 90 61 7 +Card 183: 83 30 76 63 77 11 22 33 15 72 | 83 12 60 16 42 31 63 55 99 1 89 93 88 85 47 48 96 97 29 45 7 75 71 8 33 +Card 184: 91 4 17 34 61 70 48 64 38 68 | 66 99 94 3 98 44 90 23 14 38 55 56 68 42 87 95 54 13 7 65 5 18 79 62 57 +Card 185: 92 81 63 22 41 13 59 79 40 70 | 94 26 80 48 82 50 23 8 93 49 19 24 58 5 43 16 53 61 37 42 44 40 95 67 25 +Card 186: 3 65 75 74 68 4 61 28 91 42 | 56 85 83 29 63 11 20 18 66 53 71 62 33 69 30 93 67 47 72 51 7 80 46 44 9 +Card 187: 76 60 87 97 68 27 52 20 12 54 | 87 7 8 14 30 19 39 22 65 24 40 34 61 20 64 81 33 25 69 26 52 76 71 11 60 +Card 188: 39 87 24 31 93 1 91 18 20 28 | 47 50 84 24 38 7 37 57 91 96 28 10 14 55 76 35 2 45 29 58 79 27 70 23 21 +Card 189: 69 77 14 29 62 32 37 57 61 8 | 73 39 51 80 89 32 8 87 81 62 92 21 4 49 79 40 10 96 55 98 69 74 97 72 37 +Card 190: 69 46 86 75 59 29 78 72 16 54 | 18 86 68 63 9 49 50 10 19 77 65 69 79 12 24 76 64 58 1 16 30 13 98 11 75 +Card 191: 52 35 79 94 34 5 96 38 70 90 | 65 46 49 11 48 1 29 82 24 85 51 61 84 81 18 20 67 41 33 88 89 25 6 83 68 +Card 192: 8 66 41 82 36 43 50 97 29 3 | 5 56 32 47 13 82 50 1 39 8 70 20 97 99 33 76 3 46 43 36 26 66 83 61 29 +Card 193: 22 70 17 82 6 24 4 35 32 61 | 24 22 67 2 89 35 95 1 34 82 39 14 5 51 27 26 4 32 43 76 45 9 70 17 30 +Card 194: 54 90 83 51 22 45 97 41 92 61 | 32 37 94 87 41 21 98 54 40 14 4 79 61 82 97 59 44 45 28 73 66 84 63 35 23 +Card 195: 68 89 18 86 4 5 82 78 3 35 | 14 21 75 98 88 28 44 49 20 95 25 68 67 79 65 30 37 87 61 78 8 73 77 31 16 +Card 196: 16 64 6 99 67 55 51 50 37 71 | 12 89 81 63 62 82 85 60 76 8 4 32 83 51 38 69 92 35 10 90 58 56 77 99 29 +Card 197: 85 67 81 59 28 36 13 84 83 92 | 67 56 68 12 34 30 60 41 58 92 49 81 22 23 21 18 5 69 71 75 94 53 90 36 9 +Card 198: 99 10 39 1 13 21 15 84 44 40 | 64 58 40 26 8 97 83 87 86 85 29 54 44 99 6 80 55 36 84 82 18 92 81 35 15 +Card 199: 16 74 44 41 37 70 15 20 36 9 | 63 89 93 59 81 76 85 14 92 30 67 71 69 49 7 39 99 97 62 18 55 83 11 79 36 +Card 200: 78 75 82 83 61 95 2 56 49 53 | 66 19 77 94 74 97 79 34 33 16 83 41 81 91 52 62 14 21 35 4 99 50 30 42 36 +Card 201: 97 48 74 15 5 4 40 64 95 33 | 83 54 73 81 37 53 85 20 68 51 82 41 27 42 60 63 50 58 98 35 9 23 18 2 32 +Card 202: 83 90 4 89 57 72 30 13 8 23 | 99 33 38 70 39 12 71 35 46 94 82 79 44 62 98 74 64 16 32 66 65 95 47 58 23 +Card 203: 38 61 14 84 65 96 90 69 53 11 | 24 50 66 56 26 25 3 60 95 19 10 21 12 87 92 37 99 76 71 57 17 55 30 6 44 diff --git a/input/day5.txt b/input/day5.txt new file mode 100644 index 0000000..83a15b3 --- /dev/null +++ b/input/day5.txt @@ -0,0 +1,212 @@ +seeds: 630335678 71155519 260178142 125005421 1548082684 519777283 4104586697 30692976 1018893962 410959790 3570781652 45062110 74139777 106006724 3262608046 213460151 3022784256 121993130 2138898608 36769984 + +seed-to-soil map: +2977255263 3423361099 161177662 +3464809483 1524036300 40280620 +1278969303 2583891002 282823382 +3766263020 1796922321 171061976 +411885923 23002578 152894367 +564780290 442452799 75000259 +2421385924 1454220354 69815946 +3348169880 3014668733 58677303 +903828313 1975611534 37514769 +3406847183 1396258054 57962300 +4043490501 3171884304 251476795 +941343082 2866714384 147954349 +1089297431 1206586182 189671872 +2891116902 3584538761 18778869 +0 517453058 122327491 +2491201870 932395829 274190353 +388883345 0 23002578 +3944952233 3073346036 98538268 +3505090103 671222912 261172917 +2073455492 2013126303 347930432 +2909895771 2361056735 67359492 +1561792685 3603317630 511662807 +2765392223 2458166323 125724679 +3168183021 4114980437 179986859 +3138432925 2428416227 29750096 +122327491 175896945 266555854 +671222912 1564316920 232605401 +3937324996 1967984297 7627237 + +soil-to-fertilizer map: +895998030 0 382128379 +2851625320 2664267363 205943350 +2518444693 3961786669 333180627 +1879667741 2025490411 638776952 +0 1243838521 558555556 +3280896340 2870210713 1014070956 +558555556 906396047 337442474 +3057568670 3884281669 77505000 +3135073670 1879667741 145822670 +1278126409 382128379 524267668 + +fertilizer-to-water map: +0 1845976330 336090970 +3299138007 3322545218 12048535 +336090970 0 11457152 +1280501317 1371665084 474311246 +2583893821 3334593753 715244186 +3311186542 2468197905 738651397 +2468197905 3206849302 115695916 +347548122 11457152 932953195 +1754812563 944410347 427254737 + +water-to-light map: +1121222108 519789808 4326619 +1125548727 524116427 429792955 +1052043895 3930896885 69178213 +3210593080 0 36442681 +1669405426 2787769857 138341045 +1919839172 3142586910 277606697 +2197445869 2466152271 321617586 +1555341682 3816833141 114063744 +3431283943 3092543143 50043767 +3481327710 1975836414 28620233 +136025352 1371812880 335069822 +0 3420193607 136025352 +2600375975 3610804829 206028312 +3247035761 36442681 184248182 +3676380184 1048117966 323694914 +2519063455 966805446 81312520 +483991238 1706882702 268953712 +3509947943 2926110902 166432241 +1862332341 2408645440 57506831 +752944950 220690863 299098945 +2806404287 2004456647 404188793 +1807746471 3556218959 54585870 +471095174 953909382 12896064 + +light-to-temperature map: +3941111261 382813357 83783792 +4083751028 2792620142 62769876 +2924924808 517646744 141124785 +10073304 296361721 86451636 +2112077648 3356571260 325360811 +2097723771 930487406 14353877 +1038821361 2233157447 330985253 +1604981575 0 157737476 +4232208439 2231398376 1759071 +3126943010 2564142700 228477442 +3355420452 3681932071 528033316 +3066049593 1302213021 60893417 +2893234140 1091417457 31690668 +4146520904 1005729922 85687535 +764412615 658771529 271715877 +4024895053 4212658256 21309254 +1601614929 3144601228 3366646 +2813498518 3276835638 79735622 +0 944841283 10073304 +3883453768 1363106438 57657493 +1036128492 4209965387 2692869 +1762719051 1160654846 141558175 +2437438459 157737476 138624245 +96524940 1420763931 667887675 +2576062704 3147967874 128867764 +1904277226 2855390018 50699775 +1420621949 2906089793 129943385 +1550565334 466597149 51049595 +2704930468 3036033178 108568050 +4046204307 1123108125 37546721 +1369806614 954914587 50815335 +1954977001 2088651606 142746770 + +temperature-to-humidity map: +3744493855 2753433800 53429527 +3926657179 2806863327 207882975 +567844723 1829271702 6392959 +3797923382 3046866321 128733797 +1711260618 465872733 110275892 +2947786208 2530091374 223342426 +2371290430 3335177849 39675908 +1900678095 703125986 238513863 +1521940365 941639849 16040471 +979702084 962957535 519048585 +2678536664 3987414423 22824189 +316276095 2006380474 251568628 +574237682 576148625 7838036 +2512589774 2369848229 129456424 +1821536510 386731148 79141585 +659847979 2257949102 32337475 +1498750669 0 23189696 +2139191958 1482006120 151094619 +2410966338 2361085516 8762713 +248695366 629624702 67580729 +1705983403 957680320 5277215 +3436386005 3680199681 275987831 +896869843 23189696 23822140 +1540019357 265437244 43521643 +3171128634 4029709925 265257371 +700698880 1633100739 196170963 +2659065351 4010238612 19471313 +1660345362 583986661 45638041 +2642046198 3175600118 17019153 +4134540154 3966392426 21021997 +145503080 1903188188 103192286 +4155562151 3467714480 139405145 +920691983 1844178087 59010101 +2805227630 3192619271 142558578 +692185454 1835664661 8513426 +2732147574 3607119625 73080056 +3712373836 3014746302 32120019 +2361085516 3956187512 10204914 +2701360853 2499304653 30786721 +582075718 308958887 77772261 +1583541000 188632882 76804362 +3882034 47011836 141621046 +0 699243952 3882034 +1537980836 697205431 2038521 +2419729051 3374853757 92860723 + +humidity-to-location map: +3880387060 2052152805 97611299 +2442736538 3295723734 10591308 +3014234548 3058886861 44150293 +2722522139 3413370195 153277538 +2877652345 3226748198 68975536 +678696757 79205913 5515453 +3758528684 3103037154 121858376 +3648288667 2533118408 110240017 +3457871155 4266074310 28892986 +2176930761 3905620500 135283057 +2312213818 2369019482 56130623 +2875799677 3224895530 1852668 +2052152805 3780842544 124777956 +2598433171 3306315042 56382802 +1279041455 278559111 48074772 +2964261570 2302916483 49972978 +344154771 1539624544 79809331 +1030322972 1619433875 248718483 +1905012367 1868152358 115533200 +105230362 326633883 51970437 +4085966662 2880778716 178108145 +684212210 1466450827 73173717 +919250672 396737705 108684083 +868993622 1215278638 50257050 +2962757902 2879275048 1503668 +1847630888 378604320 18133385 +3232700402 4040903557 225170753 +2575587736 3390524760 22845435 +3977998359 2425150105 107968303 +3058384841 3362697844 27826916 +789787709 0 79205913 +4264074807 2272023994 30892489 +3114006964 3594442940 118693438 +460824111 202771015 75788096 +423964102 1983685558 36860009 +2946627881 2352889461 16130021 +157200799 505421788 186953972 +3486764141 2717750522 161524526 +1027934755 692375760 2388217 +2453327846 2149764104 122259890 +2368344441 2643358425 74392097 +0 1407620238 58830589 +2654815973 3713136378 67706166 +1865764273 117123148 39248094 +3086211757 3566647733 27795207 +58830589 156371242 46399773 +536612207 1265535688 142084550 +757385927 84721366 32401782 +1327116227 694763977 520514661 + diff --git a/src/day1pt1.rs b/src/day1pt1.rs new file mode 100644 index 0000000..643fcd6 --- /dev/null +++ b/src/day1pt1.rs @@ -0,0 +1,21 @@ +use regex::Regex; + +pub fn main() { + let mut sum: u32 = 0; + + let txt = std::fs::read_to_string("./input/day1.txt").unwrap(); + let re = Regex::new(r"\d").unwrap(); + + for line in txt.lines() { + let capt = re.find_iter(line).collect::<Vec<_>>(); + sum += capt.get(0).unwrap().as_str().parse::<u32>().unwrap() * 10 + + capt + .get(capt.len() - 1) + .unwrap() + .as_str() + .parse::<u32>() + .unwrap(); + } + + println!("{}", sum); +} diff --git a/src/day1pt2.rs b/src/day1pt2.rs new file mode 100644 index 0000000..99407dd --- /dev/null +++ b/src/day1pt2.rs @@ -0,0 +1,51 @@ +use regex::Regex; + +fn parse(s: &str) -> u32 { + match s { + "zero" => 0, + "one" => 1, + "two" => 2, + "three" => 3, + "four" => 4, + "five" => 5, + "six" => 6, + "seven" => 7, + "eight" => 8, + "nine" => 9, + br => br.parse().unwrap(), + } +} + +fn parse_bw(s: &str) -> u32 { + match s { + "orez" => 0, + "eno" => 1, + "owt" => 2, + "eerht" => 3, + "ruof" => 4, + "evif" => 5, + "xis" => 6, + "neves" => 7, + "thgie" => 8, + "enin" => 9, + br => br.parse().unwrap(), + } +} + +pub fn main() { + let mut sum: u32 = 0; + let re = Regex::new(r"\d|zero|one|two|three|four|five|six|seven|eight|nine").unwrap(); + let re_bw = Regex::new(r"\d|ozer|eno|owt|eerht|ruof|evif|xis|neves|thgie|enin").unwrap(); + + let txt = std::fs::read_to_string("./input/day1.txt").unwrap(); + for line in txt.lines() { + let capt = re.find_iter(line).collect::<Vec<_>>(); + let str_bw = String::from_iter(line.chars().rev()); + let capt_bw = re_bw.find_iter(&str_bw).collect::<Vec<_>>(); + + let x = + parse(capt.get(0).unwrap().as_str()) * 10 + parse_bw(capt_bw.get(0).unwrap().as_str()); + sum += x; + } + println!("{}", sum) +} diff --git a/src/day2pt1.rs b/src/day2pt1.rs new file mode 100644 index 0000000..c1dad9c --- /dev/null +++ b/src/day2pt1.rs @@ -0,0 +1,44 @@ +pub fn main() { + let _max_red: u32 = 12; + let _max_green: u32 = 13; + let _max_blue: u32 = 14; + + let mut sum: u32 = 0; + let mut idx: u32 = 1; + + let txt = std::fs::read_to_string("./input/day2.txt").unwrap(); + for line in txt.lines() { + let pline = line.split(": ").last().unwrap(); + + // za svaku liniju + let mut ind: bool = true; + + for i in pline.split("; ") { + for boje in i.split(", ") { + let broj = boje.split(" ").nth(0).unwrap().parse::<u32>().unwrap(); + let boja = boje.split(" ").last().unwrap(); + + ind = match boja { + "red" => _max_red >= broj, + "green" => _max_green >= broj, + "blue" => _max_blue >= broj, + _ => ind, + }; + if ind == false { + break; + } + } + if ind == false { + break; + } + } + + if ind { + sum += idx; + } + + idx += 1; + } + + println!("{}", sum); +} diff --git a/src/day2pt2.rs b/src/day2pt2.rs new file mode 100644 index 0000000..86ba306 --- /dev/null +++ b/src/day2pt2.rs @@ -0,0 +1,33 @@ +use std::cmp; + +pub fn main() { + let mut sum: u32 = 0; + + let txt = std::fs::read_to_string("./input/day2.txt").unwrap(); + for line in txt.lines() { + let pline = line.split(": ").last().unwrap(); + + // za svaku liniju + let mut _max_red: u32 = 0; + let mut _max_green: u32 = 0; + let mut _max_blue: u32 = 0; + + for i in pline.split("; ") { + for boje in i.split(", ") { + let broj = boje.split(" ").nth(0).unwrap().parse::<u32>().unwrap(); + let boja = boje.split(" ").last().unwrap(); + + match boja { + "red" => _max_red = cmp::max(_max_red, broj), + "green" => _max_green = cmp::max(_max_green, broj), + "blue" => _max_blue = cmp::max(_max_blue, broj), + _ => println!("jbg"), + }; + } + } + + sum += _max_red * _max_green * _max_blue; + } + + println!("{}", sum); +} diff --git a/src/day3pt1.rs b/src/day3pt1.rs new file mode 100644 index 0000000..7fd9059 --- /dev/null +++ b/src/day3pt1.rs @@ -0,0 +1,64 @@ +use regex::Regex; + +struct Broj { + broj: u32, + x: i32, + y: i32, + len: i32, +} + +struct Simbol { + x: i32, + y: i32, +} + +pub fn main() { + let txt = std::fs::read_to_string("./input/day3.txt").unwrap(); + let brojevi = Regex::new(r"\d+").unwrap(); + let simboli = Regex::new(r"[^0-9.]+").unwrap(); + + let mut vbr: Vec<Broj> = vec![]; + let mut vsim: Vec<Simbol> = vec![]; + let mut w = 0; + let mut h = 0; + + for line in txt.lines() { + if w == 0 { + w = line.len(); + } + + let m = brojevi.captures_iter(line).collect::<Vec<_>>(); + for i in m { + let broji = i.get(0).unwrap().as_str().parse::<u32>().unwrap(); + let xi = i32::try_from(i.get(0).unwrap().start()).unwrap(); + let leni = i32::try_from(i.get(0).unwrap().as_str().len()).unwrap(); + vbr.push(Broj { + broj: broji, + x: xi, + y: h, + len: leni, + }); + } + + let s = simboli.captures_iter(line).collect::<Vec<_>>(); + for i in s { + let xi = i32::try_from(i.get(0).unwrap().start()).unwrap(); + vsim.push(Simbol { x: xi, y: h }); + } + + h += 1; + } + + let mut sum: u32 = 0; + + for br in vbr.as_slice() { + for sim in vsim.as_slice() { + if i32::abs(sim.y - br.y) < 2 && br.x - 1 <= sim.x && sim.x <= br.x + br.len { + sum += br.broj; + break; + } + } + } + + println!("{}", sum); +} diff --git a/src/day3pt2.rs b/src/day3pt2.rs new file mode 100644 index 0000000..61d0fd1 --- /dev/null +++ b/src/day3pt2.rs @@ -0,0 +1,69 @@ +use regex::Regex; + +struct Broj { + broj: u32, + x: i32, + y: i32, + len: i32, +} + +struct Simbol { + x: i32, + y: i32, +} + +pub fn main() { + let txt = std::fs::read_to_string("./input/day3.txt").unwrap(); + let brojevi = Regex::new(r"\d+").unwrap(); + let simboli = Regex::new(r"[^0-9.]+").unwrap(); + + let mut vbr: Vec<Broj> = vec![]; + let mut vsim: Vec<Simbol> = vec![]; + let mut w = 0; + let mut h = 0; + + for line in txt.lines() { + if w == 0 { + w = line.len(); + } + + let m = brojevi.captures_iter(line).collect::<Vec<_>>(); + for i in m { + let broji = i.get(0).unwrap().as_str().parse::<u32>().unwrap(); + let xi = i32::try_from(i.get(0).unwrap().start()).unwrap(); + let leni = i32::try_from(i.get(0).unwrap().as_str().len()).unwrap(); + vbr.push(Broj { + broj: broji, + x: xi, + y: h, + len: leni, + }); + } + + let s = simboli.captures_iter(line).collect::<Vec<_>>(); + for i in s { + let xi = i32::try_from(i.get(0).unwrap().start()).unwrap(); + vsim.push(Simbol { x: xi, y: h }); + } + + h += 1; + } + + let mut sum: u32 = 0; + + for sim in vsim.as_slice() { + let mut cnt: u32 = 0; + let mut ratio: u32 = 1; + for br in vbr.as_slice() { + if i32::abs(sim.y - br.y) < 2 && br.x - 1 <= sim.x && sim.x <= br.x + br.len { + cnt += 1; + ratio *= br.broj; + } + } + if cnt == 2 { + sum += ratio; + } + } + + println!("{}", sum); +} diff --git a/src/day4pt1.rs b/src/day4pt1.rs new file mode 100644 index 0000000..5a622a8 --- /dev/null +++ b/src/day4pt1.rs @@ -0,0 +1,45 @@ +pub fn main() { + let txt = std::fs::read_to_string("./input/day4.txt").unwrap(); + let mut sum: u32 = 0; + for line in txt.lines() { + let mut cnt: u32 = 0; + + let mut br1 = vec![]; + let mut br2 = vec![]; + + let sec_pt = line + .split(": ") + .collect::<Vec<&str>>() + .get(1) + .unwrap() + .split(" | ") + .collect::<Vec<&str>>(); + for i in sec_pt.get(0).unwrap().split(r" ") { + if i == "" { + continue; + } + br1.push(i.parse::<u32>().unwrap()); + } + + for i in sec_pt.get(1).unwrap().split(r" ") { + if i == "" { + continue; + } + br2.push(i.parse::<u32>().unwrap()); + } + + for i in &br1 { + for j in &br2 { + if i == j { + cnt += 1; + } + } + } + + if cnt > 0 { + sum += 2u32.pow(cnt - 1); + } + } + + println!("{}", sum); +} diff --git a/src/day4pt2.rs b/src/day4pt2.rs new file mode 100644 index 0000000..765e992 --- /dev/null +++ b/src/day4pt2.rs @@ -0,0 +1,49 @@ +pub fn main() { + let txt = std::fs::read_to_string("./input/day4.txt").unwrap(); + let mut sum: u32 = 0; + let mut a = vec![1; 256]; + + for (idx, line) in txt.lines().enumerate() { + let mut cnt: u32 = 0; + + let mut br1 = vec![]; + let mut br2 = vec![]; + + let sec_pt = line + .split(": ") + .collect::<Vec<&str>>() + .get(1) + .unwrap() + .split(" | ") + .collect::<Vec<&str>>(); + for i in sec_pt.get(0).unwrap().split(r" ") { + if i == "" { + continue; + } + br1.push(i.parse::<u32>().unwrap()); + } + + for i in sec_pt.get(1).unwrap().split(r" ") { + if i == "" { + continue; + } + br2.push(i.parse::<u32>().unwrap()); + } + + for i in &br1 { + for j in &br2 { + if i == j { + cnt += 1; + } + } + } + + for i in 1..cnt + 1 { + a[idx + i as usize] += a[idx]; + } + + sum += a[idx]; + } + + println!("{}", sum); +} diff --git a/src/day5pt1.rs b/src/day5pt1.rs new file mode 100644 index 0000000..a50a66a --- /dev/null +++ b/src/day5pt1.rs @@ -0,0 +1,39 @@ +pub fn main() { + let txt = std::fs::read_to_string("./input/day5.txt").unwrap(); + + let mut seeds: Vec<i64> = vec![]; + let mut rules: Vec<(i64, i64, i64)> = vec![]; + + for (i, line) in txt.lines().enumerate() { + if line != "" { + // dodaj u vec + if i != 0 && line.chars().nth(line.len() - 1).unwrap() != ':' { + let br: Vec<i64> = line.split(" ").map(|s| s.parse().unwrap()).collect(); + rules.push((br[0], br[1], br[2])); + } + } else { + // obradi + for i in 0..seeds.len() { + for rule in &rules { + if rule.1 <= seeds[i] && seeds[i] < rule.1 + rule.2 { + seeds[i] += rule.0 - rule.1; + break; + } + } + } + rules.clear(); + } + + if seeds.is_empty() && line != "" { + seeds = line + .split(": ") + .collect::<Vec<_>>() + .get(1) + .unwrap() + .split(" ") + .map(|s| s.parse().unwrap()) + .collect(); + } + } + println!("{}", seeds.iter().min().unwrap()); +} diff --git a/src/day5pt2.rs b/src/day5pt2.rs new file mode 100644 index 0000000..8f95d3d --- /dev/null +++ b/src/day5pt2.rs @@ -0,0 +1,39 @@ +pub fn main() { + let txt = std::fs::read_to_string("./input/day5.txt").unwrap(); + + let mut seeds: Vec<i64> = vec![]; + let mut rules: Vec<(i64, i64, i64)> = vec![]; + + for (i, line) in txt.lines().enumerate() { + if line != "" { + // dodaj u vec + if i != 0 && line.chars().nth(line.len() - 1).unwrap() != ':' { + let br: Vec<i64> = line.split(" ").map(|s| s.parse().unwrap()).collect(); + rules.push((br[0], br[1], br[2])); + } + } else { + // obradi + for i in 0..seeds.len() { + for rule in &rules { + if rule.1 <= seeds[i] && seeds[i] < rule.1 + rule.2 { + seeds[i] += rule.0 - rule.1; + break; + } + } + } + rules.clear(); + } + + if seeds.is_empty() && line != "" { + seeds = line + .split(": ") + .collect::<Vec<_>>() + .get(1) + .unwrap() + .split(" ") + .map(|s| s.parse().unwrap()) + .collect(); + } + } + println!("{}", 0); +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..b3ad2f6 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,5 @@ +mod day5pt2; + +fn main() { + day5pt2::main(); +} |
