From 72a14842504e028edaefc697a7bdc957e9be1155 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sat, 2 Dec 2023 13:30:30 +0100 Subject: Renaming --- 2023/01-Trebuchet/example | 4 + 2023/01-Trebuchet/example2 | 7 + 2023/01-Trebuchet/first.hs | 44 ++ 2023/01-Trebuchet/input | 1000 +++++++++++++++++++++++++++++++++++++++++++ 2023/01-Trebuchet/second.hs | 78 ++++ 2023/1-Trebuchet/example | 4 - 2023/1-Trebuchet/example2 | 7 - 2023/1-Trebuchet/first.hs | 44 -- 2023/1-Trebuchet/input | 1000 ------------------------------------------- 2023/1-Trebuchet/second.hs | 78 ---- 10 files changed, 1133 insertions(+), 1133 deletions(-) create mode 100644 2023/01-Trebuchet/example create mode 100644 2023/01-Trebuchet/example2 create mode 100644 2023/01-Trebuchet/first.hs create mode 100644 2023/01-Trebuchet/input create mode 100644 2023/01-Trebuchet/second.hs delete mode 100644 2023/1-Trebuchet/example delete mode 100644 2023/1-Trebuchet/example2 delete mode 100644 2023/1-Trebuchet/first.hs delete mode 100644 2023/1-Trebuchet/input delete mode 100644 2023/1-Trebuchet/second.hs diff --git a/2023/01-Trebuchet/example b/2023/01-Trebuchet/example new file mode 100644 index 0000000..7bbc69a --- /dev/null +++ b/2023/01-Trebuchet/example @@ -0,0 +1,4 @@ +1abc2 +pqr3stu8vwx +a1b2c3d4e5f +treb7uchet diff --git a/2023/01-Trebuchet/example2 b/2023/01-Trebuchet/example2 new file mode 100644 index 0000000..41aa89c --- /dev/null +++ b/2023/01-Trebuchet/example2 @@ -0,0 +1,7 @@ +two1nine +eightwothree +abcone2threexyz +xtwone3four +4nineeightseven2 +zoneight234 +7pqrstsixteen diff --git a/2023/01-Trebuchet/first.hs b/2023/01-Trebuchet/first.hs new file mode 100644 index 0000000..366d28e --- /dev/null +++ b/2023/01-Trebuchet/first.hs @@ -0,0 +1,44 @@ +-- requires cabal install --lib megaparsec parser-combinators +module Main (main) where +import Control.Monad (void, when) +import Data.Char qualified as C +import Data.List qualified as L +import Data.Map qualified as M +import Data.Maybe +import Data.Set qualified as S +import Data.Void (Void) +import Text.Megaparsec +import Text.Megaparsec.Char + +exampleExpectedOutput = 142 + +type Input = [String] + +type Parser = Parsec Void String + +parseInput' :: Parser Input +parseInput' = some (some alphaNumChar <* eol) <* eof + +parseInput :: String -> IO Input +parseInput filename = do + input <- readFile filename + case runParser parseInput' filename input of + Left bundle -> error $ errorBundlePretty bundle + Right input' -> return input' + +process :: Int -> String -> Int +process acc str = acc + f * 10 + l + where + f = C.digitToInt . head $ dropWhile C.isLetter str + l = C.digitToInt . head . dropWhile C.isLetter $ reverse str + +compute :: Input -> Int +compute = L.foldl' process 0 + +main :: IO () +main = do + example <- parseInput "example" + let exampleOutput = compute example + when (exampleOutput /= exampleExpectedOutput) (error $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput) + input <- parseInput "input" + print $ compute input diff --git a/2023/01-Trebuchet/input b/2023/01-Trebuchet/input new file mode 100644 index 0000000..6deebe0 --- /dev/null +++ b/2023/01-Trebuchet/input @@ -0,0 +1,1000 @@ +jjfvnnlfivejj1 +6fourfour +ninevbmltwo69 +pcg91vqrfpxxzzzoneightzt +jpprthxgjfive3one1qckhrptpqdc +mxphxfnffninethreetdj5jgknqfrxmhxfivexcxqv +three7pktwo4279z +1qcbszfgonedjcqj66929 +fivesixthreeptcqjnkzgdfgzspmlvmmhn3 +vm2sixseven +1nine6oneeightnine5lfrzmzh7 +7onevsffj78ninejcnnvgn65 +qstwonepcd3twosixrmcnxhfzv +3bnjfrfourseventwo +zpcdmvmktlrrq8sixgjtxxjpt8fcstt1 +nine1gkmptbfsix87 +9ldmlbchvnvgfivesixnine7zrt +45mjmblfqjvf9 +onehcpgmvd837sgzgsqqrtseven +rhjfvkznjdvlgv9one8 +22xkkdsvfvfourhdpchs +sixzjx5kvjbcfgcsrjndznkrtf6 +1fourmk8three3seven +4716lpzhdcbone6seventwo +443two27 +9sgtwoseven6 +pjtbhxchqfseven18tznxpbsppk +9eightwonkt +htsgxmrfsevenone8qjxhjsixnbsvcf5 +5jmnjnnfsfoursevenprtjzdxmxj7six +dthreenrzonefourcxfrzsvtfz9xb +6kvfn +vlfbzpbpseven8tspgqfdzkmfivefourzjzdbxgtvx +2rfqtfttqzkkzdjbjxnx51xrzczxmfmc2two +3fnncmsdz1bnxvlfxng +seven789bgzpszjd3 +6four8gjsmbztmp +sjvmmb9h +6jqttjkpjc145 +9threedzjjqnhrngktscfmc +5onesix +nine2onelpzhtrbninexkgtjqg +6nined +29xzfour7seven9pcvdbcgvtv +hjdtscdc6twotwosixsevensix9six +stmpvhnssixtwoffnhpn25 +45fourbpsghkqxqm9fmvhssbntdtwo64 +nine835four +leightwothreesevenlhlmqcgcpfour9 +fgsfsqgkcctzcltpvpjhlb5eight4one +four9four184five9 +67seven7twobdcltwonenh +nsdbone5two16 +sixsix3jxfctsrsvfcrpbxtthmspdlqqrnckxtngnx +fxftk3svcczpknmfourhlndmg +eight4sevenmrlkcqx4three +7ninerpcrqt46gtnlzlmknine +hppggtwohcckscs5eighttwo +phzdqznlbkthreephllsb32eighttwo9six +6four8fxcmngbnine3 +seven6five23seven +9seven6bfqkxsjvcpninehmprgsldb +tffjstchhs3rnjsmlnr3sevenlkjzkrdg3mmlgbgnnjzoneightm +913 +lvsqbjjsonethreeone864ncrlpdghgkfive +fvlmhpxcrktwo3ninejm6eightxmc +sevenjbnc2zvxnr4 +mqjztddmfmnskhlvvp2 +six1fivesixsevenninenine +vpbpbsixsqvxfvf6 +6jjqln83one +3dbone3 +ssczbsgp2fourdknjszzbvtlgtdplgplrnznmhdfivefdd +threesevenqctdslt457 +eightthree9eightfiveninetzhmhg +bsmzhmrm1eight5 +pzhpleighttbhhfxfdgprfjsxrzl7sixsixjgghqbr +one5onecfdbpvxbdlmmdbxqdlbldjbz8 +qxsbz4rjdgcfsvmqthreeone3mtwo +13zls3 +zpjlgbjrkl6four5 +264sevenfive +413vhsevennpbnine +gn9sevenhhhnblflxkeightnine +hgdfdsdb5seven +eightczrstqtcjmrpbhhdxrflkcjpsdjbskfvzdglt6nine +jrgr15mzkpt5 +lxzlvmrdcvglcjsjzxm3748hjlvtgz +ninekxcqcpztqfoureightsrdhtmnbpsqkc5 +vxfdkmp4fourtwopdpfmcqnrqkmvf +prkkmcccpone4qthree +lxxqfourkrttdqlhkjhp5 +five7three +sixmljbdl2seven8six3ffrfc +6threexgtvlxthree5fiveseven +three86pztxhlcfour +eightfiveeight79 +5ljzqvbgknk4 +seven4cnrxrv9 +brtwone8jsvbpstpmlbrxrjfivehhhqbvk +three69two3dhvzj9 +fourfoursevenninelpjs5threevnc3 +42nine441xbc +sevenfour2tqb42one +btccgptzllfivesixtwo6 +hdbzgcmznbnrq8cvzrqtpqm +jqzmone5threehrqhbdnfxhkqnvm +98nrcvftzpslxnine +five58one8snpvggzjbqthree79 +lkccfpfn37onenine6 +css9four2 +jbtffive6mtfzvkdpjnthreeeight +224fourtwojc4 +spceightwolbrcfkbrtwo8dkfmvrmrglmrsxlseven9nine +threeckdrrznbbhnpsrmbrxlmfjz1twothree2 +3twokcfivetwosix4 +k12mqeighthgdtthxjtwo +coneightqtpgsjseven5dzqpvgtjm +dpkjqkx22llklllblknine4 +svjmxbq8hfzjsbtccjdmqvbjcpklmqbseven665 +8rbfzjxlqx +onefive3nineeight5 +eightqrlkf4two +931 +41cvfivebfsxdkljjjkjhm8ftfdtnpsdmtkln +sixjcnbeightnjtbck72dg +tworvqfjdlr545lbpmlxknsd +kgnt7fiveone3 +twofourrxmcmj894stppprqjf +qcqpxnztmntwok34three28 +four1sevennlqvbk +6fkjkbc +2htpxbqvtg3one +2threezhxzfslfxhvzdbfour15 +nrfdrzdjtlthreeonennzfbone9one +sixtwosevenqplrqvxreight6 +djmzrfq3eight7five5 +jthreeeight51sixqlvgvm +foureighteight4vvg98 +tttrnk2ctfpk7692mbccxhmpnl2 +bbsix2 +1two3five89zjrjnbpt6 +29787jbhkhtbnbgfoursixfour +vpzmcqcvfour58 +9eightfcvfeight4one +cdbdlseven6zvzl3tshhdtlczsstdbksthree +three78 +hdmmprbbk9hvkpb +vfivencslcc974 +6jthreesevenstksbsxttctjkdnxgjseven +sixeight38sevenfive +7sixnzcfgfjpzmcdsprgcnvspfive +tttcfpm9sevennine +x7dfxhgtqmeightveightfgrqj +zktxptkzztwobztnfqvgxlkrsdhqhntqcnfknine6 +9kthreenglrnrxn8sixzlfdmfcdvnd +xjznine3332jtrfnkf +688k3eightone +4four2chz +1zpbmzvgxmhqdkr3four89four +nqbthreeztjmkdgtwo53 +qvfjzclkrkslfmtpdhjeight4fivefour +964eight91qhghxjxhcdslsnfour +45twojrbjxb +292sixthreekgzpzxxxk +6dgmmtwotwo +1msixthree4sixeighttwoeight +sixfourt9k +one1five6fourthreetwo7two +fourjmbfrhltwosix42 +frgfnk8 +138 +4nn79fourfour28 +7zs5eightonenineqnzpsf6 +bqjndhdtqqhpmltzfv27bqvgklpmfvhgvplbpnxhjvprpldpg +48tcrntjbninesbkkbbd +nineeight5nineljhnxhqbpkbbkttwo +scbbhqpcxthree1three1 +vlczgnrlz38threekjone +nine7ckxh +hpgvrtkpqpbjdlkpj2 +ninetwo63hhnsmoneightjtl +zkhrcrb743fhjpfvdcxq9three +nineeight5pfour9sixsqjnkpg3 +sixthreectddzgzrh9 +xjdgplninetfcldlnzftcv63four +fivefourmrrb1three +2mqxhngvb8 +5njfgllzxnjlqdgn +five34fourfive1cddmdhrbmrjpz +fiveg6seven1 +eightggzxtddx8mgl7seven9five +6tlmlfrsixbtznxhhpclb +twospsjtmnfnmfv36 +tcnmlsljtwo9onekcksj +6onenine9mhznxmoneightnvq +4seven6jxtknddnkfivefivenine +qxpcxrxstwoninekvlsmtckcd1cxqccqss2 +8pk3xjbsevengfcseveneighteight +7sevenstsmqcthreexqdh +three6sevenmeightjeight5four +958eightvg9bjrfpjfq6 +9zninegdmqrtxtlnfiveeight3twotwo +989pdblcmkxhn +sixvvkvjlndtqjlcqsixktmhpzs9d +4threepzgdjvsqhseven +fzfmnine5eight +sevenvv78threexpfxxktwo5 +8pgjdzvb1 +vj7 +sevennine3eightfzpxdxpmseightwozvb +gxftsptzcm1jcnmkqxnxr5five9onefour +2fiveclxxnxmsevenzmz6rfvhkrseven3 +fqqdlnkb45lgjjnk5seventwo +six5dhrkkxr +kmrddmfpzsfmkthreeonefour1xxhshbxd8 +gdthree3fivefour +sixsixj772four +eight53 +sixfoursix333 +one8twothreeseven766 +bpnvgxjtwohmlgqpx3nineeightvnine +95one88six +4onefrlccksvfcc7 +xbjh67 +vzrgvrkzthreesix2 +five8eighttjxphqzstx +fiveone3sixseven +nine44eight66 +eighttwogndjkpdxqjvjmd7kgxvjfkltv +mdpxgkxvfheightt41onefoursix +vqnzsgmgbglqmjmhmqqlpjjhkszprjc184eightczzbrpxh +jncvmkbone7vttpdnone +bvsmnz7hctzgcfkk +bssqrbzsixqx7 +nhtfvdnrtqqvjnzdgc4fvlzkm +zhvdbthreeeight61dp +24pv +onesjjdct1zcknmfjfjvmfivepxzfds7 +3six7one5seventwo2 +twosixonemjsc2vg8lzvjrpnnhq +rftwoneqjbq5hcssbxbtvcdsevenfournxhfkrrgjqmzmpmvrvnj +58five5 +43nineseven3293three +48sixsevenmgsr23 +eight1eight +5hkbzntwo1lplgmfsevengrnhbhg +1dqbbgjfvmfive7sevenninenhkspxbrxm +srtwoneeight1jeightoneeightthree +4cvhfbnine +vsm56 +5onev2csngkll7 +6six5fivefourzbjkdppp +gdjtp5onehqrngxqd +4fvltc7ninezmpnbzv4twoone +39sevenfxlcsfnkmjninesevennineoneseven +cvfqkvfzx887sgzdpvxvhoneseven +rvrhpssvkgzbbrgbgcvqbvdkfplsvk41bblsvtbqsk29 +9ninervjgsjrrtwo1twonbxcvd +8g9one +njznrrcshcpn9rbvbsgpdpv13ninefour +8eightfflllbgkmdh44onenine +9onetwo9two6 +hdfmvs6hjtjbzjth7ninefn +dfzgrfivesix67 +7l9 +onecjeight88hk +hgm2 +qt5nine7d8fivevlqjmhsix +nqsix7onennmln2five +6sevensevenmnxnbpmprd6 +five2seventhree2nineksczcl +twotwokcmkzgkf9vfcmfqhzvseven +4six2blsfjgmllblxnlfnspxbvvzjnninesevenfour +836 +beightwosixonefxlthreepjddrthq9five +22zhppjvmbfszrkrqt +7ljpvtkrmgkfc5pxqpd +xqrtsbzpjxhfn58three362 +2fiveqqdptvjxxnrnsrsixbeightfive +gsgfvsfp1mfbrt3dnzttnine44mgmsjmkgv +sixfive4sgxxgsix +3nv3dsevensixmsqfdc5 +two66six +ptz4qhkzftvxp4bfnnone +five1five2rjftfiveseven +kvdttwozhzcjk685fourtwolrbmnknp +33srljnsfsxhfninensjh +lkc4 +twotgnddfivefourcbfive35 +eight4qgthmpptkn +7pqdkhhxqmtkcspmlc59991 +lvpbhlpdnvbqdzfmfktvn552 +fivefoursixdrscznhfivefive49 +439nlvnine +qqxfoursix4xlslqdjvpx3l +bpknbhdtgst7 +6four4fourddkk7cdhmdjx53 +3sevenseven8two4eightfive9 +zj6vmnq1pqrstfkznf6 +7lxjzsevensixtddveightp +vbzrnzmcgvqkdrznhtblp8vjnxvs57five +six6eightzmhqvsjzseven +9three4nnhqsstptwo3 +twofiverdjfc96dqzeight +six8bgmrplfeightonek93four +sevennine4vzmf +54five6gfour73jpkgt +eight9288threeeight +gjkrnbtseven6618vktqpmhmnine +onejmlgzhpzdfmmkkt3fourpjkjglsd +xqxkqjcsnine6eightxclnthree2 +hmthhjbfivesix4gdxjbg +sevenkpjrscqhmfone3zjhxgptlgknine +onerzbfive354 +9sldh38nine +twonine9vqdzneight +7one24 +2fivesixtnhssqnrhbcxtchjbxspnvkcxbsfrf +kjpjqsnkrqnqpn99fpxfgmttxpxrd4twonebp +hhfrz8zbdjtjjjngcccctwo +mjhvbhrmpmmmbzcmr9four9dczbrfg +mnhbcdc99 +11fivedpgmrxptconebdvhfbvfvxfive17 +fivegthreesixtwo9k5 +ninefourtwo7zjcsfhcfnine +652 +five135eight4v +eight6hsjpkf13mhmkggqqvqdmrpcttvs +fourxndjxvpgpthree6vjs8pkt +lvkeight5nthreeskjqc24one +5vmqth +1lmjpflgsix91fourlfldlgmn7 +jlpnxblthreebzztvrfg3done +rrnxmsnptwoeight24threedqssix +nfdcrtlb7eightsvhstfourcmrsix3 +nbslbqkmmfonellrfpmvjnsix944 +seven2pcstwoqfg +six9nineninedpsixpqcl +two53mgfcbhmlpr1bl1x +bdzvksix8mlhvvscvvc +seven1three9two +4ninegvzqzbhckptwo8 +5zspmjkssghgtgpdpg3threeseven +6fournineeight +eight7jsxmdsix4jcnmzhxnrczslgclj +xjlmqfgd9sjvvhmxbnrpztrgtvgklzt3two +3gkfgrz71 +sevenfsix4 +one84532vkhbvfzpbthree4 +46zhdmrrh3 +eight7tdfbjnzqhs +rfqfl6nine7 +nkpztmkbpqzn7 +8mzprpmn6 +2threebntdqxfdonettbgnbx7cp3 +5two77 +eight7three +rhcbnrfslm8dqdthddqckonerclsshqhxpjdmgnmvsixgmqxt +9five2 +jkzntwo5fiveonetwonec +48oneseven +7fourlqptgfkone +six2hnlbhzxjjfpdeightwod +46onel +przvrp3ninethreenine2 +tnine2chbvxbkbnq +sixjnbsrtrhg9twob +knkdb5852fourfiveone6 +6onevndbhone +4thqp +xdnbtxgtjrgffourseven4threehzqxzqfourseven +cpkbtl2 +three6psqmcxphvtfhn +two42ninevndsevenmljgncshctnjrvszhnkt +threefrvxonesqkcjdlk2mrztrlttjvs +knvgqtqvn22jkjnxbxpkdfourfour9 +24oneqnnnztsshx6 +eighttbxsheight2phksevenptwo8 +seven8bvsnjhrl4hllmzbtlmone1 +three1626jvfqthree +bspdn9rfgnztqgkrkk964 +9kprlqsmxnine +6fourfourninethreesixfourfive1 +vkkggjljfxthreeeightseven6 +threefiverdvrtwo9tztjmghsz +65rpk2six7six3 +bfgmtntc83 +3four5gtdsnljslceightnmtfbktwojnvqfour +78ctscpstjtcdrqnskhrzsddhrsthreesix4btxv +lmrscztwoxsgphp2five9 +eight4one +tktpzntsffnpptpgmbndxhxskjlltpvbsvjrpmgbmdvjlqklnl1 +8hdhqmskvpdppnthvdlctthreelxvssgqzzcql +eight6bjd3jbscchfnpqnine1 +r51three +dpgscvm8eight +6sbgzk +two5rflnshkn +zrplqqseven2ones +fiveeightsevenfive6onetwo +crjtrkcl8five592mkddrseven +fiveone1qgrdzkgnv +3svvtjmq8 +fivethreeninenine1skhctbxcckztkq +threeppn71threelfourvpqfour +ninetwoseven9 +5x6gqfsjqbrtr1slnlhhpq +1xb +xspkbeight9 +9onesixthreexjlscbx +fj38vxpmlccfivemsmdqfour +6twonvpxtkhlcpfvsgjonethree +fivefiveninesixninethree3 +26four2 +d8hhbbgfoursixfour +hdkqlhzs9hqcffcnzgsmhninegzhxthfivev +onefourone9eight1sixdftmmzmj8 +qpnxmtl125eightsix9four +ninefourvnxlmjp2fhdhzbcncs +ninerhqpddslsh22sevennine9 +33vdj12 +2vqeight +vbkfgbgflskxcfivefourzxvcbdj6 +6gssbzzgvb1 +6hmnkjfksrdmjhnqfv6five8 +92fouronefivebs96 +2twofive8 +mkkplqtjmfive45ddh +fgtf933lgbxcnjv +tsmbtnst65fpcsxcljbc6 +4dthreetpbqbjvlrnineseventwo +3334 +85five +62twomcnnj6fourhj +fiveeight4 +sevenstxmqfdlp9threeeight +55jnkhjh2hnqf +xvrrqtr7onefouroneeightseven +66btjrmvsfiveqpx +1jbzjcsevenninerpdhfvjrrg +1tsixsixdxqfdhpbsixthree +h9twobfmqltwo +eightrqlgqbmdcj7fourjbfourptdprg4 +6c8gbxxdhtxcxxgdntgsfninetwoqm +67foursixgshpnxpsb +gxfnbbrrfour4hdnzznc6five1threermh +eight3fpqnbfbghshhkqmzmtkseven5 +g5threenine +fivedseven3three469vjzmbklbm +gxpktrpseven9kqbgvgqnqs6 +one64 +5threerxbfive5 +9ghdszvpbbldztqb1 +1xkzdblrpcjtwo +smcnpxg3one58ttdsstwo8 +fourjhqxgjrms9oneone78four1 +9two6rxrrxlzc6tmzmxs5lq2 +onebnfnc9fqgczzdxczheightfrvrsixjcxhntbmk +8twofivezmnssevenlfxzcqmqtt2 +threepnp3hdvphnthree8seventhree +three441seven7fourthree +99rvhgrxfsixfive +zvtwone4three8 +5nine84eight +crtztqjdmninesevennflskqgzrvsixqrthzhmnxsjzstj8 +sevenntxmdvhb931sevenninethree +kxfk91fivehqgntfdhrj9897 +seven5p +three1nh3 +gjdv22two1twoq +2twonnjthree +dlhmbplgqthreeonergqmxbbzzlvvmn4 +6twohldcs9 +6fourpjnztmqt +threephjblksrhk1mzcfpvqx2mdlprtg52 +fmg5 +bgxd2dvlnstwo3six1 +gg64onerksrfour7four +eight47ppeightsevengpzkn +92mzfive2jh +sevenjrnine8fivesixfivefour +zmzxq869 +rjpgzqmsixninebvjkmb25seven +9dfxrrfbqpr +five2nine2rzps7twozkdjmbnc +hsrpc9 +vsqfourgdkrzkf87four2seven +two9eighteight42four3 +eight9threefive37 +twobpdzktzm892 +3lldqhone1six +six84nineseven7 +nine7xtjqzqbxvx +48twoeightthreepbjdmblzt +5rzczxmeight +seven85seven1 +threezfjzttheight9 +7fourthreenine3qfchk7eightone +9h157ggstjh +lxmhllvjxzsevenntnzrnkdjfive2 +64dzxxpgjcvhqkpzfivecjg +3hfllvslrdgfiveckxgkzstqseven2seven +four3fiveone +two9eight26 +lsix9two +two8sjvpnn2dpqhpfzgmthree4sevenblsmlfppg +t9fdsgpmsghlp6ninesixsix +9twonezk +53fthcvkktx8eight1vkhrp +fmslbnseven53four +kjtwone486onefqdklnpdgone +5threeqvkz +ftwone5sthreegcdfivefour +nine5sixhjconesix +454eight5vsggjtjcxttndvg4 +six83hk +5eightfourpzv8bjbbeightwopp +79nine5eight +1sixsqcpdmpqbg137ll3 +fsdbv64sixlpdd +nine59 +vvnmt32 +eightsevennxcvvnqsix63four1eight +sixcgtlvnmvjmcqkkxxbtjv6 +ninenine6 +5fhrsbvdjggnine +twodkgtdghmjthree7 +zqkgbnqsixlqlbbhpdkvfourfive71 +nine5four3twoneg +lxdpz971nfdsevensevenkjrzf +2rkpbfphxjnnjkcpcphdpkkqbpjrbtqzmd5 +pqftnsixjrxqf7six2threeone +six8d145twoqcgkllqmkxmqphoneightt +seven25 +5sevenonednlhseven +nkkfsl58xpdbqtptponethreempcxbkqqfbbml +4fgk2 +9bxtjskxkhfmz4seven +one78lpplzpbxcxseventwotwo3eight +fbmqtp8one1gqmc3tzdqlnn3eightwoddf +j2 +5sixsixnineonesixddpvf +8xdnpczh +7nfmgjjlonesixbfpmxvvcvf2 +4mnc +7qjbl8 +c7fhtx +lntmsfrbxtbbg7threexrd6 +fiveseven4two3 +hmmdbzp3three4five +seven5rdkcdh3sixtwo6tql +nine1xglps5zzpztmcm6six +6fourfhxqkhqxeightonejcstpxklkbmk1two +jreightgbpl8mmglzxjz88ztfnlhgvrz +5dcfive1ninenine +twoxkgjbqrmzj8 +one3kkxhrgskh6 +seven1mhkseven1zdlvnnxxk +sevenonehpkqqxpshttrqcctsxp7 +43hdvhgconethreetsbjrkf +xsmvfpnzpthreeqlpnf3 +rjhpbsz21six6 +onesix4271xgvsbd +4gqnine +516twoseven16vmbl +twosixnine8mnmdjthree +nine7twonine58 +4hnslsrxnslrmvmlninethreejcjxn +knsnrdzbcmonetwo4nine8ghzndvjqdxgbzlq +dkpnfpnpp6pqfclgqhsq1rjmsjcbdxxxxvff9 +pxnkbkvfiveltvnrpmdg5eightthree9 +91vbnvfmdjjt +vpqxgzqlknttwo341 +5jlpdhzronetwonevvh +6rhkxqjsznjhspm +nmzsevenkgtb2cptrfhjfd +ds75sixthreethree +bone49ddv +hhhnptkcx9bpvkjlzpm +ctptntzjfive84 +cpxb94one3threeclrnsix +ninedtjmdsmcg5eight78 +74rbrvt +2four41 +sixgpqmtkfdhz7sevenkcnonetwonemcp +lshcphmjvcqdtzbh35rvvsphj7twok +clqbqvtdjpzgkqpfour4plkpsxkcnscnx2 +nflseventhreembkbnclftn4ksdc +lljjndhone4 +krcthreeseventwofour7oneone +dpjhm2three76 +npqtwone31tsgfbbtjtnshhtjvvnfb7 +5sixthreesix +6cjzsix17onehbgdftzmxc +tpmkqthreesxhzsfqfjv5five6 +9eightkxkpqtoneffxseven8jfdbcsmclxjbr +threelz7zdcqlntmtlstbx +nine3mtwotvmsctzlhtgcgxrmxkseven +prtwone86seven +nb2eight62zff +fourfourmmlqjczfour6foureight +3gjjsppmmjrtrseven +3vcbjsmpbgfttczrseven6bsngjeightseventwo +1dbhsix5sixtbxccqqvsvjttm +csbsthreethreeone7 +spt8 +five521 +eighttwo5three369eight9 +53ck8 +569fdxfvtninesdbnvtwo4 +sevenvvctrsjpvgzphgxblm6sixfourfive +seven6xtcdkmqf15 +twothree8233eightqhhpkrcjq +bpmmvdqtvqsfqqdzmjl8six7four +8twodktpzlvmqpgrfbbsix5 +bqfmkthreeseventwo87125 +qbdttlgc2onehtf749skzfslflbt +seven79jbrh8threefivetwovgqphzpq +skxcbtvbcll27fprcg +dtknkdx1 +twozqjbmhmjoneeight2five +5mzscs4twonineeight8four4 +698f +twothree3eightklssg +two1kchxfqsixdrc853 +9one4dzpqnineonexnzsvpplqgmtclfqfour +hskt1twozqvkxeight +6fkpgsdchnrkgthreetwotwo8 +hvnczltjleight4eight1mjsix +ltwo7bmbdjlmlpvjxlttmb +9sixninermdsjhg22 +rtgnjpbxtfznt1 +btdtnhtdkc4 +87eight2htsvgvzxqvhsevenvk +6sixsix1dgszxseven9 +1rljjnxckl9bdlptqnqcmnine92 +three3two28fivevsevenb +6ksfhxqndcccg66nmmbnz +ktqskd4five +pcvlhhz6 +three6three3onesfjvkrjt +fourfour74 +txeightwo6gcc8seven44sixg +79hphfdplrsgonefour +nine9twothreeeight +5h2eightwosmd +8threeb7nine5cr +eight528two +fsfzrmlz2nine +8vspddjbhlfn +64ljd4rtnbtwo5vnine +onesixninezggthree4 +one8sevenseven47 +three238eight45 +one251onextjqxztm +lsqrvsgnxh1bxxchgjeight +eight4gdfvltlmn1sixllsbcqpnx +five7smrlbtbk +djnshxnrcrtkk6two9 +frcpffjkhp3 +ninesix2f2smlspljlqseven8jtfml +1gsvrpkjl +5ninethreejpnbm +4vdmjth6735 +eightmnlvzszqtjfour1rphtmntlk355 +joneight6six8qgtlffcpbvrcf9xsnvgt9 +gfqtnbbzrkfivelmmnmztdgeighthzfbzmpfnztwoxzzpjcsvfive3 +threevpgmhleightsevenfive1 +ninevmdknklvgbbmsdcmvjzcfcbeightrfmv14 +98cb +8one85jpdlsmdpzskjz8two +6three6 +fpnine1 +5threelonemfbqvssxkbmglt +1zkxhjh5fournine +twoxbczzqhcthree3sixeight +4gdktpzlxzkxnine +ninefivenineplttv8seventwoggsmztd6 +onepr3qpzf7seveneightfour7 +tdfpsssrczgzgmxlpmqb2zjjllrqstnine3threemqtzz1 +sevenninetwohsztwomvzdrdtsz4seventwo +2lgsljspp1kpjpjh6six +hz8four5lkcxzr +hgcmhgftpspbhcj8four +three2bdstsvsskx6hjhmxlhnonefour7eight +3175cxbsg9eight +one89twoone7 +cjjztqb7two +7fzkbxrvseven6fbvgmckvjrlklqhlnsevenone8 +dfctz4 +cpbfshrsixhjnfcbfmd7gdhhzx +seven1pbrzmtflvh +fdchrzgzdsix63three7 +three4dckqnone2two1eightwoq +two9khrvjmvg47hsn +cdgpvclmngsixfshzlm15jsnrths +jqztnseven6 +seven55seveneightwodc +sevenff9onernhzsix9eightjdcc +threeeightps9 +six9threevmgplqhzrncgkmqjnine1one +three6six +419zzsjzqvkkzrpnszbvg +8fourthree7two +sixfivefmhrttsqfz2eight6two +286 +xvxhrfiveftnlkmcv2 +fourfour6eightninedkgxbkninexgncmkfqp +ninekqjc1dvxtxdvzfgcph3 +8hnnqm +gkzzmhbdqfour849 +95fjtrfourseven +seven5rh +five2bbqmnkkq7sixchcgslsevenvkmpfg +knlfive1fpsevenmbcnqb +qpjxzbninejrgmvxpslk5rlfmrdmfbh2 +9sixgqxdlcx +19sqlbrngnvfqmzd +tjdg3 +cmkpfivekzfhone1hxpbb +fiveseven3 +dxthreethreeninetwoeight4three2 +6j +nine59 +7seven8one22knqdsixone +sixtzbkscdt5 +nine4gfxtrlzcd4twoone +2seven7nine7 +fourpksdzztmll5 +2dgqoneoneone +khzx1seven1cpkzvjtmv +fiveseven8three6 +rrxkljtthreefoureight8hpxmmnjctthree +2sixzcchvknspqdjthree1 +nnl1rnrhxprnlctwoone +qsbgz28nfive +clqtchqnvrvv11eight +tvhrpxkbvpfiveonesix5 +qhjqmqpm37 +1748 +23sevenhnrvlvjhbfrxvhfthree +1sixdnrnkb88fbrndqcphxrzlgjvf4 +8qlhmjsqzms9two1ffourcdlpssq +5573 +eight76 +7qxcrrldb +5zseven35 +nxkqrsmth1tmrvszjcceightlnzgfdnine +fourqrkrsrzltnqcgnmnpptwo2zmgnlthreeeightxnxgmgd +gnlqqtwo16xsxhrxthdltpxssnvfjqtrkfm +njlpbqsixfour51eightpnzzfmfksevenvpgnmkqd +two7xbhhbjrrp +41two6 +sevenseven9xnlrnzlrnxfourjzsjfds +frfdzkxhckdxtp8twokfour +42ctfq5 +gxjmvxdprr5 +sixsixeightvvplxddrdnngdxj1 +989ffgvq4vpv +ninecgtlfts9g5onebssmzsbnf +3sixfourxltwopmdsrjscrh7dggvqhfour +5jktwo98jksfqbdbbt +fivemrrctsj7csqspbbnk2vtvlmnbdksfour +832nine1sixzbtkxzqthreetwo +1jbrv1rzhgtwo4c +eight79 +3meightseventwo8one8 +qtkzxf9gmdqkgqcc +vllkztxsjqsg8fivetwo +5twohjzgcrhgpkfour7zkpngbbpj3 +7nggrljjllnineeight +sixone17nine84 +5fourbnrpsnk5 +eightnghj7threethreeeight9 +956 +eight2grdnqrvhlt5ptlqjqzbsixseven +4bgzdpbnmcone7rxdqjbmbsix +9ninenine195 +cflqvgs4six9kjhkmqhnn3rqmpc +25sbdjjnphsr1112 +two7jxxzxronesix +gnzzkvjcxzonen7 +ninextxskkggr5nine3ckkfd +pmkxbttdbllqqxfeightsix6fmmbltphngpmzbtsbbcq2 +4eightvthfour5 +eightksbjldxg7sixfour +sixghvhqmthree7nine7 +zzjblxhvmltjqs1 +tslmgqfdt5eight53hmhlfzsvszthqmhxkmfhbxlm +5sixzbczjtjg4nine811 +fourtgpmfourthree8ninecfd +hqnpxjtpnsxqpfzvgmshfmntwothreetwovzgphgfsix5 +qjbdronetwo7five1hnf3 +3xmvlpkvqcctwo +cgkninefoursixtwosix8eight +csvnsvtshrpdpkxqeightcsl4cmpn +hzoneightthreefour8threekppfivezl61 +327onenineseventwosix6 +eightone66 +71oneddkhbdfourrjmskvdslx +dbv12ctlrgxbbmsix +one5five3fourtwozgnhseven +sz4kljvrjf3sixxfivefivefive +tlvl6jttfznmthree9ljbqfdgfdhd +gbdeightsevenninenine84ltblttwo +fourjrbs5fiveonejhvzsl9nsxnmlnmjt +4three2spkj +fourbvmblbpkqjsfbssevensixsgrqnfpmj9vtx +xgtzdmdgflmtdjvmqkbsvdxvbrcpdlmbptmljl2 +fourlcbxq95sevenr +2sixfcqfgbtz3nine763 +one14 +l4six +3tjxghncvg9qcrzsbzccvfhsvzcseven4 +seven9spzeightsix +xzbeightwozvp7six3sqsxdhnm8 +75stwofivefvnjtktztwo +1msqj8ninepnsjbjxmzpdgcd8ttcnlzk +fvmxntfmxxf8fivepcqn9 +fkjkszt1seven +3xkjvbjz8htrzhzkzmr +2jktmfjbzdkpvzkpcqv9cpprlghqzdfive2five2 +ltmhdxkscptwo87 +hxhkjeight5seven6c67rj +sbzvthree891ztc5four8 +one4ngsvv7nfblcrjzjsgkknrx +jrb8one4qjjbvvcxrhfsslvq1 +6two5one5 +threesonecheightnine61 +fzppx9sixgonefour +6fvnrr4five1fivejxxcmc +sseven5threesevenfourr +fcbnms5vctwo +829three8gvqknllg +qcmf9 +sixthreeeight4dxmsbb4 +two5fouronetwo +33foureight +sevenxjmkfgtseventhreefdtvn9two1 +18qseven +8141mfxlzkgvonebhddp +3fnmdmvrjktseven +hgcnjmxchfive9 +sfvcmptk81 +vsfrpfzvdgxfjzxmpsdeight36four +hjglvnvcmnine7fourtnxllcdksixnm +4four912ctx +8nineeightsqfhsevenninezfseven +threemjq79tgzsevenone +twofktsbghzzmbfzfd1 +5rsdninetwoneqp +nrfztxghtl8qx8one8sixnine +2lmhlkdvjjv4bbgnckvxpdtwothreebzqqdgmtfvsvqjj +63fivemzqvkbftqxtg +214three5fivedmskgjtdbbv +jvxh8two +kmnflrsfngone5zs6l7 +pmcqtzdvqkcnfbzgtqscfour5one +sfcdttxpblbsevenseven2 +355 +5ninetctrhrqteight6three +ninesevenls6nqqtfninehjdb +hpdxptb9seventhree12 +85vqbhpqrzpcsnfive2oneseven +79twothree +8eight3vzxsixoneeightzzcdkhgtpz +fivenine3hm3 +fourfthree7 +qkqgptwotvjkctgsbmsxvmssdpteightlxlkfqv46 +84kqtnsjplhp1 +3qk51 +two7gjdrxxjlg6 +7qbrhzdljnvthreefour8dc8qctqhnlfzdshvz +pfcninefourjzqnmmmxhqsix49 +gfbzhslvjrl1sixsevenvnpcrlhfdttmfourzr +3fourtwo636three +qnxrzp7gxcfoursixoneightqmn +fourhfstrgmmdvvlnq5rrb7 +348tdcztqxksixfiveseven3 +ninetnkhspprkmtljdfcbtwo2three7 +qgpfzngtntdsdjvlvmxnmgtbthree5bnkthree +9vhthree +six1four57sxcdzk97seven +6mnhhjtfbcpeightwozj +nploneight9 +6kpzgz5mtq7 +csflt33ninekmgc +jcpntrdsjnkzpmgtdxk4 +plbvmzc3sixfourfoureightkrxbzsdnbj +seven7ql74 +bknbt7eightcbpxzkhtfrgcvhksrr2kxhvqthtsg +tcdcvqkknhxp9fivenlphrppfivenine +8tgvvvsjl2ql5vjbsbrzvtjpkb +51vtffpfzk1two +58threellgc74three2 +zrrlzzpcq2c31four +xcpksgthreerfdjldvfteightnine2npztqh +dtonefourqpss7 +rzmx8 +2eight47 +nine593hsvgtghjqc +five6gnkcxrvkvpone742mxsdpnxqkrcqzrmglxq +onevtfour8eightfive +vhnhqvsfm8qqgmsjkhsqeight +2foureightsix8lhzplrtnpttznkt2 +cztjsixsix96xljqqfhtmd +6four6mtvvxdbvninepjkfqlhhrhcqrddmghrlvkkphzvvb +clshpcdb7bthreenine821 +lcbbcnn74xcpdspkqdphdvdtrkfqfoursix3 +2ssgn7mjtzrblgr229seven +qtjzd5poneztdhvtdzt8svdfpv +91fivetwo +two41qctlttbcsevenjxczz5 +fourbsklkgltwolvdgvjxcxpvclxqbqxjhbz7 +vncsclbf8cbkmzone +dfn349six34five +one65kzsspzjhcsln +bmnfzmhptzgmgjk1sevenfive824 +3zthjdsix9geightsixeightfour +jvhhrkrnhfivenineonethree3sixninegplzthbxj +boneightthreeqdglvf74 +13dmktbhp +8ninetwo +8eight87l +six5xhrtbhdmhpbpqqsfjjninesix8seven +lznlvseventd819qkq9 +55 +onevqgp3six +8gc8 +seveneight8fivesixczbqpjdhxnschd1 +9hvpqtcsevenfctzrxtgj6rjzgfpm8 +ppcmhlccprnmpndzkkjvbrptfour5fivefivefcdqvf6 +sevenhsqnkhhcfonethreezdrjvqsmlvjrdbppjcj8eightwovn +3mxqxlqsvfjpbclmqdrg1one +zmxnftxklqqd8one +2k2onesixthree +1twofivetwozxqhjqjbzgzsslgd +3mblcpmlmg8seven +twoeight626snine +p8onegjssix +ninelkjbgsqtrx9fiveeighthljnlrdb +x21six2cqfqbsmhxsbngstp +2gcmhhtxpzsfive4sixmvrqzkfnv +8ninethree7bbjmcnm8 +sixzqpl6three +b7zfivebmlfvcdg1 +2fivetwo8 +zdkznnkonetsstchvtxsvpfone1sjmqndvbhfg +ggrvbl2one +1m +7eightggfvfrsrfive77sxxrshdrfive +12lkgxnfqd +9znqtwo2three5three75 +seven8six +four138six7six1four +8vmpqprxdgj +8zckvmtmbjtdqprvfxtkmgmmtgck +8vlzthree49 +onesddbmbeightfive523sixtwo +9jcfjq3 +5qlhxfour +3five4 +2kvfourseven7vdh +seven1one7 +7v +fourdnh568oneninehqftnfninetwonejjn +dpvcxz21seven +4threeslnfhfskntz8kqmh +58eight3 +fivetwo16sixfour +fnxmrmcjsixninethreekbf5one +1seven6fourfournjsdvhlkhp1 +five8339 +1fgmrleighteightdzxh +eight5nine +eight4fdnx +sqfklfbkjvbghbgmszzzpeightfive2fiveonefive +xcveight6zlfkpxrzsnq3gzjseven +fkeightniner4fourfour2eight +nine87lphjt +3twombcfour +dpn7688eighteightdjl8 +5tvplhtfrmlv3zjcgvfivenl +2fiveztwo4 +fjbbtgone5 +bjrgnzzpsixnine4three +kkqpcmvjnine18 +zhzkslnd1twonpqxtwoninefiveone +fiveckknnzhdtm793 +seven2cbtkqzs861cbfgssfqtd +sixvdtzsixthree4lchxtdkv +1vvssfvlfbg2eightmxbqbvgsixnine +nineeightjlngjz94t7 +lpncsfkn7fsgvkl +583sevenhjxlqzjgbzxhkcl5 +81s +2four3threesxxvlfqfive4 +nine6eightsevenzx9twoxc +hmbfjdfnp989mfivefiverpzrjs diff --git a/2023/01-Trebuchet/second.hs b/2023/01-Trebuchet/second.hs new file mode 100644 index 0000000..3bcfa06 --- /dev/null +++ b/2023/01-Trebuchet/second.hs @@ -0,0 +1,78 @@ +-- requires cabal install --lib megaparsec parser-combinators +module Main (main) where +import Control.Monad (void, when) +import Data.Char qualified as C +import Data.Functor +import Data.List qualified as L +import Data.Map qualified as M +import Data.Maybe +import Data.Set qualified as S +import Data.Void (Void) +import Text.Megaparsec +import Text.Megaparsec.Char + +exampleExpectedOutput = 281 + +type Input = [(Int, Int)] + +type Parser = Parsec Void String + +parseDigit :: Parser Int +parseDigit = (C.digitToInt <$> digitChar) + <|> (string "one" $> 1) + <|> (string "two" $> 2) + <|> (string "three" $> 3) + <|> (string "four" $> 4) + <|> (string "five" $> 5) + <|> (string "six" $> 6) + <|> (string "seven" $> 7) + <|> (string "eight" $> 8) + <|> (string "nine" $> 9) + <|> (letterChar *> parseDigit) + +parseDigitReversed :: Parser Int +parseDigitReversed = (C.digitToInt <$> digitChar) + <|> (string "eno" $> 1) + <|> (string "owt" $> 2) + <|> (string "eerht" $> 3) + <|> (string "ruof" $> 4) + <|> (string "evif" $> 5) + <|> (string "xis" $> 6) + <|> (string "neves" $> 7) + <|> (string "thgie" $> 8) + <|> (string "enin" $> 9) + <|> (letterChar *> parseDigitReversed) + +parseFirstAndLast :: String -> (Int, Int) +parseFirstAndLast str = (f, l) + where + f = case runParser parseDigit "parseDigit" str of + Left bundle -> error $ errorBundlePretty bundle + Right input' -> input' + l = case runParser parseDigitReversed "parseDigit" (reverse str) of + Left bundle -> error $ errorBundlePretty bundle + Right input' -> input' + +parseInput' :: Parser Input +parseInput' = fmap parseFirstAndLast <$> some (some alphaNumChar <* eol) <* eof + +parseInput :: String -> IO Input +parseInput filename = do + input <- readFile filename + case runParser parseInput' filename input of + Left bundle -> error $ errorBundlePretty bundle + Right input' -> return input' + +process :: Int -> (Int, Int) -> Int +process acc l = acc + fst l * 10 + snd l + +compute :: Input -> Int +compute = L.foldl' process 0 + +main :: IO () +main = do + example <- parseInput "example2" + let exampleOutput = compute example + when (exampleOutput /= exampleExpectedOutput) (error $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput) + input <- parseInput "input" + print $ compute input diff --git a/2023/1-Trebuchet/example b/2023/1-Trebuchet/example deleted file mode 100644 index 7bbc69a..0000000 --- a/2023/1-Trebuchet/example +++ /dev/null @@ -1,4 +0,0 @@ -1abc2 -pqr3stu8vwx -a1b2c3d4e5f -treb7uchet diff --git a/2023/1-Trebuchet/example2 b/2023/1-Trebuchet/example2 deleted file mode 100644 index 41aa89c..0000000 --- a/2023/1-Trebuchet/example2 +++ /dev/null @@ -1,7 +0,0 @@ -two1nine -eightwothree -abcone2threexyz -xtwone3four -4nineeightseven2 -zoneight234 -7pqrstsixteen diff --git a/2023/1-Trebuchet/first.hs b/2023/1-Trebuchet/first.hs deleted file mode 100644 index 366d28e..0000000 --- a/2023/1-Trebuchet/first.hs +++ /dev/null @@ -1,44 +0,0 @@ --- requires cabal install --lib megaparsec parser-combinators -module Main (main) where -import Control.Monad (void, when) -import Data.Char qualified as C -import Data.List qualified as L -import Data.Map qualified as M -import Data.Maybe -import Data.Set qualified as S -import Data.Void (Void) -import Text.Megaparsec -import Text.Megaparsec.Char - -exampleExpectedOutput = 142 - -type Input = [String] - -type Parser = Parsec Void String - -parseInput' :: Parser Input -parseInput' = some (some alphaNumChar <* eol) <* eof - -parseInput :: String -> IO Input -parseInput filename = do - input <- readFile filename - case runParser parseInput' filename input of - Left bundle -> error $ errorBundlePretty bundle - Right input' -> return input' - -process :: Int -> String -> Int -process acc str = acc + f * 10 + l - where - f = C.digitToInt . head $ dropWhile C.isLetter str - l = C.digitToInt . head . dropWhile C.isLetter $ reverse str - -compute :: Input -> Int -compute = L.foldl' process 0 - -main :: IO () -main = do - example <- parseInput "example" - let exampleOutput = compute example - when (exampleOutput /= exampleExpectedOutput) (error $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput) - input <- parseInput "input" - print $ compute input diff --git a/2023/1-Trebuchet/input b/2023/1-Trebuchet/input deleted file mode 100644 index 6deebe0..0000000 --- a/2023/1-Trebuchet/input +++ /dev/null @@ -1,1000 +0,0 @@ -jjfvnnlfivejj1 -6fourfour -ninevbmltwo69 -pcg91vqrfpxxzzzoneightzt -jpprthxgjfive3one1qckhrptpqdc -mxphxfnffninethreetdj5jgknqfrxmhxfivexcxqv -three7pktwo4279z -1qcbszfgonedjcqj66929 -fivesixthreeptcqjnkzgdfgzspmlvmmhn3 -vm2sixseven -1nine6oneeightnine5lfrzmzh7 -7onevsffj78ninejcnnvgn65 -qstwonepcd3twosixrmcnxhfzv -3bnjfrfourseventwo -zpcdmvmktlrrq8sixgjtxxjpt8fcstt1 -nine1gkmptbfsix87 -9ldmlbchvnvgfivesixnine7zrt -45mjmblfqjvf9 -onehcpgmvd837sgzgsqqrtseven -rhjfvkznjdvlgv9one8 -22xkkdsvfvfourhdpchs -sixzjx5kvjbcfgcsrjndznkrtf6 -1fourmk8three3seven -4716lpzhdcbone6seventwo -443two27 -9sgtwoseven6 -pjtbhxchqfseven18tznxpbsppk -9eightwonkt -htsgxmrfsevenone8qjxhjsixnbsvcf5 -5jmnjnnfsfoursevenprtjzdxmxj7six -dthreenrzonefourcxfrzsvtfz9xb -6kvfn -vlfbzpbpseven8tspgqfdzkmfivefourzjzdbxgtvx -2rfqtfttqzkkzdjbjxnx51xrzczxmfmc2two -3fnncmsdz1bnxvlfxng -seven789bgzpszjd3 -6four8gjsmbztmp -sjvmmb9h -6jqttjkpjc145 -9threedzjjqnhrngktscfmc -5onesix -nine2onelpzhtrbninexkgtjqg -6nined -29xzfour7seven9pcvdbcgvtv -hjdtscdc6twotwosixsevensix9six -stmpvhnssixtwoffnhpn25 -45fourbpsghkqxqm9fmvhssbntdtwo64 -nine835four -leightwothreesevenlhlmqcgcpfour9 -fgsfsqgkcctzcltpvpjhlb5eight4one -four9four184five9 -67seven7twobdcltwonenh -nsdbone5two16 -sixsix3jxfctsrsvfcrpbxtthmspdlqqrnckxtngnx -fxftk3svcczpknmfourhlndmg -eight4sevenmrlkcqx4three -7ninerpcrqt46gtnlzlmknine -hppggtwohcckscs5eighttwo -phzdqznlbkthreephllsb32eighttwo9six -6four8fxcmngbnine3 -seven6five23seven -9seven6bfqkxsjvcpninehmprgsldb -tffjstchhs3rnjsmlnr3sevenlkjzkrdg3mmlgbgnnjzoneightm -913 -lvsqbjjsonethreeone864ncrlpdghgkfive -fvlmhpxcrktwo3ninejm6eightxmc -sevenjbnc2zvxnr4 -mqjztddmfmnskhlvvp2 -six1fivesixsevenninenine -vpbpbsixsqvxfvf6 -6jjqln83one -3dbone3 -ssczbsgp2fourdknjszzbvtlgtdplgplrnznmhdfivefdd -threesevenqctdslt457 -eightthree9eightfiveninetzhmhg -bsmzhmrm1eight5 -pzhpleighttbhhfxfdgprfjsxrzl7sixsixjgghqbr -one5onecfdbpvxbdlmmdbxqdlbldjbz8 -qxsbz4rjdgcfsvmqthreeone3mtwo -13zls3 -zpjlgbjrkl6four5 -264sevenfive -413vhsevennpbnine -gn9sevenhhhnblflxkeightnine -hgdfdsdb5seven -eightczrstqtcjmrpbhhdxrflkcjpsdjbskfvzdglt6nine -jrgr15mzkpt5 -lxzlvmrdcvglcjsjzxm3748hjlvtgz -ninekxcqcpztqfoureightsrdhtmnbpsqkc5 -vxfdkmp4fourtwopdpfmcqnrqkmvf -prkkmcccpone4qthree -lxxqfourkrttdqlhkjhp5 -five7three -sixmljbdl2seven8six3ffrfc -6threexgtvlxthree5fiveseven -three86pztxhlcfour -eightfiveeight79 -5ljzqvbgknk4 -seven4cnrxrv9 -brtwone8jsvbpstpmlbrxrjfivehhhqbvk -three69two3dhvzj9 -fourfoursevenninelpjs5threevnc3 -42nine441xbc -sevenfour2tqb42one -btccgptzllfivesixtwo6 -hdbzgcmznbnrq8cvzrqtpqm -jqzmone5threehrqhbdnfxhkqnvm -98nrcvftzpslxnine -five58one8snpvggzjbqthree79 -lkccfpfn37onenine6 -css9four2 -jbtffive6mtfzvkdpjnthreeeight -224fourtwojc4 -spceightwolbrcfkbrtwo8dkfmvrmrglmrsxlseven9nine -threeckdrrznbbhnpsrmbrxlmfjz1twothree2 -3twokcfivetwosix4 -k12mqeighthgdtthxjtwo -coneightqtpgsjseven5dzqpvgtjm -dpkjqkx22llklllblknine4 -svjmxbq8hfzjsbtccjdmqvbjcpklmqbseven665 -8rbfzjxlqx -onefive3nineeight5 -eightqrlkf4two -931 -41cvfivebfsxdkljjjkjhm8ftfdtnpsdmtkln -sixjcnbeightnjtbck72dg -tworvqfjdlr545lbpmlxknsd -kgnt7fiveone3 -twofourrxmcmj894stppprqjf -qcqpxnztmntwok34three28 -four1sevennlqvbk -6fkjkbc -2htpxbqvtg3one -2threezhxzfslfxhvzdbfour15 -nrfdrzdjtlthreeonennzfbone9one -sixtwosevenqplrqvxreight6 -djmzrfq3eight7five5 -jthreeeight51sixqlvgvm -foureighteight4vvg98 -tttrnk2ctfpk7692mbccxhmpnl2 -bbsix2 -1two3five89zjrjnbpt6 -29787jbhkhtbnbgfoursixfour -vpzmcqcvfour58 -9eightfcvfeight4one -cdbdlseven6zvzl3tshhdtlczsstdbksthree -three78 -hdmmprbbk9hvkpb -vfivencslcc974 -6jthreesevenstksbsxttctjkdnxgjseven -sixeight38sevenfive -7sixnzcfgfjpzmcdsprgcnvspfive -tttcfpm9sevennine -x7dfxhgtqmeightveightfgrqj -zktxptkzztwobztnfqvgxlkrsdhqhntqcnfknine6 -9kthreenglrnrxn8sixzlfdmfcdvnd -xjznine3332jtrfnkf -688k3eightone -4four2chz -1zpbmzvgxmhqdkr3four89four -nqbthreeztjmkdgtwo53 -qvfjzclkrkslfmtpdhjeight4fivefour -964eight91qhghxjxhcdslsnfour -45twojrbjxb -292sixthreekgzpzxxxk -6dgmmtwotwo -1msixthree4sixeighttwoeight -sixfourt9k -one1five6fourthreetwo7two -fourjmbfrhltwosix42 -frgfnk8 -138 -4nn79fourfour28 -7zs5eightonenineqnzpsf6 -bqjndhdtqqhpmltzfv27bqvgklpmfvhgvplbpnxhjvprpldpg -48tcrntjbninesbkkbbd -nineeight5nineljhnxhqbpkbbkttwo -scbbhqpcxthree1three1 -vlczgnrlz38threekjone -nine7ckxh -hpgvrtkpqpbjdlkpj2 -ninetwo63hhnsmoneightjtl -zkhrcrb743fhjpfvdcxq9three -nineeight5pfour9sixsqjnkpg3 -sixthreectddzgzrh9 -xjdgplninetfcldlnzftcv63four -fivefourmrrb1three -2mqxhngvb8 -5njfgllzxnjlqdgn -five34fourfive1cddmdhrbmrjpz -fiveg6seven1 -eightggzxtddx8mgl7seven9five -6tlmlfrsixbtznxhhpclb -twospsjtmnfnmfv36 -tcnmlsljtwo9onekcksj -6onenine9mhznxmoneightnvq -4seven6jxtknddnkfivefivenine -qxpcxrxstwoninekvlsmtckcd1cxqccqss2 -8pk3xjbsevengfcseveneighteight -7sevenstsmqcthreexqdh -three6sevenmeightjeight5four -958eightvg9bjrfpjfq6 -9zninegdmqrtxtlnfiveeight3twotwo -989pdblcmkxhn -sixvvkvjlndtqjlcqsixktmhpzs9d -4threepzgdjvsqhseven -fzfmnine5eight -sevenvv78threexpfxxktwo5 -8pgjdzvb1 -vj7 -sevennine3eightfzpxdxpmseightwozvb -gxftsptzcm1jcnmkqxnxr5five9onefour -2fiveclxxnxmsevenzmz6rfvhkrseven3 -fqqdlnkb45lgjjnk5seventwo -six5dhrkkxr -kmrddmfpzsfmkthreeonefour1xxhshbxd8 -gdthree3fivefour -sixsixj772four -eight53 -sixfoursix333 -one8twothreeseven766 -bpnvgxjtwohmlgqpx3nineeightvnine -95one88six -4onefrlccksvfcc7 -xbjh67 -vzrgvrkzthreesix2 -five8eighttjxphqzstx -fiveone3sixseven -nine44eight66 -eighttwogndjkpdxqjvjmd7kgxvjfkltv -mdpxgkxvfheightt41onefoursix -vqnzsgmgbglqmjmhmqqlpjjhkszprjc184eightczzbrpxh -jncvmkbone7vttpdnone -bvsmnz7hctzgcfkk -bssqrbzsixqx7 -nhtfvdnrtqqvjnzdgc4fvlzkm -zhvdbthreeeight61dp -24pv -onesjjdct1zcknmfjfjvmfivepxzfds7 -3six7one5seventwo2 -twosixonemjsc2vg8lzvjrpnnhq -rftwoneqjbq5hcssbxbtvcdsevenfournxhfkrrgjqmzmpmvrvnj -58five5 -43nineseven3293three -48sixsevenmgsr23 -eight1eight -5hkbzntwo1lplgmfsevengrnhbhg -1dqbbgjfvmfive7sevenninenhkspxbrxm -srtwoneeight1jeightoneeightthree -4cvhfbnine -vsm56 -5onev2csngkll7 -6six5fivefourzbjkdppp -gdjtp5onehqrngxqd -4fvltc7ninezmpnbzv4twoone -39sevenfxlcsfnkmjninesevennineoneseven -cvfqkvfzx887sgzdpvxvhoneseven -rvrhpssvkgzbbrgbgcvqbvdkfplsvk41bblsvtbqsk29 -9ninervjgsjrrtwo1twonbxcvd -8g9one -njznrrcshcpn9rbvbsgpdpv13ninefour -8eightfflllbgkmdh44onenine -9onetwo9two6 -hdfmvs6hjtjbzjth7ninefn -dfzgrfivesix67 -7l9 -onecjeight88hk -hgm2 -qt5nine7d8fivevlqjmhsix -nqsix7onennmln2five -6sevensevenmnxnbpmprd6 -five2seventhree2nineksczcl -twotwokcmkzgkf9vfcmfqhzvseven -4six2blsfjgmllblxnlfnspxbvvzjnninesevenfour -836 -beightwosixonefxlthreepjddrthq9five -22zhppjvmbfszrkrqt -7ljpvtkrmgkfc5pxqpd -xqrtsbzpjxhfn58three362 -2fiveqqdptvjxxnrnsrsixbeightfive -gsgfvsfp1mfbrt3dnzttnine44mgmsjmkgv -sixfive4sgxxgsix -3nv3dsevensixmsqfdc5 -two66six -ptz4qhkzftvxp4bfnnone -five1five2rjftfiveseven -kvdttwozhzcjk685fourtwolrbmnknp -33srljnsfsxhfninensjh -lkc4 -twotgnddfivefourcbfive35 -eight4qgthmpptkn -7pqdkhhxqmtkcspmlc59991 -lvpbhlpdnvbqdzfmfktvn552 -fivefoursixdrscznhfivefive49 -439nlvnine -qqxfoursix4xlslqdjvpx3l -bpknbhdtgst7 -6four4fourddkk7cdhmdjx53 -3sevenseven8two4eightfive9 -zj6vmnq1pqrstfkznf6 -7lxjzsevensixtddveightp -vbzrnzmcgvqkdrznhtblp8vjnxvs57five -six6eightzmhqvsjzseven -9three4nnhqsstptwo3 -twofiverdjfc96dqzeight -six8bgmrplfeightonek93four -sevennine4vzmf -54five6gfour73jpkgt -eight9288threeeight -gjkrnbtseven6618vktqpmhmnine -onejmlgzhpzdfmmkkt3fourpjkjglsd -xqxkqjcsnine6eightxclnthree2 -hmthhjbfivesix4gdxjbg -sevenkpjrscqhmfone3zjhxgptlgknine -onerzbfive354 -9sldh38nine -twonine9vqdzneight -7one24 -2fivesixtnhssqnrhbcxtchjbxspnvkcxbsfrf -kjpjqsnkrqnqpn99fpxfgmttxpxrd4twonebp -hhfrz8zbdjtjjjngcccctwo -mjhvbhrmpmmmbzcmr9four9dczbrfg -mnhbcdc99 -11fivedpgmrxptconebdvhfbvfvxfive17 -fivegthreesixtwo9k5 -ninefourtwo7zjcsfhcfnine -652 -five135eight4v -eight6hsjpkf13mhmkggqqvqdmrpcttvs -fourxndjxvpgpthree6vjs8pkt -lvkeight5nthreeskjqc24one -5vmqth -1lmjpflgsix91fourlfldlgmn7 -jlpnxblthreebzztvrfg3done -rrnxmsnptwoeight24threedqssix -nfdcrtlb7eightsvhstfourcmrsix3 -nbslbqkmmfonellrfpmvjnsix944 -seven2pcstwoqfg -six9nineninedpsixpqcl -two53mgfcbhmlpr1bl1x -bdzvksix8mlhvvscvvc -seven1three9two -4ninegvzqzbhckptwo8 -5zspmjkssghgtgpdpg3threeseven -6fournineeight -eight7jsxmdsix4jcnmzhxnrczslgclj -xjlmqfgd9sjvvhmxbnrpztrgtvgklzt3two -3gkfgrz71 -sevenfsix4 -one84532vkhbvfzpbthree4 -46zhdmrrh3 -eight7tdfbjnzqhs -rfqfl6nine7 -nkpztmkbpqzn7 -8mzprpmn6 -2threebntdqxfdonettbgnbx7cp3 -5two77 -eight7three -rhcbnrfslm8dqdthddqckonerclsshqhxpjdmgnmvsixgmqxt -9five2 -jkzntwo5fiveonetwonec -48oneseven -7fourlqptgfkone -six2hnlbhzxjjfpdeightwod -46onel -przvrp3ninethreenine2 -tnine2chbvxbkbnq -sixjnbsrtrhg9twob -knkdb5852fourfiveone6 -6onevndbhone -4thqp -xdnbtxgtjrgffourseven4threehzqxzqfourseven -cpkbtl2 -three6psqmcxphvtfhn -two42ninevndsevenmljgncshctnjrvszhnkt -threefrvxonesqkcjdlk2mrztrlttjvs -knvgqtqvn22jkjnxbxpkdfourfour9 -24oneqnnnztsshx6 -eighttbxsheight2phksevenptwo8 -seven8bvsnjhrl4hllmzbtlmone1 -three1626jvfqthree -bspdn9rfgnztqgkrkk964 -9kprlqsmxnine -6fourfourninethreesixfourfive1 -vkkggjljfxthreeeightseven6 -threefiverdvrtwo9tztjmghsz -65rpk2six7six3 -bfgmtntc83 -3four5gtdsnljslceightnmtfbktwojnvqfour -78ctscpstjtcdrqnskhrzsddhrsthreesix4btxv -lmrscztwoxsgphp2five9 -eight4one -tktpzntsffnpptpgmbndxhxskjlltpvbsvjrpmgbmdvjlqklnl1 -8hdhqmskvpdppnthvdlctthreelxvssgqzzcql -eight6bjd3jbscchfnpqnine1 -r51three -dpgscvm8eight -6sbgzk -two5rflnshkn -zrplqqseven2ones -fiveeightsevenfive6onetwo -crjtrkcl8five592mkddrseven -fiveone1qgrdzkgnv -3svvtjmq8 -fivethreeninenine1skhctbxcckztkq -threeppn71threelfourvpqfour -ninetwoseven9 -5x6gqfsjqbrtr1slnlhhpq -1xb -xspkbeight9 -9onesixthreexjlscbx -fj38vxpmlccfivemsmdqfour -6twonvpxtkhlcpfvsgjonethree -fivefiveninesixninethree3 -26four2 -d8hhbbgfoursixfour -hdkqlhzs9hqcffcnzgsmhninegzhxthfivev -onefourone9eight1sixdftmmzmj8 -qpnxmtl125eightsix9four -ninefourvnxlmjp2fhdhzbcncs -ninerhqpddslsh22sevennine9 -33vdj12 -2vqeight -vbkfgbgflskxcfivefourzxvcbdj6 -6gssbzzgvb1 -6hmnkjfksrdmjhnqfv6five8 -92fouronefivebs96 -2twofive8 -mkkplqtjmfive45ddh -fgtf933lgbxcnjv -tsmbtnst65fpcsxcljbc6 -4dthreetpbqbjvlrnineseventwo -3334 -85five -62twomcnnj6fourhj -fiveeight4 -sevenstxmqfdlp9threeeight -55jnkhjh2hnqf -xvrrqtr7onefouroneeightseven -66btjrmvsfiveqpx -1jbzjcsevenninerpdhfvjrrg -1tsixsixdxqfdhpbsixthree -h9twobfmqltwo -eightrqlgqbmdcj7fourjbfourptdprg4 -6c8gbxxdhtxcxxgdntgsfninetwoqm -67foursixgshpnxpsb -gxfnbbrrfour4hdnzznc6five1threermh -eight3fpqnbfbghshhkqmzmtkseven5 -g5threenine -fivedseven3three469vjzmbklbm -gxpktrpseven9kqbgvgqnqs6 -one64 -5threerxbfive5 -9ghdszvpbbldztqb1 -1xkzdblrpcjtwo -smcnpxg3one58ttdsstwo8 -fourjhqxgjrms9oneone78four1 -9two6rxrrxlzc6tmzmxs5lq2 -onebnfnc9fqgczzdxczheightfrvrsixjcxhntbmk -8twofivezmnssevenlfxzcqmqtt2 -threepnp3hdvphnthree8seventhree -three441seven7fourthree -99rvhgrxfsixfive -zvtwone4three8 -5nine84eight -crtztqjdmninesevennflskqgzrvsixqrthzhmnxsjzstj8 -sevenntxmdvhb931sevenninethree -kxfk91fivehqgntfdhrj9897 -seven5p -three1nh3 -gjdv22two1twoq -2twonnjthree -dlhmbplgqthreeonergqmxbbzzlvvmn4 -6twohldcs9 -6fourpjnztmqt -threephjblksrhk1mzcfpvqx2mdlprtg52 -fmg5 -bgxd2dvlnstwo3six1 -gg64onerksrfour7four -eight47ppeightsevengpzkn -92mzfive2jh -sevenjrnine8fivesixfivefour -zmzxq869 -rjpgzqmsixninebvjkmb25seven -9dfxrrfbqpr -five2nine2rzps7twozkdjmbnc -hsrpc9 -vsqfourgdkrzkf87four2seven -two9eighteight42four3 -eight9threefive37 -twobpdzktzm892 -3lldqhone1six -six84nineseven7 -nine7xtjqzqbxvx -48twoeightthreepbjdmblzt -5rzczxmeight -seven85seven1 -threezfjzttheight9 -7fourthreenine3qfchk7eightone -9h157ggstjh -lxmhllvjxzsevenntnzrnkdjfive2 -64dzxxpgjcvhqkpzfivecjg -3hfllvslrdgfiveckxgkzstqseven2seven -four3fiveone -two9eight26 -lsix9two -two8sjvpnn2dpqhpfzgmthree4sevenblsmlfppg -t9fdsgpmsghlp6ninesixsix -9twonezk -53fthcvkktx8eight1vkhrp -fmslbnseven53four -kjtwone486onefqdklnpdgone -5threeqvkz -ftwone5sthreegcdfivefour -nine5sixhjconesix -454eight5vsggjtjcxttndvg4 -six83hk -5eightfourpzv8bjbbeightwopp -79nine5eight -1sixsqcpdmpqbg137ll3 -fsdbv64sixlpdd -nine59 -vvnmt32 -eightsevennxcvvnqsix63four1eight -sixcgtlvnmvjmcqkkxxbtjv6 -ninenine6 -5fhrsbvdjggnine -twodkgtdghmjthree7 -zqkgbnqsixlqlbbhpdkvfourfive71 -nine5four3twoneg -lxdpz971nfdsevensevenkjrzf -2rkpbfphxjnnjkcpcphdpkkqbpjrbtqzmd5 -pqftnsixjrxqf7six2threeone -six8d145twoqcgkllqmkxmqphoneightt -seven25 -5sevenonednlhseven -nkkfsl58xpdbqtptponethreempcxbkqqfbbml -4fgk2 -9bxtjskxkhfmz4seven -one78lpplzpbxcxseventwotwo3eight -fbmqtp8one1gqmc3tzdqlnn3eightwoddf -j2 -5sixsixnineonesixddpvf -8xdnpczh -7nfmgjjlonesixbfpmxvvcvf2 -4mnc -7qjbl8 -c7fhtx -lntmsfrbxtbbg7threexrd6 -fiveseven4two3 -hmmdbzp3three4five -seven5rdkcdh3sixtwo6tql -nine1xglps5zzpztmcm6six -6fourfhxqkhqxeightonejcstpxklkbmk1two -jreightgbpl8mmglzxjz88ztfnlhgvrz -5dcfive1ninenine -twoxkgjbqrmzj8 -one3kkxhrgskh6 -seven1mhkseven1zdlvnnxxk -sevenonehpkqqxpshttrqcctsxp7 -43hdvhgconethreetsbjrkf -xsmvfpnzpthreeqlpnf3 -rjhpbsz21six6 -onesix4271xgvsbd -4gqnine -516twoseven16vmbl -twosixnine8mnmdjthree -nine7twonine58 -4hnslsrxnslrmvmlninethreejcjxn -knsnrdzbcmonetwo4nine8ghzndvjqdxgbzlq -dkpnfpnpp6pqfclgqhsq1rjmsjcbdxxxxvff9 -pxnkbkvfiveltvnrpmdg5eightthree9 -91vbnvfmdjjt -vpqxgzqlknttwo341 -5jlpdhzronetwonevvh -6rhkxqjsznjhspm -nmzsevenkgtb2cptrfhjfd -ds75sixthreethree -bone49ddv -hhhnptkcx9bpvkjlzpm -ctptntzjfive84 -cpxb94one3threeclrnsix -ninedtjmdsmcg5eight78 -74rbrvt -2four41 -sixgpqmtkfdhz7sevenkcnonetwonemcp -lshcphmjvcqdtzbh35rvvsphj7twok -clqbqvtdjpzgkqpfour4plkpsxkcnscnx2 -nflseventhreembkbnclftn4ksdc -lljjndhone4 -krcthreeseventwofour7oneone -dpjhm2three76 -npqtwone31tsgfbbtjtnshhtjvvnfb7 -5sixthreesix -6cjzsix17onehbgdftzmxc -tpmkqthreesxhzsfqfjv5five6 -9eightkxkpqtoneffxseven8jfdbcsmclxjbr -threelz7zdcqlntmtlstbx -nine3mtwotvmsctzlhtgcgxrmxkseven -prtwone86seven -nb2eight62zff -fourfourmmlqjczfour6foureight -3gjjsppmmjrtrseven -3vcbjsmpbgfttczrseven6bsngjeightseventwo -1dbhsix5sixtbxccqqvsvjttm -csbsthreethreeone7 -spt8 -five521 -eighttwo5three369eight9 -53ck8 -569fdxfvtninesdbnvtwo4 -sevenvvctrsjpvgzphgxblm6sixfourfive -seven6xtcdkmqf15 -twothree8233eightqhhpkrcjq -bpmmvdqtvqsfqqdzmjl8six7four -8twodktpzlvmqpgrfbbsix5 -bqfmkthreeseventwo87125 -qbdttlgc2onehtf749skzfslflbt -seven79jbrh8threefivetwovgqphzpq -skxcbtvbcll27fprcg -dtknkdx1 -twozqjbmhmjoneeight2five -5mzscs4twonineeight8four4 -698f -twothree3eightklssg -two1kchxfqsixdrc853 -9one4dzpqnineonexnzsvpplqgmtclfqfour -hskt1twozqvkxeight -6fkpgsdchnrkgthreetwotwo8 -hvnczltjleight4eight1mjsix -ltwo7bmbdjlmlpvjxlttmb -9sixninermdsjhg22 -rtgnjpbxtfznt1 -btdtnhtdkc4 -87eight2htsvgvzxqvhsevenvk -6sixsix1dgszxseven9 -1rljjnxckl9bdlptqnqcmnine92 -three3two28fivevsevenb -6ksfhxqndcccg66nmmbnz -ktqskd4five -pcvlhhz6 -three6three3onesfjvkrjt -fourfour74 -txeightwo6gcc8seven44sixg -79hphfdplrsgonefour -nine9twothreeeight -5h2eightwosmd -8threeb7nine5cr -eight528two -fsfzrmlz2nine -8vspddjbhlfn -64ljd4rtnbtwo5vnine -onesixninezggthree4 -one8sevenseven47 -three238eight45 -one251onextjqxztm -lsqrvsgnxh1bxxchgjeight -eight4gdfvltlmn1sixllsbcqpnx -five7smrlbtbk -djnshxnrcrtkk6two9 -frcpffjkhp3 -ninesix2f2smlspljlqseven8jtfml -1gsvrpkjl -5ninethreejpnbm -4vdmjth6735 -eightmnlvzszqtjfour1rphtmntlk355 -joneight6six8qgtlffcpbvrcf9xsnvgt9 -gfqtnbbzrkfivelmmnmztdgeighthzfbzmpfnztwoxzzpjcsvfive3 -threevpgmhleightsevenfive1 -ninevmdknklvgbbmsdcmvjzcfcbeightrfmv14 -98cb -8one85jpdlsmdpzskjz8two -6three6 -fpnine1 -5threelonemfbqvssxkbmglt -1zkxhjh5fournine -twoxbczzqhcthree3sixeight -4gdktpzlxzkxnine -ninefivenineplttv8seventwoggsmztd6 -onepr3qpzf7seveneightfour7 -tdfpsssrczgzgmxlpmqb2zjjllrqstnine3threemqtzz1 -sevenninetwohsztwomvzdrdtsz4seventwo -2lgsljspp1kpjpjh6six -hz8four5lkcxzr -hgcmhgftpspbhcj8four -three2bdstsvsskx6hjhmxlhnonefour7eight -3175cxbsg9eight -one89twoone7 -cjjztqb7two -7fzkbxrvseven6fbvgmckvjrlklqhlnsevenone8 -dfctz4 -cpbfshrsixhjnfcbfmd7gdhhzx -seven1pbrzmtflvh -fdchrzgzdsix63three7 -three4dckqnone2two1eightwoq -two9khrvjmvg47hsn -cdgpvclmngsixfshzlm15jsnrths -jqztnseven6 -seven55seveneightwodc -sevenff9onernhzsix9eightjdcc -threeeightps9 -six9threevmgplqhzrncgkmqjnine1one -three6six -419zzsjzqvkkzrpnszbvg -8fourthree7two -sixfivefmhrttsqfz2eight6two -286 -xvxhrfiveftnlkmcv2 -fourfour6eightninedkgxbkninexgncmkfqp -ninekqjc1dvxtxdvzfgcph3 -8hnnqm -gkzzmhbdqfour849 -95fjtrfourseven -seven5rh -five2bbqmnkkq7sixchcgslsevenvkmpfg -knlfive1fpsevenmbcnqb -qpjxzbninejrgmvxpslk5rlfmrdmfbh2 -9sixgqxdlcx -19sqlbrngnvfqmzd -tjdg3 -cmkpfivekzfhone1hxpbb -fiveseven3 -dxthreethreeninetwoeight4three2 -6j -nine59 -7seven8one22knqdsixone -sixtzbkscdt5 -nine4gfxtrlzcd4twoone -2seven7nine7 -fourpksdzztmll5 -2dgqoneoneone -khzx1seven1cpkzvjtmv -fiveseven8three6 -rrxkljtthreefoureight8hpxmmnjctthree -2sixzcchvknspqdjthree1 -nnl1rnrhxprnlctwoone -qsbgz28nfive -clqtchqnvrvv11eight -tvhrpxkbvpfiveonesix5 -qhjqmqpm37 -1748 -23sevenhnrvlvjhbfrxvhfthree -1sixdnrnkb88fbrndqcphxrzlgjvf4 -8qlhmjsqzms9two1ffourcdlpssq -5573 -eight76 -7qxcrrldb -5zseven35 -nxkqrsmth1tmrvszjcceightlnzgfdnine -fourqrkrsrzltnqcgnmnpptwo2zmgnlthreeeightxnxgmgd -gnlqqtwo16xsxhrxthdltpxssnvfjqtrkfm -njlpbqsixfour51eightpnzzfmfksevenvpgnmkqd -two7xbhhbjrrp -41two6 -sevenseven9xnlrnzlrnxfourjzsjfds -frfdzkxhckdxtp8twokfour -42ctfq5 -gxjmvxdprr5 -sixsixeightvvplxddrdnngdxj1 -989ffgvq4vpv -ninecgtlfts9g5onebssmzsbnf -3sixfourxltwopmdsrjscrh7dggvqhfour -5jktwo98jksfqbdbbt -fivemrrctsj7csqspbbnk2vtvlmnbdksfour -832nine1sixzbtkxzqthreetwo -1jbrv1rzhgtwo4c -eight79 -3meightseventwo8one8 -qtkzxf9gmdqkgqcc -vllkztxsjqsg8fivetwo -5twohjzgcrhgpkfour7zkpngbbpj3 -7nggrljjllnineeight -sixone17nine84 -5fourbnrpsnk5 -eightnghj7threethreeeight9 -956 -eight2grdnqrvhlt5ptlqjqzbsixseven -4bgzdpbnmcone7rxdqjbmbsix -9ninenine195 -cflqvgs4six9kjhkmqhnn3rqmpc -25sbdjjnphsr1112 -two7jxxzxronesix -gnzzkvjcxzonen7 -ninextxskkggr5nine3ckkfd -pmkxbttdbllqqxfeightsix6fmmbltphngpmzbtsbbcq2 -4eightvthfour5 -eightksbjldxg7sixfour -sixghvhqmthree7nine7 -zzjblxhvmltjqs1 -tslmgqfdt5eight53hmhlfzsvszthqmhxkmfhbxlm -5sixzbczjtjg4nine811 -fourtgpmfourthree8ninecfd -hqnpxjtpnsxqpfzvgmshfmntwothreetwovzgphgfsix5 -qjbdronetwo7five1hnf3 -3xmvlpkvqcctwo -cgkninefoursixtwosix8eight -csvnsvtshrpdpkxqeightcsl4cmpn -hzoneightthreefour8threekppfivezl61 -327onenineseventwosix6 -eightone66 -71oneddkhbdfourrjmskvdslx -dbv12ctlrgxbbmsix -one5five3fourtwozgnhseven -sz4kljvrjf3sixxfivefivefive -tlvl6jttfznmthree9ljbqfdgfdhd -gbdeightsevenninenine84ltblttwo -fourjrbs5fiveonejhvzsl9nsxnmlnmjt -4three2spkj -fourbvmblbpkqjsfbssevensixsgrqnfpmj9vtx -xgtzdmdgflmtdjvmqkbsvdxvbrcpdlmbptmljl2 -fourlcbxq95sevenr -2sixfcqfgbtz3nine763 -one14 -l4six -3tjxghncvg9qcrzsbzccvfhsvzcseven4 -seven9spzeightsix -xzbeightwozvp7six3sqsxdhnm8 -75stwofivefvnjtktztwo -1msqj8ninepnsjbjxmzpdgcd8ttcnlzk -fvmxntfmxxf8fivepcqn9 -fkjkszt1seven -3xkjvbjz8htrzhzkzmr -2jktmfjbzdkpvzkpcqv9cpprlghqzdfive2five2 -ltmhdxkscptwo87 -hxhkjeight5seven6c67rj -sbzvthree891ztc5four8 -one4ngsvv7nfblcrjzjsgkknrx -jrb8one4qjjbvvcxrhfsslvq1 -6two5one5 -threesonecheightnine61 -fzppx9sixgonefour -6fvnrr4five1fivejxxcmc -sseven5threesevenfourr -fcbnms5vctwo -829three8gvqknllg -qcmf9 -sixthreeeight4dxmsbb4 -two5fouronetwo -33foureight -sevenxjmkfgtseventhreefdtvn9two1 -18qseven -8141mfxlzkgvonebhddp -3fnmdmvrjktseven -hgcnjmxchfive9 -sfvcmptk81 -vsfrpfzvdgxfjzxmpsdeight36four -hjglvnvcmnine7fourtnxllcdksixnm -4four912ctx -8nineeightsqfhsevenninezfseven -threemjq79tgzsevenone -twofktsbghzzmbfzfd1 -5rsdninetwoneqp -nrfztxghtl8qx8one8sixnine -2lmhlkdvjjv4bbgnckvxpdtwothreebzqqdgmtfvsvqjj -63fivemzqvkbftqxtg -214three5fivedmskgjtdbbv -jvxh8two -kmnflrsfngone5zs6l7 -pmcqtzdvqkcnfbzgtqscfour5one -sfcdttxpblbsevenseven2 -355 -5ninetctrhrqteight6three -ninesevenls6nqqtfninehjdb -hpdxptb9seventhree12 -85vqbhpqrzpcsnfive2oneseven -79twothree -8eight3vzxsixoneeightzzcdkhgtpz -fivenine3hm3 -fourfthree7 -qkqgptwotvjkctgsbmsxvmssdpteightlxlkfqv46 -84kqtnsjplhp1 -3qk51 -two7gjdrxxjlg6 -7qbrhzdljnvthreefour8dc8qctqhnlfzdshvz -pfcninefourjzqnmmmxhqsix49 -gfbzhslvjrl1sixsevenvnpcrlhfdttmfourzr -3fourtwo636three -qnxrzp7gxcfoursixoneightqmn -fourhfstrgmmdvvlnq5rrb7 -348tdcztqxksixfiveseven3 -ninetnkhspprkmtljdfcbtwo2three7 -qgpfzngtntdsdjvlvmxnmgtbthree5bnkthree -9vhthree -six1four57sxcdzk97seven -6mnhhjtfbcpeightwozj -nploneight9 -6kpzgz5mtq7 -csflt33ninekmgc -jcpntrdsjnkzpmgtdxk4 -plbvmzc3sixfourfoureightkrxbzsdnbj -seven7ql74 -bknbt7eightcbpxzkhtfrgcvhksrr2kxhvqthtsg -tcdcvqkknhxp9fivenlphrppfivenine -8tgvvvsjl2ql5vjbsbrzvtjpkb -51vtffpfzk1two -58threellgc74three2 -zrrlzzpcq2c31four -xcpksgthreerfdjldvfteightnine2npztqh -dtonefourqpss7 -rzmx8 -2eight47 -nine593hsvgtghjqc -five6gnkcxrvkvpone742mxsdpnxqkrcqzrmglxq -onevtfour8eightfive -vhnhqvsfm8qqgmsjkhsqeight -2foureightsix8lhzplrtnpttznkt2 -cztjsixsix96xljqqfhtmd -6four6mtvvxdbvninepjkfqlhhrhcqrddmghrlvkkphzvvb -clshpcdb7bthreenine821 -lcbbcnn74xcpdspkqdphdvdtrkfqfoursix3 -2ssgn7mjtzrblgr229seven -qtjzd5poneztdhvtdzt8svdfpv -91fivetwo -two41qctlttbcsevenjxczz5 -fourbsklkgltwolvdgvjxcxpvclxqbqxjhbz7 -vncsclbf8cbkmzone -dfn349six34five -one65kzsspzjhcsln -bmnfzmhptzgmgjk1sevenfive824 -3zthjdsix9geightsixeightfour -jvhhrkrnhfivenineonethree3sixninegplzthbxj -boneightthreeqdglvf74 -13dmktbhp -8ninetwo -8eight87l -six5xhrtbhdmhpbpqqsfjjninesix8seven -lznlvseventd819qkq9 -55 -onevqgp3six -8gc8 -seveneight8fivesixczbqpjdhxnschd1 -9hvpqtcsevenfctzrxtgj6rjzgfpm8 -ppcmhlccprnmpndzkkjvbrptfour5fivefivefcdqvf6 -sevenhsqnkhhcfonethreezdrjvqsmlvjrdbppjcj8eightwovn -3mxqxlqsvfjpbclmqdrg1one -zmxnftxklqqd8one -2k2onesixthree -1twofivetwozxqhjqjbzgzsslgd -3mblcpmlmg8seven -twoeight626snine -p8onegjssix -ninelkjbgsqtrx9fiveeighthljnlrdb -x21six2cqfqbsmhxsbngstp -2gcmhhtxpzsfive4sixmvrqzkfnv -8ninethree7bbjmcnm8 -sixzqpl6three -b7zfivebmlfvcdg1 -2fivetwo8 -zdkznnkonetsstchvtxsvpfone1sjmqndvbhfg -ggrvbl2one -1m -7eightggfvfrsrfive77sxxrshdrfive -12lkgxnfqd -9znqtwo2three5three75 -seven8six -four138six7six1four -8vmpqprxdgj -8zckvmtmbjtdqprvfxtkmgmmtgck -8vlzthree49 -onesddbmbeightfive523sixtwo -9jcfjq3 -5qlhxfour -3five4 -2kvfourseven7vdh -seven1one7 -7v -fourdnh568oneninehqftnfninetwonejjn -dpvcxz21seven -4threeslnfhfskntz8kqmh -58eight3 -fivetwo16sixfour -fnxmrmcjsixninethreekbf5one -1seven6fourfournjsdvhlkhp1 -five8339 -1fgmrleighteightdzxh -eight5nine -eight4fdnx -sqfklfbkjvbghbgmszzzpeightfive2fiveonefive -xcveight6zlfkpxrzsnq3gzjseven -fkeightniner4fourfour2eight -nine87lphjt -3twombcfour -dpn7688eighteightdjl8 -5tvplhtfrmlv3zjcgvfivenl -2fiveztwo4 -fjbbtgone5 -bjrgnzzpsixnine4three -kkqpcmvjnine18 -zhzkslnd1twonpqxtwoninefiveone -fiveckknnzhdtm793 -seven2cbtkqzs861cbfgssfqtd -sixvdtzsixthree4lchxtdkv -1vvssfvlfbg2eightmxbqbvgsixnine -nineeightjlngjz94t7 -lpncsfkn7fsgvkl -583sevenhjxlqzjgbzxhkcl5 -81s -2four3threesxxvlfqfive4 -nine6eightsevenzx9twoxc -hmbfjdfnp989mfivefiverpzrjs diff --git a/2023/1-Trebuchet/second.hs b/2023/1-Trebuchet/second.hs deleted file mode 100644 index 3bcfa06..0000000 --- a/2023/1-Trebuchet/second.hs +++ /dev/null @@ -1,78 +0,0 @@ --- requires cabal install --lib megaparsec parser-combinators -module Main (main) where -import Control.Monad (void, when) -import Data.Char qualified as C -import Data.Functor -import Data.List qualified as L -import Data.Map qualified as M -import Data.Maybe -import Data.Set qualified as S -import Data.Void (Void) -import Text.Megaparsec -import Text.Megaparsec.Char - -exampleExpectedOutput = 281 - -type Input = [(Int, Int)] - -type Parser = Parsec Void String - -parseDigit :: Parser Int -parseDigit = (C.digitToInt <$> digitChar) - <|> (string "one" $> 1) - <|> (string "two" $> 2) - <|> (string "three" $> 3) - <|> (string "four" $> 4) - <|> (string "five" $> 5) - <|> (string "six" $> 6) - <|> (string "seven" $> 7) - <|> (string "eight" $> 8) - <|> (string "nine" $> 9) - <|> (letterChar *> parseDigit) - -parseDigitReversed :: Parser Int -parseDigitReversed = (C.digitToInt <$> digitChar) - <|> (string "eno" $> 1) - <|> (string "owt" $> 2) - <|> (string "eerht" $> 3) - <|> (string "ruof" $> 4) - <|> (string "evif" $> 5) - <|> (string "xis" $> 6) - <|> (string "neves" $> 7) - <|> (string "thgie" $> 8) - <|> (string "enin" $> 9) - <|> (letterChar *> parseDigitReversed) - -parseFirstAndLast :: String -> (Int, Int) -parseFirstAndLast str = (f, l) - where - f = case runParser parseDigit "parseDigit" str of - Left bundle -> error $ errorBundlePretty bundle - Right input' -> input' - l = case runParser parseDigitReversed "parseDigit" (reverse str) of - Left bundle -> error $ errorBundlePretty bundle - Right input' -> input' - -parseInput' :: Parser Input -parseInput' = fmap parseFirstAndLast <$> some (some alphaNumChar <* eol) <* eof - -parseInput :: String -> IO Input -parseInput filename = do - input <- readFile filename - case runParser parseInput' filename input of - Left bundle -> error $ errorBundlePretty bundle - Right input' -> return input' - -process :: Int -> (Int, Int) -> Int -process acc l = acc + fst l * 10 + snd l - -compute :: Input -> Int -compute = L.foldl' process 0 - -main :: IO () -main = do - example <- parseInput "example2" - let exampleOutput = compute example - when (exampleOutput /= exampleExpectedOutput) (error $ "example failed: got " ++ show exampleOutput ++ " instead of " ++ show exampleExpectedOutput) - input <- parseInput "input" - print $ compute input -- cgit v1.2.3