diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..23ed9cf --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,310 @@ +# 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 = "aoc_2023" +version = "0.1.0" +dependencies = [ + "env_logger", + "log", +] + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" + +[[package]] +name = "env_logger" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi", + "rustix", + "windows-sys 0.48.0", +] + +[[package]] +name = "libc" +version = "0.2.150" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" + +[[package]] +name = "linux-raw-sys" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[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" + +[[package]] +name = "rustix" +version = "0.38.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "termcolor" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" diff --git a/Cargo.toml b/Cargo.toml index 2e8d130..e907747 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,3 +6,5 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +env_logger = "0.10.1" +log = "0.4.20" diff --git a/assets/day1.txt b/assets/day1.txt new file mode 100644 index 0000000..cc647fb --- /dev/null +++ b/assets/day1.txt @@ -0,0 +1,1000 @@ +dqfournine5four2jmlqcgv +7ggzdnjxndfive +twofive4threenine +dttwonezbgmcseven5seven +5vsrcnine +95zzbjck +gkoneight4fivekvktltnine +fiverckdmgbfthjdqpmpgdkmcklqtqc365mqtwo +44sevenhvstcbgkhm5foureight11 +dprrtrngrfccz4eight4two8sthmfive +6twofive4seven7nine +four1sevenbfbnqvkbfoursix7 +12xpdghpeightqvztrsslgsix5smlgfjhcpst +8dhzdtbeightfour3 +pttdtmhg4 +6eightsevendbtbxnqzxds6 +twothree5nxglqlc9 +nine6lqhnvbpxoneseveneightsxjfkz4vr +three28jxdmlqfmc619eightwol +26jtdpgqjzshncxvlljfour +qxvpsctgx1 +28286qdjjlgtdtnsm3hk +9hcj6nine +nineseven9sqtrpfour +one1eight4sixzltzrkthree +threevlgfxhnf6seven6nine68 +sixonesxxbxvfnkt8 +8fivefivefour7sxsrvdrz +oneone7 +ndtkjbsix6three9gdsjlljtj6six +cfmrfgjqgrzcmsix5 +3threefour62three3vrmnmgx +kckdghseventwo1758 +mdbqqjmpvonetwo1six31fourntbfb +lkjhjdthree3 +qthseven61mpfnnhm6fivecnhz2 +twojrfgzjstjvlngnpqcj8grtnvxmzbxkfrvqmvnmvmbdr +sloneightkqbgcpnv8kqcmzfouronesevenmrfjeight +xdxdxg9seventwo8xcq1 +dpdgxzk7 +18six3twoone +1twoseven3five +46tkbclbkleight64 +tjprpjbshr2seven1pgfqmbmjlvsv +3mbjccssjgtdttvbdhdfxvldpmhcpc +lgfrkpsfvz5ppgqphtwoznjtgxdjpm3 +mjmlsevenggsbjbtsix9nineone +jqfqjqhthreenine7eightklkttdkbtmpp1 +trptrkbone52eight6 +onetmvsrjlbqlninesix8 +rone9ktvdqkdgl1 +twosix5sixgrfdft54klf4 +thrmone3eightsixfive +three4one +ppthg2three1one +7vt426 +22foureight6 +fourxbhmone56seven8eightnine +vhmsd171rgkhpgfhffnhkvt +xgbzxszsgtthree4 +rclzfsn5twoeight +989nine2seven +eighteight5fivensix8 +dfxzz5qcqzsjsg +d3eight54 +5knflhntzthreeseventwo +threeonefour9oneninebsfpq +hjhgtjgtwotrsffive8hfntm +sixpmhzqrlkrthreefour1pcgvz96 +5three31xqcsshkkqtfblffcmcntfour +zghcfvjsfz29nine +3vvvrlrjdztlhqqm88 +39nine3seven93 +1fqsgnjzrl6lrzsczc +threepldztlnvnzdntqllpr19 +ninekgqqrgttfntrhjzlvninelr3 +94eighteighteight +two13txmtlqxskhltkrvbjrzm97five +dbmjvszjtb17 +twogpfttmhp8two13 +four4bqzqscdbctssgxfzjjntwonfcktjrtnxskjpkhvlfjt +ctxxvdsvsvjzchmxvxceightthreembnlg5ninevmcbgsvbh +fpbrpfourqmrfcnpvxg8onehkbbgbsnnt +4zrrgsevenfour +6eight9foureightxlgdn +693rzcnvlfrv +bcftntcfl4jxbccpcmjeightcrxsjscmxdeightmhqbnpdvcfour +six83 +xl4 +njslckcbdfvkmkdk9eight +ninenineeight4nine +jkzvq3fourzzvdzdft +bfqpb9 +eight6nlzdskjfourbmdvcrcgrshbjcxfour2 +7zhlxtqtbjxqbszdtwonineeightjcl9 +fvcjzxd5sevenfivefqnvkjthreeseven +3cxmpzkng3 +8x2 +nineeightsevenfourpfzzflnp97 +2lkjpfhnpn7gbtztgxtnmclzdtdh33eightstbfrvxqz +nv8 +3one7eight +ninetwortwoeightfive8ls +shncxrjqnjttvvzvnl6 +ninethree963 +mjcfrzjhr33csjxrtmm +five17 +84bdfnptmffourfbqslsqeight +onegrzpdj8three2one6fsk +eight33gxpcqvpmeightk +6fbsfclhninetqj5twobxcz +119sixnjmxmvv +825bhceightone4jjdbvrzt2 +xjchvkxxhg3sevensixseven3kmgqfmbgmbjnrq +l2 +36hcmfnbmsevenfivetxhhgjdlq1khkk +eightj47five4sqtwo +6nineeight9 +g2drvxqvpnbjfqxhl +vglkfour9rlmhsnine +onefivezr6rrtddnrg +3threellcbhjhjzqfive5 +ggbmhzkcone2 +23nclcqvjdzqcrpvsmnpzsfg3five +two5eightddxqgpm8twoseven +nrvtvlhrlr3tvpck1ghbvzxhjkneightgzxgtcddk +7lsxfjhqz +28four +mninetwo3 +1fourfxqjpggbpb9threelj +seven3pzkfbqdstdgkrskqrlbg7fzfour4n +btctmct9three6threegkqqkcskfs8chvmcl +threefourskdp6twob +7three6five6eight3 +5spkb6 +34msnt +5bkqbzpgmjzeight +7g2onefour29fourfour +9fgsixzkbscvbxdsfive6spjfhzxbzvgbvrthreeoneightn +rpbd255fournine +277five +eightseven7sevenllninefive +rpjcmzkthbvdflbhxxkpv3oneplglgmv +xqktwone5jkpxvnptjeight +67one +cgxfhzsnrsjp3kjgzrlbhzh +fiveqqjljzfcmbfqvkscpzscpseven4nine1xvjlgk +tflkxnml5vptclnhkgdg11c2seven +sixeighttdbczshg82threepmjnxrvcnine6 +nineone81mkltdkfgxtsevenfive +8zgx +cvb4kv22gp +61bjllhkblllqx8bmr5threesix +9cjfgb1bxncrgfhtmg973 +eightninefour5twosixbsvnsndhtghtmfive +seven1bbfrvdcsthree2 +cfzd8hvqscjxqf9 +sixvfkcgmvqn9vmbzccdmqqgxmfxmnqc95 +qqrqnd8twofive7czxtjnmxx +threebdmrlnxnlmdbzbv4 +nm91vblgfourtsjp6 +six96 +sevenrjvbxptl9onecrlz +dvdbrmchgpninenine4onedjcfoneninetwo +hcrrgnlxftwo6four +threehcrfknsnqmg49 +2tqbrkxgtdztjkdcnsix6three +mktnzjn58qspzpqdr7 +dphvck5fourbmfnskkh72five78 +one7seven7 +bmpnljsxhfmtwozrhvdv8sjsrmnzlcjvjqcfgffhkjcbx +7one6874 +three9tfx4 +eight9pqhseightndgbv6 +39jgmbzrzkctsix +1676 +8xtpdhzfd8three44four8two +sixkvlppxqktkdqjsgjgz5 +twoonehbgsdhpxkdvnpr3ncrgbqzfvsbcdsix4 +39kpdxsp368seven2 +xfljqfbz5tzpldspxvgc +fourqb6twocfljflzqqd +5889cxvxkstlld75rnlgzpgmhcmnx +84zxqsqvb +fiveksvtbqz9934 +onefour96four78fourkbkhdhg +h61three2v +nine9jlbrfmgjv2kkfive +bjhktrjmfninexxnjhrvq7 +fbcxlvgkkjcmpdcz7 +mnleight3oneqqttlp +eighttwolffour1 +onetqfghfourbmf5 +four1qfive4 +9fvp +cxxn5qzcm +one7hzjpnvhtdq +pxmht4fprcftwofive7gsixcqbmrd +three9fivesixrdqrhcqrqbl +6fggvr +ninesixmxvdcqgxcmskl115lskkp +sevenqkmqxltfive191lfbtfvzsixseven +ninemjnjgrlmnlseven5eight9 +fhjjtxzksseven7fourthree +rfjksvfour26vqbdrbxc +6zgkfive8mhgxbsm +1njpjv696 +4lrthsevendnsmseven +l4hxvjvlfpjmdbvdjzrhkhpmklnine7fourfour +2qtkhnineeightone +fivexhrxrzxht1foursix +sixlzcgllrqlhghzn1hdhgltcntfivefourfive1 +dpkzdbzsgq9threecst7znsjgdmmhx1 +three497lp388 +llnklrkfr3 +ltkkv481pzhqzkmhskxlznineninekcbrphlp +fivetwoseven71nineljsbc49 +bvqsxnkpmzsevenhdpvfvlb2eight2bdxp3 +onefour64 +8xfdtfnqvhzkhvszeight5 +threethree4two +z5two2fp +fourvjmcghrcfoureight3 +lhztwo9dzhpdgn675 +jnine4two49sixskv +9phbnnsoneqtpvvzbx5xzc +mtjfxzzhzdjvfmrc1 +4ccszl3fiveseven55lfmktz +five27three9mgrnjcsbpd +6eight115five4c +two63fjlkgninepthmone +22ddxpbbpdseven +zg7 +five3gvbthree6hjseven +x6six58nine +seveneighteight75three9two9 +onevlpdgsnl3 +sevenmbvqmjhfnzmgsqp8qnskjzptpppbcfhck2 +7bpldrqr6fourpsntqbcqhfive +twothvddvmlbqknrj9pgpsjndbrmrgkgf +sixthree38onefoureightmvdtnn +vkqcnfkkc6 +sixeight9 +65fouronemklfgqbpgnvlvcvhjcdkq +three5five +981gxpsgqxjktwogninezgnf +cfnnzfnlmfqtwofour8fourxg5 +45mpgbgzctwoqlsxmgs8 +5nhzlcb6four6pzjjlr4ninej +gnkoneightprhlrseven7 +1rzsq1seven3eight +sixnine9eight8eight +lcszz858 +pdgbgjxthreethree3threeonengk +8zpzpttrqtwoninek895 +634jgvbvr +nine8mvr +5seven2psmtnmzdfivesix +56ninerqrlzqvszrght6zkgtvrphpnvthree +5fiveone +43three +9mdtghvfjdqqbrmeightfour92tlstxvrhthree +b8 +ninehpnmdhjqjl5ppptrd +41fournineeightvxxjdthreeeight +ntwonefnsdpnine8sevenbjzxpfive +6oneclxflmxvtwo1 +9jbpfnvfsjblmxrprml5 +68five7sfgxjqxrcjmninerzgxnhjpzkdhxzbg +1vztdlnone2lhrhx +6lrmdrxqlsttwovsr9eightpbmqcxn +2zjchhdbzhc +tsgntwomdtsjtdrthree9 +7threethreedprbrvngxpfour +fivestvv3six +6one9sjlzjtxxnkbckdmc +zxqzmcz3eight +lndh86xphvbnine +fivesix3sixf93hbbptwo +3cxpbl +gsnqeight8kthxzrdkskjkmcmsknine5 +67twoxdqninefour +fivefivehtczfmrhvlsevensevennbjkvhz84 +cmbgm3eightpbmgjhsp2 +fivepdhtcpvg3ninenlhpgdlnnine6fblsmlz +kcnsfsfhjbcffctznvp1 +qzrkvhcds4gklftv +xslgkktct7snbxnplbk3five +zspb1sevennine76one +twonxtngxlrftltqggpftj3eight1gsrkbbclll +474jxtncx +bxsqsb8 +svsvvtzddklkrxmpd2 +xbvjfmcnine2znbqn5eight2smvkgpclvs6 +tnlpfivem7 +7seveneight2dfiveonesix6 +fspcrlcthreej1seven4 +7nineeight3hzfour +9fivethree +four5ggbseven +5hsv +1ppkkkhfzn +pkfzkpv9mtktjvrssdftslonebpmhf +8fhfqmzseven +six89htmnpmqsixzvxl +9mbkcbnmptpkhqvvzxftss7 +48five +eight8118four7qsjb +cpghtgncpkkxtrvrsgl81eightcfzsjfq6 +ninecsthl8onefgpmc +3threehnrone5dzcfdtpf2hdlnrxnmnhjqqqn +5ninesix54 +lnzhtwo9446onefivefour +8two427bvcdkckdgz8 +6six35seven +six2fcpzhbn6fivekm34 +httmgldjfqnnhktmnhj4dsmffzknbq674 +9nxrtsmqbcrgghqtx6kdnrfjq +thhmbpjldslpthkfxcfive1zrjqtpvjs8 +cjtbcn7five9nlpgsoneone8 +seven6eightx176ffrvml8 +eight9jntmr4sevenmzjb +mxk51gt +three21foursevendbvm +zqtdz1ninemmhkjfiveeight +98xlpkzb +34two5four2cvtcjfdh +jvndgrtjonethree6 +ninefivefive1lfqjqmptxvthree +kkxfqqkf49 +3sixseven3dzpvnvt51rnzljdprb +hpzpdrnkthreekct1mqdvljhrls3 +six6sjsljgvgzhrzqpsznh3fivejpxsvqccrc +cpvlr7 +tdgthree8twofivexxrvct +62sixmt9ninefour +ninesevenfourzfzl43qssqrkktpnzjv +8mfztzthreeldnjgsfseven +356 +6vrlthreer9sone6 +sixs8six5sevenvnkgbmxj2two +8eightpglsknpxmsixjgqcftmvprjlcdsfks +3dlkbc1 +five5eight1 +7seven49 +ggoneeightgcfnfkgbmlfourdls23 +seven6jdpxxkfone +lfive715 +2ninefivej2sixeight +ttwonethreethreesixzbqz7 +zmbqqcd8ztp46567 +nineeight11 +zhgsixthreejffqhzdfvfxjpfmjqqkm36one +5vgftjvqkxj6pnctdcrktwoneq +9ptmkf8six +lbjxvnfiverjppbtrhf6xbdnsltlnrqsgmx8q +365pxj63gshpg +vlq5zhgj4 +98hc13nnrzfzschg64 +2twopq76kpmjdjflkqzxlvjhr +rnvmblqhq1 +8j273qfpfkz +dsevenvvdmxhhcd1dkz +lkqhrxkmp96fppvsdtwombkfour +3one7dzpbhsrdf5 +159ckggpfzlgntfrddvfiveeightthree9eightwodnp +eightseventhreeseven1 +mrzpk8 +fmvxth2eight8hjmfkdxjh +3threeone +nine5sixsixnzlqhsc +xtxbgtntwosixfour85 +3eighthz4twoqmlhrzsevenkcqhgrghrd +12ldchpqzm +zcfjz5sixmqqmfsv9six6 +sixlzcdtd3qlcjqzrtthnine +1one6nine +11xqblttcrdvgb7mdqkphrbdx +xbcc4mtgf5 +sevenfourmthree1hgpnmvcvgshzvcsjdbqqgmt +v5xmghdgbkvnine +29mkpfz7 +jptwo4lqlrh2onefive7jhcngr +four6twosixsthjqpgh2 +pctrvkmc82four2958 +12eight3 +7jbqeightlbbnpsvvdfrqccb +peightwo6sevenfoursixdmchsd1 +53dhphzvhnknt65ninefive +86fivegpnhl +tpcspvvncglcsqjzlqrfivejgfl8zspdltrd7 +mhpskcvhn3bkjlmqd +onetwo4lxmsnddzfbxcdcscjxxrzsvvzg3nvtrpncvpmc +fprqq1bpqxvjmblc17 +four7ninenineksjcktcbtzsmrfr +3nineccrnhtgg2knczqnnineoneqsgm +4xnkljmg7lmfvrhxm96 +five458eighteightxcgrnine +klrzfbrpkmtptdscktmcsqg5xonesix +vtmh1glhzlkmrlgfourpsbhtbrvdz57one +9eight53threethreepgnc +fourseven3fivefq57 +5sixsixthreegdsrhkhdlk3six +v9xqhpzkfivebnjslbzh548 +jssdslcxxv3sdhbqnine5sixeight2 +vr1 +eightsoneqrrqfoursixzngsths9three +ltwoltrplmlkzz5sssjmzgcjsixfivejhms +49one +2sevenfivethlgxmxssnvlsfst4 +8slfnfsfk +fourszbtpvvlvppsqbsprthreexgrlp3zt4 +seveneight8rhonectrmxrjvnnthreetxmfbvxtlt9 +twofive6eight9 +zqxpxlzjm3hmzjzgoneeight1seventwo +9xbmqqtkstflg6onem2tdfsfjnxdmmzlrcnpm +pgcxbqvvj6 +xfsix893 +7four1 +63five +tr9chvmlhhv6 +jxc2six452 +11zvz +oneqkhstmkhb11fourninezs37 +3mxf3slhhs +sixgdnljsfkfnffp67789nvgc +sxptjdmqfv1eightsevenfpxpdnrtnqkdxhnzdm +grdgt9ninedxnqhrts +8sevenxcsl1 +fiveeighttwo5 +bgroneight2pgzdpnzgchkq1 +5twozc62foursixeight +six61 +cbxzoneeight1 +hntwonebmslklfkfgpngvffour5 +1262ninemdjsrdk +roneightqnjseven2 +rmnpjzflcmqdrdseven3 +ltwollzgvr1fiveeightjvv7 +kkc5fourfive89 +cqnnhjxp4dtt +jeightwo1fgtlfpsixtwo9pptcpmjjsixone +832 +9eightkhlprvq7seven +ninegeightbfvnvvnpslspcmscvqcqb6 +jgksh2lkss6onexznvfhq +flqhlpkzjvq3qvvgvjscr6v9eight +hrgeightwo8 +3fvpkbrhqchlbsxhlqfone3eightmhtxbrninerbkrsnxbjg +871eightnineq5f2 +6jnonergcjfvkhfive +one47fxgvgmoneoneoneg +5xktmbkqftrlvztctxnqprpnine +eight4tfvsbtmhtwol +rbjdrmbcrs9chvcj7s +eight12bdzqtvnqeight27rpt +fq713oneone6rgrnd +cdt96 +dbfrd4rczmbgnmfrltdlpbseven7lqhfive +fourdxxkqjfpjxbcthzhbl67eightzks19 +2four5ntghsdcsdrjpbrtrt3bzgbtfnknine +tvmnjgcsixnine8zrc39five +5kcbfkj61three9tsqpvzdd +qsmseventhreeone4twosix +twosix2 +jzsmxs9plpsixpqxffive +sixthreeseven4flbct +mpplmsrjvz9 +8ttgt9ninesevensevengnprjnvxpjz +8gmpgvbfjcdsnkcth9bbnqsqhqqzeight42 +nk5b +four98six83five +415rqgdfsix +mqrkmbvtm668 +6453twoone +9fiveeightseven4gsshznxbkb5 +seven3ninedgthree +jckgvtvrs3six3trrzfrxfnm8 +98fivexxdqpmv74fbthtqqfourvttxnck +fivenineonefour46tccfkrsrpqnxhtm +twobdsqhnscrkbzt19 +llmccgn8 +6eightoneonen57 +meightwo1cjqsm3sixlrr +98842 +twofnsvbsxkxrzghhrz29 +tzfjthreebkkljhninetwoone6zgpgsgxq +fournkcgf85seventwo +642 +four1oneninejbstfcdgjkjtppskglj1 +4four9eight2tnphxvfour +sixjhcnxkksxthreeseven1four1 +rb34pqtnnfive2sevenone +33sevennlnhrkkbshonefnrqq72 +3sevenfourlmqzfdjrq +tmttpfb4mghtcpnine +nhlqlcxff8 +fiveone5gxg +fivecrjmsgljxb1mqmffour8mgtdxsjsix +1jdkvzfmbq +ndzqgk6 +threeg7twofour2twossldnmthree +5rsltvdtworrglclfpctml3 +nine6fourmcqbhbvlmzgnfqtbcs +5eight92 +ninefivefour3kbnmrdmxjg2 +73vprclhthzz8 +ninettjnnkrsix9kvxjknzkmsxtvdn +bgzfv59fhsvcjvlgmhhzph58 +threeonefivecgjstcmp57 +9onefoursix +sjqjvd4three91 +9ccdjqfivefourfive6mrnkjqf +7lzdrzjheightthree6 +43 +nineb8sixqqsxrpn +fgkj15eight6gggndbjxvthree +one3sevenlfjqmbmssgbzs8pzjptxgvq +77fiveqpjpfdqteighttpfh +2333twonezrr +8p4cxnjvbjlh9ninesix6 +ninefour95 +67twosevencktwopjcmcxr +9four1threejbrdmtkzn +ninenjhstmmmj3four +4lnqjqtwo3zxfznvp +sixfivesrxnttwochrkdrr7 +4three1 +tfeightwo9two69five +oneseven3sixfournnpkhhx9 +mdl8kfpvthree +fxcxgmq5three3ninehdc8 +one9eightfiveonernhbcxjninethree +9three3fcpgxksix +nine346946one +hzkpbmdzdmsfkrbxvs6pnmqsevenlnr +kzsgmsix5 +kdjdvvdl2 +8lcpfkhdltwo +xjzfbgrmvxprqpflpbk9cnpxdkgmvvjz8vbrjhxvthfsjkk +onefive7 +tjqmxncdbmsjznine1zlr +648bhzlqnlvrshdgzonefive +eight2sixtdzznchf1seventwo4 +sevenzcmpbfbzdvjlztpx62 +5961 +97192fivethree +seven1mcxnqqzvpp5 +8qn1eightseven +hcrrthreesevenlkvhfbj96twonine9 +two8four +hpkttfdpgb16 +19oneseven2onerl +347seventwo +eight4threempfbxbssrrkscnc4eight +555qrppcplpgtworxgbgdjdhltwothree +v9627 +twoninenine72tkcbk +one5jhczrlqmhr +qnhr4xlckprn9x3bzrdbfrdql9 +lgtdv99kmgjjkzfive +lrclbljqqpninerrjptvpfour2 +fiveltkcgdvgkeight7seven +twongdsevenfivefive3foureightwonn +8svdmkflj +rlbf4sevennc4jxsskjgktwodsxgtlkthree +seven4nine4fivezjfsjghbcninefk +drghcjthreevstpdfth6sgqtx +zkfthreefptvnvb9five +gjcqspnkztlqdnzl6 +6nineqzgvhcnhjxbmtkcfm8one5five5 +threesevenseventwoqrcvpvvrdljfone3 +v44nlcdx8eight +eightseven3bmfzeightzccxqk6ftlsmfp +seventhreeseven3 +7eightgvxcdxzplrthreelqgbhvpqffivefour5 +8coneckchx5pfive +xhbbmsvjnonethree4 +lnktfknbqfive4seven +8prvncdq97hjjltzreight +2dfktgjgdrvfour +9onesixone +873lsmllvsvp +61dcjgpjvqxj +xtwosixfiveseven2two +p4 +threescgqlmkt43one +plffdq4pcqfoureight9one +357qzoneztwo6 +6ztllqsixgtfgcr +4nineoneighthch +fivesevenninesevenvpnfkjpeightjsvtqxgrx35 +8nsbjtjrhnv36 +4eightseven +5rksnms6fgcnrttgl27four9l +3gknvvffflfgdg +8ts98n32one +4vmvthreefourmttwo +sevenskfmmmsjone95 +seven4fmnxskg2516four +seveneightzjdnjthreethreefourpj3three +two8one44three3 +bffeightwo3twosxljzljbllrtttzsevenxfonetwofive +5eight5sevenfour +4fkxqm +7nine4seven +6eight3sevenfive6pxjlschvhm +5nine7spbqddhrqcbzrvhkrt88 +cnpbkmbfour88 +41twoeightlgcjfvms +hktvctnine6mzccvthreefournine +1dr66mg5one +five74 +bsrrldft858six2oneightm +mmsvhxsm68seven +lnjcnn4fiveninerlsqkcn3 +fgzjrlmfjktwofournine5782three +1two8fiveninegndtnzndf41one +kstskp4one9ponejlcqdvgkkdfive +four7two +mzcbhhxgkfourfour34 +qvhnpbmvdbgxbnhcgthreesq7dvmdnhl9 +1jhmkdmmmjg +6xzpvzvqbrnine8gg1771 +sixone9qvfft +6eight152two6sdbl +sevenjlpmzv7 +jntrfc5 +ztspfjhk4 +9fournlslrmlr3 +2kqsxx5 +3nineshlmjsevenfiveonellrtr +7hcxxjkbsvknbmtwotninesrpsszktzjlntwo +fv1six81 +onetwo4eightsixjkgmtvxptnxltqtptncfsix +eightzvmmone3eight9dglsqq5 +jvqs4sevendl +551six3oneseveneight +5jtcbrmtbjmrb4sevensmmrctntvz7five +9lrnfive4 +twoxfltgdg5six +one4threeeight3eight4stlp +2rpxk95sixslsc895 +seven15 +1sixsix9sevenkhlnhqtzptwovzrmbr +two55six +twofour3 +eight6fiveeightbmrr1sevenk3 +4flbntjtfivepzkjplzxn7 +ljnpmnskjsixthreehpqdkccffg4sixfszddbz +9gfsqhmonelgvxpkmnhldmthree7 +5vthvsrcbxbcrgqnine +six6nine2v +htnvsfmz7dtvthree6sevenfourfourrmsdfhkd +pb24 +sbmmdnfvmlfourfivenvcnb3jrctctmrhm +2fourone52hkjvd4 +1bhpbmxhtr4eightwolkd +5qrqbxtgppvvcms +mgcgxpmj4dl3zfckcskbqnsknlctwonxsddvhl +6zfv66onetwosixtwoxdx +676jmzcdbcjnfrlrgqzfkmdxz +oneqhgcqjmjq4 +three6qvlkksf98 +fivesix614s83 +threeone9kplvzq28threegcmtrzzlsix +5lxcjrvbthreednttcxfnfiveseven +threeeight5seven5jlhhfour2 +xcppxkxqffc6six +fouroneseven1xrdtbvdsix +vfqzhvzclbpj2 +5seven8xlhfivetwofivedvlbtvzvs +7bjlrvnncgsseven7six +3qsnhs +2fivefour5 +gjgzjs1s +vxhlxvgj39 +three1lvnrfrbzj6nine +oneftpcjskxzhv21one2twomshxlh +nine36 +ninetwojfqbjkbtrfseven4nkszvtjnffeightwoxdd +eight1eightfiveonerzr4 +sevengtwokzcxvvg4 +qxkmfdznfive98eightfourprmsixthree +1two743six +274sixqqq62j +sixfour4fourstxrskpxc1eight7 +2fourrzngcnlm112twoone8 +nnqfmonerrpxeightfive9 +klzrfbxjnznzkt24pjngplcdlftjz +66gbsllhhgxn38 +threelzzrxspvq8four +qtvtpqspqflonetfrzvkthreeone8gsjqzgnv +9vhlxrqtdmzrpfqh74zsgnmsdlqgcp2 +qkkkhxbrk35eightjpnmb761one +4vp4four49two +five6nrmvcfzlt665 +skkqlzl1mrkgncmqnine68xvhfcsc +two17kbjcdsstlxst6 +foureight3twonglgrv +6nine5 +pgcmqzcfninepbgcrbzseven5zplhhbrjbpxj +sevensix6fourtwonpninebt +eight7951one +glvndtgdfkzzcbsmt36sevenfour3eight5 +dtvgrkkzvhflhcsknhsccmxzgfivetcpz4zrcl9one +jpg3onenineqzjseven8phltdpjrsr8 +68one +gctzfjksevenszfblxone2seven6pd +93nine42 +two19four97crzhqndbqpmpvj +3six4mrntvlzntmqgcmms +1gmpdqpfkkz +xmsv3eightmdnqkdtzn814 +395zqfqrgzs +9eight81cpnvrkkl +7rddzbqfm5fouronekxkhlgf1 +fkclxddmxrpqzhqeight697 +2mtvxtgq5six +3one9qvnpnmhzj6 +rvvf3six9fourrq +r2eight55gvgpfs +dtztwofivefive12 +three6zfqhnjzvr2twosevenoneightqp +sgleightwo2974c24 +pplpgxnvzfpv4xlfive11four +58one +61four29 +eightgxcgbrzd8five8 +jxdzbxcc1one6pfivesixfiveg +two542cvjxvmhhthreexkl +three8nhzz4 +sevenseven1seven14pxtwothree +mpdcbdjkp8ninethree +fourthreeg9pnine +onesixfourtckbkjdkqbfjkgpk54 +qxh1twoclvzvsvgk2dvpkncltdt +fivefourhjckmndtdp98jzgqvrhbhxeighttdxkjltrdq +296dvxdxhdb4qbnmkzxh +djsrgct28vjkvsttnlf4 +7rhdkfvqbxninegnkbgcqv1four42 +seveneightdcb7sevenpdvqlmkvfive +39lr83hhhrfivexbhr +zx32sixeight +7hsxxzjjdh4rc55threeseven +5oneseven2sevenfourtwothree +9oneqc3seventwofive5 +five2hnfkvsxmhjfivefivesix +3sixnine59three6mncxxxhkgxzlxscdzplm +eight9three62sixfour +26hfc4four1 +jrnxgrvrctbg3nine +four73dqfiveeighttwosevenknq +94nine8fivevnvlnf +twopg79nine6kkpfgmpdlqhfc5 +511twogghonefour +bvdneightsevenfcjnhccrlb7nine +lpfoneightfrnsrpgkzsixv8 +1sevenseven981 +53kvftth53fourc +zcmkkshveighteight1 +9sixcrfzhfxzzrrdtkscp +8fhslkqzsc5jlpthreeninemjftx +rsfourfkglt1hfvhgeightfourvbmsnine +sixninefive5 +2jqdfddkzzqxnkv8two +sevensevenmxhpqvmngfivecnhvg18 +threesxrninenine31sixnmnssk +kzvvsvbjrfoursix6four +ckvmxptpxrvpsfvt9nine +66ninezgxttq1nineninexggjrtzgg7 +two2eighthsrnine5pmptccfkfcpcmkn +seventqsqhbftscfonekdhrctnlcfdgzhvshsjgsbq7 +nine1mdpxvlxkdx +pm4eighttwo +81ggljdxsthreeninefive +twofivenine39three +six152sixp +threemztwotwo5fiveseven +31twoninefsxmpsjx6eight +seven2deightone5threethree +hxmthvjphjdgctfpt4dfhxseven +4twoeightzx8 +9dzbjqnnmbseven7 +crdtprqs455onedmzvkzmmm +jqcxsxblgml1 +9sbqzndbsx3twoseven7 +eight8threezvvqbrsix34 +ztzlrsg4qghxkvspvcsix2jndhxzfrm +6twovjkjgptwo43lg +1psnbrkbhb8seven +xfxqjrggpmtf4fivenine79 +6pdv1xpsgr +zb4rqrqxsevenvklzmslqls +fourlstone7 +53joneeight8ninef +1315 +1qj4 +djeightwocxrnf5fourone4eightbqj +jrgxvsmnzg5 +twonsjbzvtqhgfivejdhxstbzrbtpndnjlvb7hhxfmrxtfxrcmjs +67xbctwo +7nbsrhcvrqj +fqnl9foursixtdgbcncr85three9 +gmg4mr3rvdt +19qhmhvpzfour +pkptr6lssnqxncztpbt8 +sjqtxbxp5twoseven1onerrsqghcfpncgkfour +7four8spgzfoureightthreedqp +two9bxlqs +deightwoninethree8 +3plpprmmhvvsnvdzjzr9sqgbddpghthreejjmldhdqqm +sevenfiveseven4bkvxkzqbtxjvdsltfkn +sevenssfkdmvmntpxjpqlj8px +4hk9 +fivenxcmhf78pmdd6mmqfvdxqbh7 +five9hvfive7 +eightfourrpflnfourtwo61 +threenine2 +ncdpjqcnine1twoonehglvzpzf +jmtpbhbshrvmhvqt38brsqpxn4one6 +onesixvmmhsevenfoureight2six +ttwosix5nineb3eightthree +cmkdmhkdf3zdhjfmb +three5fiveqrrxrdtsixtwogntmvxsggqfive +oneeight5eightfive38twonegv +cqlfhlch924mpmqfvtwo +jrnzg5four3fivetwokxphktf +seveneightmzmzftx9gsmxjkj1stjbvxlvmlcdgnine +twonineeightninethree6blhm +3kskponetfgjgzphqtr +ntwo2 +5six1vksjzrlgjnxtwovbkrdlhjsmzdxcf +twosixkfmcfndlj453two +six5twotzbzqtwo +fivenpcqfour5twonej +nineninefouroneztvqspscnk4twoklbht +bqcbm19hckcgtcfkb44eighttwo +52jcrbqbkhjx5nine8 +5threethree +3twotrnnlstrndthree9 +15zsnrfshn7twoeightsmvsfztx +789ckpxflvkr +skxlnpxxdgbhqnineninejsltrx8three +1sixone724 +2seven4 +7knspxrzszdbgc3seven +vsqmpf5sixsix9eightdtgmpxrksb +three6btwo11fived +bckqdndnine7bpzvkxkdqtwoseventxpzqg2 +one6ntmlmfkfmjfourmgddpzfr5scjhhmgsix +four12mlhdscsxfiveonesevenlone +9rdlctlkc +11vjvjsllfivenv +2four6fourfive +5czmqmdkkthree3 +sevenfive9 +sevenfivemqjhqh9mvdkgtr +glvpdbbhxs9 +four2three +six6gtdbttnhvkvh +5fcsbnpsixeightonetwo3 +5psvznthreethreefive5qrkftfkqsix +36lmm +seven33onefournlr2 +13seven +onejdxgxjpcsix1sevenpzbzthree +sevenqcjsxz6twokkpzllzqninetwo +1367mtsldgrdeightp +five111hbp9tlqp +threebbnine7onesix2twoneg +mxmpnxmpqponeeightktxvgkcdr7 +411fourdhrdvrz +zxkmcr5eightkzqsixsix7 +six972zleighttwonvgvth +vnmmbzfpttwofnjd76 +twopnthreeqzlvkptmph9vnkbxghnone66 +nine1fiveninethree4 +mdrdpbsfcjsixpnxfour2four2 +sgjrdtmzcj2mbnlbtqsdboneeight +9jbmhchfrnfqvxcjtwokrbjvzmcxrj +4jhjksqvnqsevennfrtslcgjbrhfour +6eightlzrrxfbcjeight5six1kzhtpbz +jqsmqbzpntxdfvdthreezrqzdhthreefmvslxk6 +eight82two82zqghmbd +qtwone4d +6three16 +9eightdmtkznh6 +znc1185 +eighteight665bxbngx5dvht2 +9seven83three +mqdnhqfdgzfshjttvfour3hq92qtpdblnvdsxcskz +twofourfivedfffknb6ljxjlsq48 +6pbdfrqpfour +vmtkqpjftc9twonej +rhcstmvxdnjgldpmlmsnineglmkntfiveeight3lgnlqmjkzl +rxzbjxjhkvhtxps2twohlcdgkrbdbmxvpf4five +1three9two +bp234jszvspdq +rcmhnmb3lpxneightfivetn7 +srdh461fourcrhhkbxftghxqrptn +rlhlrm894 +jtmmljgmmppknktqrbjtwod9 +75kvnbm +psbcdponesix218 +ndx5zthreetwokjjvzkjk +onerhnmsxmseven7two2snn34 +nvmfj6hqdspmndlzqhrrznrpcgn +lqqgdmn5fivesfbqhveight1 +one5pjpskd25four3 +91dxxjkrthreethreefourfiverrdhqtwo +3sevenhbrznfcqmfivepqnmzxvlldhfdrvkqfmxzx8 +lrfflx9pvrfctxkxk432 +ninerhjlqfzg3fourbvfkbmxbntz1 +6dkgtthreebjfgjqnv6lveight +seven527rgztslznxdkgrgf6one +npchxbnb5zpzrllhx777 +rfour4qkvcxsbjnveightwogm +foursixsevenppnrdgpnrkbr5 +3three4lm +1dmxvfour7 +fiveh1eight +643 +fivelsffmhsldlfkqkb2threek6three +23dpbpjcsqslnine4799 +shvkdvntpmvt52dvclb5bjdj +eight5sevenfbjrpbdsdzhnc +dv2vqtqghlkprxx6three +four1six4fnznbcdghfzpd +eightfiveone4fourone +two75four85 +3331 +9eight1seven +9threexbsevenfour +22meight1 +75two +five6onetwordjsgltj +oneseven9one +djljfzv7cnpnvhmqkjgn5eightsix97 +three8xpskzk +nzgpp7fdcl6twotwochsgztwo +1tfvvmzfd4threekgqdthreesfxjggmszz +7krlgg8864gfp94 +3xxpkqxfxcn +eighthl4cctb26bppqpsc +eight5rq +hncmdrmfive4 +qml6mmx +qpckxnrjbdlprhmrqeight3bcjtghrrfvczqxeight +nine6five +fourmnzrtwocvdkmlc6 +3sixseven1mnbdqfgcqqcpsix +ninekvxrhk2jjjrdlqf49 +7seven743 +xnrz1m5 +cseven8pg2 +hxbfzndh6nltvbv +7zxdkghnzrzljlqftwo7hfmptrgd +5jltxrmxn +9eightqskgfndxsgmsrprhsvnninellts +dz88 +99nine +rphppqzzxk2four +2nzeight +four44two +qtwonetwodgbhqmtzf82onefive48 +6fivedhmv +xsvpdrtvr28ltsjseven +foursixfour61nrseven +qrhtwone3tmtsixf +sqjvg2pzbzpgthreenine6cpsq +jlvnsbshjmxnxfouronesix2zlff5 +rzxkpczkn1bkcfbpbcb +9nmkljlqmd9fivenine7fivexndtdghpc +6twovgpsevenmzcbjtnd3threegmsltfhrgq +fourmktnjsk4839ljqvqf +47hcbcnhjgxhdfn7rrbonehvlmddbone +26fchgtdnbtwo8jpqxkb +7dxtslxqkbqfivefive +sixnineqnjmseventwo5gh2c +three1eightvxeightwogrd +twotwoninesixxdvrxv5 +sixonetqddfmone1seven7 +fourseven9ninefoursxnnnfcbtb88 +twonpbnblrh3qckkxckflprdnr4 +6eighttwo2sevenqml +three1twotwon1cjfnnnlptc +tlqtgktgjtgfour24four91 +ghseven56sevensixhfstvk +qd8fourvmvgmssixsix8oneightps +jjvhthplcgzdndmrnxmctrtnndmzztnggr9rspflsix +jqk39fivetwo +nine2sixrtwothree +gccjpxtcxfone6six6nine5 +7twoeight8flzqk77 +mjljctdbg8 +sixthree8 +bbdlvtsjhjst88 +dklhhhlpqqxlgdzzheightjntbmlfour4 +ggrbl5cthnzlsbjssixpt diff --git a/src/day1/mod.rs b/src/day1/mod.rs new file mode 100644 index 0000000..fc5a92c --- /dev/null +++ b/src/day1/mod.rs @@ -0,0 +1,116 @@ +use log::debug; + +fn first_and_last(line: &str) -> i32 { + let first = line.chars().find_map(|c| c.to_digit(10)).unwrap(); + let last = line.chars().rev().find_map(|c| c.to_digit(10)).unwrap(); + + let number: String = format!("{}{}", first, last); + + debug!("Number: {}", number); + + number.parse::().unwrap() +} + +fn search_and_replace(line: &str) -> String { + let number_mapping = [ + ("one", "1"), + ("two", "2"), + ("three", "3"), + ("four", "4"), + ("five", "5"), + ("six", "6"), + ("seven", "7"), + ("eight", "8"), + ("nine", "9"), + ]; + + let mut replacements: Vec<(usize, usize, &str, &str)> = Vec::new(); + + for (search, replace) in number_mapping { + let mut start = 0; + let mut last_pos = None; + while let Some(pos) = line[start..].find(search) { + let abs_pos = start + pos; + last_pos = Some(abs_pos + search.len()); + start = abs_pos + search.len(); + } + + if let Some(last) = last_pos { + replacements.push((last - search.len(), last, search, replace)); + } + } + + // Sort by position in ascending order, excluding the last occurrences + replacements.sort_by(|a, b| a.0.cmp(&b.0)); + + let mut modified_line = line.to_string(); + + for (_, _, search, replace) in replacements { + modified_line = modified_line.replace(search, replace); + } + + modified_line +} + +pub fn day1(input: String) { + let result1: i32 = input + .lines() + .map(|line| -> i32 { first_and_last(line) }) + .sum(); + + let result2: i32 = input + .lines() + .map(|line: &str| -> i32 { + let modified_line = search_and_replace(line); + first_and_last(&modified_line) + }) + .sum(); + + println!("Result day 1: [{}] [{}]", result1, result2); +} + +#[cfg(test)] +mod test_day1 { + use crate::day1::{first_and_last, search_and_replace}; + + #[test] + fn test() { + let input = "two1nine +eightwothree +abcone2threexyz +xtwone3four +4nineeightseven2 +zoneight234 +7pqrstsixteen"; + + let mut lines: std::str::Lines<'_> = input.lines(); + assert_eq!( + 29, + first_and_last(&search_and_replace(lines.next().unwrap())) + ); + assert_eq!( + 83, + first_and_last(&search_and_replace(lines.next().unwrap())) + ); + assert_eq!( + 13, + first_and_last(&search_and_replace(lines.next().unwrap())) + ); + assert_eq!( + 24, + first_and_last(&search_and_replace(lines.next().unwrap())) + ); + assert_eq!( + 42, + first_and_last(&search_and_replace(lines.next().unwrap())) + ); + assert_eq!( + 14, + first_and_last(&search_and_replace(lines.next().unwrap())) + ); + assert_eq!( + 76, + first_and_last(&search_and_replace(lines.next().unwrap())) + ); + } +} diff --git a/src/main.rs b/src/main.rs index e7a11a9..bf963c4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,23 @@ +use std::{env, fs::read_to_string}; + +use day1::day1; +use log::LevelFilter; + +pub mod day1; + fn main() { - println!("Hello, world!"); + env_logger::Builder::from_default_env() + .filter_level(LevelFilter::Debug) + .init(); + + let args: Vec = env::args().collect(); + + let mut day: &String = &"all".to_string(); + if args.len() > 1 { + day = &args[1]; + } + + if day == &"day1".to_string() || day == &"all".to_string() { + day1(read_to_string("assets/day1.txt").unwrap().to_owned()); + } }