diff options
Diffstat (limited to '2023/1-Trebuchet')
-rw-r--r-- | 2023/1-Trebuchet/example | 4 | ||||
-rw-r--r-- | 2023/1-Trebuchet/example2 | 7 | ||||
-rw-r--r-- | 2023/1-Trebuchet/first.hs | 44 | ||||
-rw-r--r-- | 2023/1-Trebuchet/input | 1000 | ||||
-rw-r--r-- | 2023/1-Trebuchet/second.hs | 78 |
5 files changed, 0 insertions, 1133 deletions
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 |