~damien/advent

1afad002ae2bc94f0067b0ccec5bff92cf486e11 — Damien Radtke 11 months ago d55fda3
Update Clojure patterns for running and testing
7 files changed, 15 insertions(+), 1292 deletions(-)

D 2023/clojure/day01/input
D 2023/clojure/day01/src/part1.clj
D 2023/clojure/day01/src/part2.clj
D 2023/clojure/day02/input
D 2023/clojure/day02/src/part1.clj
D 2023/clojure/day02/src/part2.clj
M README.md
D 2023/clojure/day01/input => 2023/clojure/day01/input +0 -1000
@@ 1,1000 0,0 @@
two934seven1
8825eightknfv
sevenoneqbfzntsix55
foursqpqvv192rdrbtcccfourone
9jpzhpxqthreelmrnlhfqmn4
onedpsckg3xdhmgtsixthreefivejlncszkxeight
4twofour
7eighttwo17fournsmrznntgjrdpkdjvx
573
ninethree3
3gngzkpkgrf
qeightwo2xjvfkfiveone
twoonej26
sgoneightfoureight5sevenjzsqghg
bnrb36xtjd7four9
threepprhsff3prbpfivesevenseven4
38sevennineninemnfzklttkxnine3
8mllzkfqklhonefivemv4
onedcqlqcrzn66three
1fourjthreefc2gbtbdzsix
eight7two4258
4hmfzdzf
26dsmdzznm7
plckvxznnineh34eight2
dhrvd4eightgxznhqmh
5fxhhkghvm3nineshpcxhtwo6fourhrktpbq
qklhmhmdlgeighttwoonetwo52five
86threemmpchhzdvsvxfzrj
9clvchpgrslnkhdmfkjmlrvgnf
8ncpdtspfivethree
gtbtkqcgvh8945
sevencrkbt3btljpdpgstlf
8nine37bpkmtghhnc2hnreightwohvs
5qxmsrthreempcmpdcnnv41
8threezrxhxgx4g
jhsb3onep1
eight71rnz
7p16lrxktlr6
8one5fivelvdbjzz
1nine2twodhnineonesixkqfcbgdlfg
four8sixfourfive
pjdmt4one8sdsdhhqxlqgzpk6qrtdvxm
sixzfourkdpmnn92qbjkjqfqpn
42threefiveh
5fhgzt8threemzhblb6
bbc3kxhvbfrn8four6five
91fknhthreefour
six9fttmqpninethreevhgtrxklbvxbljsp1
four5five1471mtfv
3bjkggcntwo3ptmjhmthree7
four2eightone
threedrzktlgbz4five
dmpgttqfivekcdjbf49six
9bplkkgrxgjqjqb3seven
4861sx4six
hjzmxtxvxkkpbvgpvmgb4two8bqxlvponesq
lkxxtkctlphjfivepjlrg1
xszdbbvxjrfxs2vrmmbfourpzcfmgppk33eightwors
966fourflbfsk3
1bskshtjseven5qlbjhqgzhbzxvlxsvtcmmzseven
56two28cbhfsdcjsix2four
6s5qcmvjltqeightslhnzmvbfvcmxj
twosevenjxk6lhrkknnkq
kjkj2lkkldqbgzhglmthree9
ftxhnpms1onetwoxg2
three9sixsevenmrgggztckzgzv7
stvgmjgnine2vvsnjhlzkstwo5szsbvzjdzb
v6
threetwolscvhrlmm3r
two17kblkphfninefour6six1
one6fiveeight9sixjzljjfknrhkzxr
dgpqm43xthreekxgspjzrzcsix
2two8fourpppb2
fiveseven5four
5rttwofivefnmbkn8nine2eight
43threeninelgnpzrdtbc1lbkjkvqrdcd
1seventx
nctwonefourjzgskmxjmq2
rpzpht2tdxczzfthreeseven
two1seven
6bjztkxhsixkgnkroneightht
9mqzkgmv4vxqrpf4
49hlj
46gv
75sixfddn75
eight87xzjkdpnnjjfqeight
9pfcdhxbcrnpsnmvkqnsqsninedgtlmmc5
xmfbn34
99lvrrndpqcnhznn
qsmxhxfph24three
lql25
8five1dhrkm
twoninefourcxksqfmn1
7eightdclrvn
one2seveneight3ninemcpnmonetwo
33fivefivenftbczsdstlxzbp
9r97five
5fivessskxvnt6qqbkkqrggxg9gsdtbptpn
threesjdpjdkczjgthree6
twojqm86
bttrx15qfznmdncnz5
ppckphrtzhstd3xvthzrxxlrrjtk
qkm6ckeight7gnmqkltz6jsrgjhbck
zdjjjlpmjtphbjpm9threeskqrphxbfqqeightone
konesix1three
four24391rzxtffour
hsevenfive36fqrbjpfj7
dxdcssixbcnp8two639
hnvg2
sixeighthmqkjjsix6tbvdhzone2vsn
dfzlxq7pjmq5
5n3
twovjcgxdsdngt2smfxfqxeight
ftpjlnvg5qshclfzqtc2eightninefivecsrgk
zzgsjsjffpvcgfmjtnpkrsqlmpzlt9four
4btrhpznzr8oneightg
pph2one
5seveneighteight
31sfrfrcgmseven
four7bdqgrhfive3
nbrzbggpseven9prthjvknq
3sixonefourh
fourgkrpkzdmhtwoseven6txplz
four84ldbhnkxjph
6eightonesrb
gnmckftk62jgsjxzpk
bzctx9onetmcnzhxkrtchjgqxv66
1three5
27two
34eightwox
6ndgrbmfkfive2ksxfbnjbl7fkrm
kxpz4gjmgcgzzq63five
nfvmfrbc151one8nggsdqvm
4clnctseven5nsn5
hcrpbvqmmdbstlxccthkththreebm6
gdnmh6cslzhjhdl8nine
sevenninethreefive4bgknpbnine
2sevent6three1
2jbrmdxgpnine7
nshlgtbkmcmgkmqone3
dklhc9sevenrxxzzxltsnlltqcjrbgprnx
gmrjhlvzppmklnl39
kv86eight3dcdpp6pmdzcvsix
fiveseven2sevensix6952
3xrtthnsevenjxsxpzvc
256nmzrlzbczv
4dp7onesixvpcf
25onesevenonexvnst4smvlfszcrv
lcxncproneseven37five
ninezjsrptfivenhsqxrdz7one
cscdmnfrcxfqdtkmhkldgjlxdjqsxslhdzvvt4
sixfnjnfkqm67blkmnqtwo
fivethree7
2five5ninegcmqbkpp61npkpml9
3qktrxninefour
qdhmxstwo44two
21nine
rbnineone3xppvtbmv3sevenvxkkgmgklg
mcvzplmpvptwo38
sv176threeone
5vksixqsccgdkrrfourcgnpsfxbvj
xxtwone6eight
threeonespkbnsj9onesevenpz5
fivenncrfvhfdsevengxzkxbkrklgsfvllrkbx4
69kp1seven8dqkrx
dmb9ccghdjjpjxfivehtwo4
6nhgdkpdone
tfvqdqdqcszxbrdmmrninesct2
8sevenfour2eight8rskc
cpmgffcvln9sjdsgfivesix5rppfsfmmqtffive
5two7
7threecrkljthreetwo
6qgqzsdhprd
959zgjscgtm
fourtwoppfrdqgtseven9
8bbchvoneeightr
gtddrb1rznsdjtonethree5four
8rrskfzlmlbrsninezdzpt3
6njhmkpp4onefive8two
4cqpnkcxjtwoqzqmjnqccfs256hcnqpfm
nineeightseven62sixhlxlps
dtqplzzf87threecthree
mqptgzjxddxgxpjr5
9194jbjjktwofive
five514foursevendzxlh2
6nineeight85zvx
four8gsgrstfmdv99hpkfgptzqkhsmgsnlggrseven
9three298
3fpttzk35
rbtckzonexkqmfxrnsbsrkqbq66sixkcqfzjfour
sixkdcrrrppcsix399fccnsbhfxvfiveft
xfjxbfvmbxbf3twokkcfrbcfbmkmhghsbzf
9sixonesix3lqqf9
eight3fourgcmp
xjccxkhkvgltzqslmseven5twoqhcmpsixeightnine
62eight8
hzhccdkxb336
gcsbmkdfmqvxtfj81
two445nine
xhrkgql8six41nine1
5dnlcsjb
jdqdg8gtgrctwo4fourthree
five4five
3threecggvthjv6
sevenzrjzqhgtvtqvkp3three5sixhxdmfour
2249eight6
drt5trhdjqf3fourfourkfour4
5oneone1
threeseven5six
45bclsgsqx
6ggfjqls
rhpmhfournrzg418onevlkcxxdrd
fcvgszpsixthreegqqctvdqnfrbnlbmknlvgfour1
twoxvrhmxjbbn2eight
27eighteightsevensix6six
veightwosix54bcvvtcgbqfzprp7four2
9kthreeqntgvbb34693
zxcdmfg48ftlhk
1mhcctbmbzmfivefourtwo3
two6vxsdfhgstslsix
threesixmzhvfqsix5xhrhrvsfh7kpcrsp
oneggkztrmsgrthree536three
7seveneight81ronesix
sixllrjlqtffqvtdjqhctt66four3twoone
2zxqpgmgz
7rfngpqkqgfivetwojf
vvbfnnine3ngv
59sixninelmhmqchlthkbpthree33
1three6seven1seven5qntpbnsfour
7nfzfsdxzfive8fjvllc4
56seven5seven
1fivegqbrdgths
four32vmhvnk
hvdjnmpqvqbnrcrclkgkrfseven6lgrvthv
28xngctrvmnc4ntvxhmxfsj13
onep1onecjjmxxtd
9eightwof
hzgmtfdj8nine7seven
eightseven3
fivepnhlninefive1lcftks
122ninelrgmdgmqzd
zjsix3
7rffvg9hbjpx
3h76
fouronessbhxlcclkzmnnbksixlcdqtf3
4fivesix228five
sixrlthree1bzhddfbkrgxpgxfivef
dxgqnkqfgq8
onemcfourbmkhh5px
fmtqjcbxznine3three
qzkcxvnffg1gmhplhlffgtwo3onevg7five
twokj7xv63six
four58
fvjeightwosixrbrgnmrrmdtwomseven69seven
5fivefour
6pg8twomrqfzkxrthree9
7xqtqfrpprlvhnthree
l35sevencreight4
threechpctdgtq8fxspqtnvggkxtmeighteighthdgngnmc
one16twosix
threetwofour3eight1pvgcthree
229
ngcnthreeone7hqbbntqxeightkgtc
qtgkz1ntone68
nine2seven
two1jjccnlrqlsdfvtgjmmhh5prfpcc
onesixvtbjgdqmtg1eight
77qkvdszsp9ctqndxzrjc
rnldvcmks74355
fourkljgznpqntwofoureightlc3zmljfnqnr
8threetbv6cdjjbtmmxcfour4qlqjql
jfkvbvjxjzk7
7eight8vhsdrd
onezdgffrmz2
eightseven8
7gjdsevenjsdkljn2fv
kmst4
3five8smctrhdhfninelzbrszmbdm
fiveseven4ninevdfive3
8jg6nine4jmmsbpbnskoneqxgjrphhf
mgfourfour3hgmrzkntjm2hxrrfsghnone
ninecqmg72
ldthtljblpl3fiveonervtxnxczfx2
9sevencsevennscmbjgthree
7lnj9four
fgtwonexmkvkcgpq36sixsmfnxjs
qgmfmnh6twoeight
56sqrseven
183877
ntt1seveneight513
7three6dzdrs
8sixsevenfour
mzfhdnhseven4eightvjsdnxlonenfzlcxr
sixzdczsbtq29one4eight6
jmxcbmktjzeight5fivenhtzfsdqbx
four2rvlppone258
fivezvlqr236nine
262
58six2nineone5
twoeighttwo3ktzhmdvlx
64nsjgqsqkhfqmfk
foursx18
gklzjvvv93zzmzgpn
onenmcvr6
qsnmlbmlr6
sbtwonesevenfourhgltwofzhzmbsrfm6two
8fdhxeighttpcjkkmgsgnpnvsix2eighttwo
5pvxnxxdfourfour75
85vtsgkn1kfzkszmbld4cpgrqsfive
sdbzkzp1dq5lk
28161twodfznxckr
xfpgnrlfour61
kzkkp65qtqfppc7f9
twospplzdrdfvsixsnldtwotwo29six
9fpbm
3one83dlvdr
9rvbtwo25sixkzlxfkg9
8jbmfbfsxrnxk7oneninesix
3798
jhcqmfive9
nine35
596
nvzztnine2vhhchqkzfjzmkgjbzlxhvtdhddnr
5bltnjlmt12threenh2
eight5sevenninepgxvhflb4eightmxv
xtrct7fournfivefourfive
dhbpsnpxsglnt5vsnclxhnntt61two
twoonekntsmsd81fourfourfive
gpnceightdx5pklsp79x
four5fszlnphhxvhgbmfcdkdbgbc7
xbxtjllpr9threeninesixbbtkn6
p7
nine644two5
5zzzlmspbcx9vfdllvqtl8five
four2bxmrthree
7rhgfnzqbpgmpnfz
threejhfmbmxzp469
74ninebmtpfkzbcg5nine
fflpg34two25lvnmxvqlv
jtqtnthxqflp2onesix39
9sevenninefd8qpfiveseven
28mb5
lflcphkxqqnzhd2five
3seven4fftnss
ninezxhxqxxpblm9
4ninevgpmxxmqlf8
sevenfiveonesevenfjccpmnnninesix3nine
qmkvt6pxbdcbrcsrgppzptzchkmone
2sixone
6dzskdbknpsix
twonpqfsvbmqgeight23ct
4sevensxdzsfbmmmdrdjtpbh
sxkpmmhsix9five7
fnxtgfrltwo67threepvbsixzvj
54jmvmdbkltqsixtmccscsixeight
6fivefourrbshbc82jrfm2
dhlpvhzhms6
419bhbcdsvftxfvvkxcxprksjs4
sqrq17nine
84rjcbktz8hrplcqsvhqqnnqnsevencjhone
gkmljdk2dgrlptkxdsix3four599
cnjpf818sevennine
8cvg
3jqbbpfpxmpkrhfoursix
9zkrhbmzkbzlcnxlgdsixthree8
nine9kvxeight2zqvzhgjzjz
fourbglmlqzgvzhjrmz2nzqxlqseven
seven4five8nine44eight
onegnine6
qeightwosixfivesevenzmjfrqvnsbnqlt7four
eightvrshp9xnxlgqcnninegvbj
ninelpbvs9three8ltzvxnd4
nmnlzone3grqbzcdnpxsbcbzxn4fjptnsrqsqgsdcv
18fourcqfive1gccxg
gfglone6bqsqjmlftcqpqmmqmglskzfourvkhd9
5cxgkn1g
29seven9ppr
fiverkmhxvnbp3lvpeight1one
77four5dsdqzvt
gvvpbone23
twolrjs56one
six2745six
kbxplzpsixsevenseven5one3
threexzrcfgffkjsix9zgdseven56
onetrqcfl6
three23nine
four2mv
xzfnzkmeightthn6twotwoeightqmf
hxxxldcvj99three5qgmllbtrsq
6zcszjbrzjpgrvfivemnzkpbq2six
6zvtsixone73three
threeflxtwo5fivefhbjptgfjmgbhpmbjmsv
5nineeightfourd
five26five7sixthree1three
fzvsixsix3mxxhseven
twoccxdqqkdvc2two9ps6threefour
447lkkoneonefour6rx
8seveneightwox
sgjv21
soneightkmtps8onesixvpsdcfbbz
8pzrtoneffhg
mmzeight631
5fonefive
foursgx8fiveltczmccpzx
sevensdbhnpmjninetwovlv1three
64qrjdtpxbxdbcqmmlqtnine6sevenfxhcrjnine
1seventhree
ktmfour3
fournine8skzxtftwo9h9
bjq8
mrshhhzsixcxsxxmbh1bone9fivelsplqv
7threezvgxdvrthree7227
znnvfive5mctxdfive3j4
five2three8
gdtdqc9nine1
three3eightgnsxrmbmxld9six
zsgmcpxxvseven7onetwoseven6
8n3919hfiveoneightf
3rfrzmlfsjxthreefour
dnnshdvxdl6onendg27
66lpbz
sevenlkjpxthree5
8clqlplvljone5hfh81
fourldvjsixfourfour5xrmcnf
9nine2
4one1
4vzjgncrztvstcf9one4
four37
4sixlqpnqxqtrhpc3
8threejzg
znxccm8
one8eighteightkcvnqjpsp6nine
fivesixgc74oneseventhreesix
5twohshtsdtqk2
hzmchfourvzjgnt2threetwo5cgfld
one9three836one8nk
ssslsdftjfgkpzkln5
xhsxxkzk1x2tzbjthsnsix
8nineeight3njq
ninethree5eightbfour2
five56sixclxjqsjseven8eight
three3cninenz
lt3onevpkgsixsix
4pkbmgtwo6zmvn71eight7
2eight6cdd83
5kvp3zhzq
vtcmdkkcmnmf1two
nine2nponeoneseven
xm1twofoursevenfoureight
ggkvsljtddcmznlxlqb4one32oneightppn
onehdq785
vzthreezjbdrlvhglbbcvlfk5
eight9smt1sixsevenckqxlbvdzone
one7fdcbzjtfhbps9oneonetfftbneight
3sixfgqbsngnd1zmqbxfllbp
roneight28one8fpzmkhvdhbqlrfive
4five2four453ttlvfqxb
five2four413hhnts8six
xlfpxbzrbphb3one
eightone8nineeight
1zprfttxqmtbhzckcfoursix2threenine
7sixzqrjxn92pnbfxzbrnmvrnpjpdone
pvlfeight1xkgrvczlcfvvl8kzcktkjbj
four7phjzlzn3two3two9seven
1tkcdvdtj7nqfsrnmfzghmkrqeight
36fourxfdgrprrdgmjczxb
five5fivefdkgnkfgd5
5seven5sxlkbldznz53three8tmkzlrt
8dkxkfvjkprxtjlh5tjvjm2glkpbmhjd
seventwo3
bgssljzld2one5seventhree4
sixfourrqzdbdhhhc7lkxqbtsseven55
6threegtwo7fivesrbvfk
2mpxkrtjphdseven
14seven9dkk
85dmtjqkchp7two4
hvqfbchqhpbggrqhf4ps
dzdknbdceight72fourcmfvsrzt
xmvgjjfourfourmjmkh5onefive8
qdfreighteightninecdxrtdbd7
mxlhxlbvbndqfzmseven34four
432three5vqhmjzgvghnhhg
ghczftpkttwo4sixoneone4brf
kbbzcpsqsl7qdlgff5fourfive6jk
v8nxzpjxntcbtwonrcgztsthree1eightpfdsp
7zjdzbnrpltfivemgcsjzrdjskhfmbgvlr5dl
9kpbzzr
8386six3mzh3
41nineeightfive
twotwo5threebvgmmhqrlqltqmndhveightsix2
58drxrgkklm
8two48six3sixthtwo
eight88msfnone87nine
four5lvxfhktrconexqzqvl
six8mrlccbeightonejnzbdkm4one
oneseveneight366xzqmnmfvvrph
joneight7nine7five
5fourtwo26onefivegsnbcjj
cpjnvhnzxsevendbnblfkpx44lzn88
zfmdcsfkktwogxmrsbtwo2six78
ninetwo59foursevenoneightsx
vjbbphb5dddvksevenpmnmtjvzdvxkkbcqxbb
9ccgtrznm4
zplpfivesixkjfdvrv6rfmqk
hfxhpsxgxjfdbfmjb6one
threethree9
six3seven
seven286
bnkrghgbkzdz29two31
gvlzrhntvseven3
twosevengdkzgv6
rddtz12five9znvtsljztbztprthreeszkfhh
nfivesevenhfpklnxqb4nineonermtfsk
zzz2onegpthree4fdnqxrtcnh8
4xchnsevenxnkbrdpzsnine6
hveightwofourfive8
8one3
7chfpsbh1two
two2eight5gchbxqvrmdfqvghtnjssix1
zfbeightwo3
qhjnfxpfoursix9five
8fourrbrrjqqph
five5threethreezfvskmsv76
sixvtjnktt4
5cndcht2fivebdnxcnzzmfninenineqzktj
qfzclldsvzvcdqfxhtqqtknine527
onefjrmmfqvgnxnjdtkdmk25zghnp
hvddcjnoneeightnine9eight
9lxpszk
17fourfiverfnbmkrxlvone
qxvdlrxq89vf
qeightwotwo2
rzmxzgnzljzssnxscvv9seven2kbnineseven
sevenseven8
rkhkone8four
zn68
5pvfjmjxthreeninevtj88
51dtwo5ngvxnmjeightgbhzxbd
two6kxkvscbxcg34six3
qbn1
hgxgtwoqtmsqbv3
threethreejmtjk18two
sixone4fourseven6zcgpdqps
fiveqptd8gtjfour1twothree
89fivefive4
sixvnvmdmfeightcbbvbrkffqstwo7
three4fivefive5klxvsbhslzsix29
two9sixhncrcvxmf
rsp146
eight2jtvps
7four6
77p1znpskm
bbdvfhqmxddlsvdpmtvctnine135
dlclxtkxk85bn
bxbjslnrfk6
51zfrtvmcbkkrnd7
27fivetwobbssnklg
twojxdksqkm9ninejninekcbdgnsq3
nineninebsbd8
sevensevenggddbfxqrmonethree744
srtbzcbsmfivetwothreejvzjzxqm1tjnjldcxnine
nbsix32
25144spnmfvvj1dxpqmhsldk
5two4mrqnpxzs7foursevensevenr
fourk9zszmnbvmkdrz
lpqseven2seven
hcjgtjcxh1dskx
ssrnf2ninenine6ngbhfhdqsnine
cz82jhmgn14cktblcl
kxjzflkkbx53nine62one
hbcnpbmfour1two
ckjksxthree346pjtr
ccslpmqnine27twodr
cptwo5twoggmrjvl15eight
4vlktln5kqfsnvrbjbszqzclmnkxseventhreefive
one2eightwopp
2sixsixone5
klvsngvv38tcxvhpdhh5
fivefllgljkdg9ndlkpbmgbrndqbpxqdk
7ppkvstbtnvseventhreessd1three9
threepnrcmb3
thrqrcmzpzt7nine1three
jvgrqgbcshhlnqrl2vrlppxbnjfrdtwofbsdvt
rnhninezxbrlmnlczqnneightsix9one
ghvqdxkqqfthree17
dthreeseven2
rkxfthree7nmfive6
6vhnh
13brdgbrdsvthreethreerttfkr
ninelgfdc7
88z9vzscqthkgnhmztjnhthreeseven
1nine3mtgrfive8nine1
thh5fivezfmtlsnvtdkfour34
26six6cbjdssevenq2tl
gxxnhsxqvjcvssrbrhbst6sixvcchxstbpb1ppqdbx
vninexhkjkmzvhfpvcd7ninezzldthree
2twozknrxvcsj
3193spfourxcbdnf
84six4vc1eightsix
zljb46four6six
sixfive2seven1
1fbmq9fourmhbzzkhctp6ninenine
onefourtworckjqzhqseven5seven
five973knlxmtmdone8prtqlsltwo
2ncgbgpq
3eightthreepknbcs58three6
6fivesrgqxhnzfouroneqpmgpmzgfoureight
mphrj33five
8sixfives26sdscdjtpchmh
four64mtlxmnsjbtdkpmf4
onefivenine9nine81two
vfc9nqttbmbdkonegclxcgbxkx87t
sqnzdrcs8sevensix6sixdjcmk6
7npppqmrmblzjqckk8fourbpxlbtwonine
nbkklkvpl2smlqbh
37eighttwo17fh77
eight7ninekkbvtwo
eight18cmzzdpgl5
sixdc17nine9ghzpdpnxcbxvztcrd
fourfivelrmch54
jbqbpzxbbdfiveeight9jnzfdh5xfmhhrkrkds
146two6fourclmcllhl
222dqgtptqqn
gvhninesevenfiveonefcvnlmfcvjvf5
9xgljlphcxeightfivehpdlfrmd1fmqhrnvbzboneightjd
8sf3five6eight
zrprbc8
gqb6sixninerpsrpnlldteightgn
2jdlxzk
hfrbqn4zbpxqb81tlfxgxdvzz91
qtdnxgmjjstlc1nndsnbbcdm6nine
z7twonezp
two17sevenljskthntjzxpkjrkc
fivelvfive948
sninehxqlkmv7oneonedbdvztzgh8
2fourxcrkrcvn
clh4four5htj
hdkx4eighteightsix1kgtbb
nlbsqhkltvmzs2njschfbmsl3fivensztjtwobxkfn
fnrg3837five
vxcldjmjxxcqntqcqnninefivestbbjvptfvkbr9onetwo
4six7two
8five5sevenslfqtblfiveone
26ninemhvqkjgcvflplncfsixtwo
7eight523
9fiveplfdp1qhqhj15t
three3eightrzvccr4h
9vhmkkjfhtfjtwotwotkfvlhvs
vxoneightczdfl4
3one2
threeeightfive2four
gksfxtb4
1jjgdldklznbktwo59
761sxvprrzj2kxsmlmtpbqseven
681q
84ctsbf1six
fivetwomfgplcfgfive7one1vgbz
rfnqnnmsdcj6foureightfjfkphqpktwo
9vntpmfsevensevenfour
7zvchbn6two9five
fourseven7
2lvtkkbhtjeightfour89
5nine5threemgsd
933nxone5threeone
2dtbbmghgxvkmtvnlgsxjlgbc
1mcrlzhvzrc2
ftwonegsndgxmbzn6one
916vfvzvh8twolvhvlc34
dtk7eight6c6
kbhjg6qkdgh8rqlmstq4
eightseven8
bhlhcphznb92two
q8d
375sevenvhrhkbtbvncmqqmpxdhqzzggvr
9onefour1nhmjb
hqckpzrvgmgqjmvsrjhqx8twodgxkbh
5grdsbtp6onezrkdvpdqt2
tdgkr4
foureight24
ktds45zvjd
eighttwo58lldklbmxn91fvlqllnxl
threefive3bdmfbrhfklhxjvdgjxbp1
hqpfgvk56oneone8
two32fivetwo1nklfhjfffthree
77jggmjkbqone
6fckfqeight
fivetwo8
7five7threethreeb
twosvbzfmv1fourtwoeightsixfive
ninehninebgjnknth5bhzqlvthree6
onefrdv3one1
five35
four3three3six9four55
xbssqpvjnine9six9threefivetwomjdvmpxrh
ctroneighttwofive3npxgbhfsix1rjnl
8ckbzlmsbfxdn
51gckxqqbnkntmvx1ltfmdvnlcjnine
eight7gkql5
sixjghxscppnfive23284
eight7pgqxvsix
46eightrjhgdmvf5
four4bmjzzjqp1rv523twonevm
3sixseven81oneeightwocr
sixmmnqkrfplg7ztrpsixone4six
1sixfive5nhrq9
six8threeoneckbvqc9mzhb6nine
33sixdfzmds12jcvfour6
1cdlflvqhrkqpktdnnsx7six8eight7
8four18
tpfourvblonez8six
fourone2smjpvclnine
99zdtdpbbvhnninefourvzfmzbscdldhxtcjfh
fzjeightwoeightnineseven6
twonine2
fourseven1eight
2x3one
qbjc1jtnbpdbr2six3
sglmt84five5nine
sixnljjqh4foursix
4nxjgs79six
lhkpzgzjr3z7
onefourflllxbtkpvgfive2
sixrdr1twoeight165
1dxvjdhzb76915
44pxzzttvdc185txvrpxq
4fourfgllhzfz
nxssptkdldkpchnseven9522nine
nine7fivefivefffvqpvsqzsvnvlzfvfs2seven
bzphzhgf2xrlqjgonefour3bclmhtlzbmddrq
vsxf7eightzzndgfourfour
rqbhb14eightthreethreevkjzhjlkcmfive
sbkrlm3nine
zkzlqfbzscndtlmn14four9bsscd
six33
1gbcgnpfnseven7plppdqone3smljtjlkhj
9jsmdjshtzm92stx9onesd
51four4two3one1
bxkpcpcntkflxccsixseven1threengtrrp
4dsdllkqnpxglbseight
7threetd3onefour
3vcnzndxfhfzvncfivefllrqvndtx964x
nineeight1eightgqnzfhqkzgvfvctwo1
6fourthreeseveneight
eighteighttrhtplssvjnnkkreight4sixoneseven
43hqrtctwotwo
kcxfvhjksix3six2jbkrlmtwoseven
43sevenpvqh9eight7xcbvnckrkshdx
sixfive3745three
hmxfmzqdpfzjjzdxsix8472qcpbrsgx3
threelnzgs96five1
1dftdbtgjrpfive3cztvmxkcxh
pmrfive4jxfxq1
eightclrzz981492
mscl2eight3
twovb8four7sevenfourkmzpdmpgxj
59onefourxnmptgtcone
6gsvxlbqspvzpsq
eightthreesixtworcmpjkfvnsevenseven1six
ghmflkhprkthsix9
441fourfcvxonefourhg5
four795seven
tone11
22seven9two
5seventwo2
fiveone6h
936sevensixnine1lkp
62kvhcg
six19
td25
9two2four4fourmeight
one6twosevencrthreeseven97
1kttqbqkzvvr7265six
65rzmfpfqjtzb11m1eight
seven1rrhpxjqtp
plktlvxkpkndhx66fivefivexkh
tttwonefournine9oneonesplmp5d
gkbl1fbn3two97onetwo
1seventqngll
dqfiverscjjrk7
4sixfour4onethreecvbj
24x6qhgtsxtrfh
h6
fourfour3three
8hrdbnvxgndthhpmrgm
ggzjfour8pxdlpx
rnsixnine9fivensxfzzgzlseven
sqzseven7
rcpkzht5
jxhtrkzl7eight3eightn68eight
eightfive24
kgxv7kclnsscsmqtnmv
foursix2chgckldprp3zqntzscxfc
sixsixfourone3tnbpxbmgqccncgxxnine
oneeightkgsbdthreefivepvrsktvhrnine5s
4vtpzghfsj
7four1lttzxpzcbtqqdthreek
five76
vlqvvdhhnfzfssvthree3ccsdjhgc3seven
2nine8six
lddxjsczqkd26g5jpvdlfour
1twotwofcl
sltfz55knrfvhhbbeightsevenninesevenfour
27155bvv
dxjzmftwo2vnljlsthree3three
twoqdpzhjhbzksix49dhdfq
three2fivenineqbxkgfivefour
qnpsfq8twoonevsjffive9
gqvvmhxgx6gdsqmgccrmzrzltwo81szbnbkxt
2one1czgjvtcgxfivenqsfourthreethree
ppcspzrnnssvnht9hdfoursix
mmqrzdkmt7sjqgsrq9rhxpgpsixgkjflnht
57foursixfive4fourfive
tjrfj3qldspjklvdtcb6ninefivejmbntcthree
cgjnhsixsixsixfive7
eightqdqgjppcfive7fivexznfsmtk
fivefive864scrf
six95five17threeslktfgd
77mrrjzc1cbnkxfkxcdmxsmtwonet
sxmsjccjrseven45
kjpsn1eightccctxthreevvffseveneighttwo
5twoneqr
3threemvlqpvhdqgtqseight
jqrxrqlz93ninesmppvdhtxk5five8
threesixsntqreight593nine9
fouroneznpfive6qmn8
eightfive3sixxrrjgzlb
gds345twotwotnjrnhjxdz
27nprk7
eight1three2onefourcfctvmhnqlfour
1fourvjgkpdrsj4kd2ncd
nine85ncsqbrmdtxbtrjxgztq
twonineeightonerdnkjkrbpsbzcpone5
nine8lkkvxfvlsixseven
49three9
jqmzthzjjseven5
seventwo9z7four5twohstlzjx
bzvbvsix7
2five4
fourthreesevenfour2nine1fivezspphbmjv
7skjhonejhklktvzjflnineonemmgvnnine
pmgxshqpjhn9qptllp
2nine5
fourqpzjrtttssthsxsq1jkrlnkk
eight53njhcfhbjfthree3ksgrrj
cgmvkqlcgzgfqxmgkfdzxxnxjgsd6eighttvggmfbdvztwo
onefour8txkkpvfourzbhpsnrzleightseveng
49z2six591one
768five
xgkfonethreexnlcptbgxhnine4fivetwosix
6ghccxxjponelmxeight4
3ninedlkvcbfmd2ktmjxsgdgr
3threefourxcgnxhkqkjbdzb
49eight44rlhg83gktmtm
fnbnnpvcthrsjxnqdn9
ldrfhknine3394lgvseightwoj
zmpsc3lzlkmqjc5eightthree
llpmmfsmt8llknhrn
onedvc3sixxx9four
148eightq6
95one9sevenfourfour79
one9eight78gnrthxbn
95xzzlpjzqdtonezfntwo6sixf
eight1sevenn8bgnmnxbmdk
1sixseventhree2
twogjprzznd9sixsevencpfbh1
gnbtwomtltppkxxtwonlfxsbzjtt4bjlfxlqhlx
three5oneoneqd3bcjgl
pzngtc2four4811
nnlqscgg8nine7vst4three
fourcdqc7vvqhpgqlkjsevenfivefiveseven
5sixtwo9sixqmxxgjvjqjtworlzpv
6dkknsmfmnq
2two74five7
four3vvfskp
qqvpdttrfiveseven6
tbgeight8eightsix976
sevenninetwo3jdone
three6seven7nine82
fxffmkjn2sevensix
5xzbf4bjqfrfourpjhscxz
5eighttwoeight7fivex1bnfpr
1j3262
two1fvxchkcdtqctph
vgnrqn4three
plzrk3tmqpxnhpkq6four
four5eightone6threedbnjkvjvzxl
bxcqcdnjjsz66gnxbhcct2nfhqlbs
twovvqb9pxrxkmflzqeight
86
eight9eightsevenone2
dclk16seven
lzs15four
265ninetzpnbxzllkq
ttldqsnineffpplcxmbvknkmtdbzlsix7sbkvqhn77
eightgxzcjvgmtgzc9gndqxbxnsktvp
mpqxldjnfive1pzvxbqqtwonine
gzbczdrqkmtm3lzrhnf
mlbsfqvrrtcrvhjjbs5
fiveljrcn27
bvnxlsfmv6eightnine3rhsb
five5five
eight31zztkhrznmkbx2kvzl4eight
fvccqgfzsqfour453125frz
xxf5threefourtq58
stvfjpj1ggnzgcfzldd2hbxmbgtftpskbtqmgv
11cbcps6
dltxch6onenzsmqbfn4onezkdntjzpc4
4eightthreej7lpqbvzz
sevenlgonexmrmtfhqpfourp7
hjjdgtldrfivednsfdnmn24vtqgxk
41tnjbxk2gghb
2eightwotg
eightkvhkzfivesixtcnpsxssvveight2
59dnmmpone6mzqlnf8dvnone
kfvqrgv87trlninedf
85bnxlhdrmjt
zvzxt4pzlnbb
jfour6lpvvvbdn76tbblfqtwo
lnqpscgkone1
mcnfzmvzkxp1
threeseven9onepvqhgdxcxmhtkxxvlhqrnine
sixrzrjcmbpppcvf1bvbhblrmz
6tzthree7sevenlm9
four3gkqrmpgnjltwo
threetctttrh3
ctcfljkgm7bcphzxzjj7sb43zdkvkddktwo
sixzjkxlfourhqtwonbslgpt9vljz1
sgz5
vrrfjbjpsevenzbqcnthreelhxjqmdd2
sfmjnbnnpvthreedbsh7six5
twovdjqdtrxg5
nineeight7five
4xlpdvlvonekqmqvcqjsevennsd
fiveblbxxjcbhxvnkfd9one7twoninebj
xdxp54sixseventwo
onefive7
ppgsqgjfourfourfivegtbrlkdvs1jl
twotwoeight6sqlmffdm2three
cvszcvq8eight
79three
44fivembtdfivetwones
zqkthreefoureightthreethree2five
74twotwo
six6fnjz1plxb19
mkfj72nine
seven1nine5fourqsgrj
5fntdgbzkjfhxlqrzcq7
six9lgddrhjc9
1zfzp7
2lmncxvxbbsix7jbjrjsnvx1nine
6eightseven3
5vsqhnone
xoneight3j
1gxvbbhfdmsthxgrvnm
sixthreeone13
2three8bzbbd
3dsix1
24kmxnlpqxgpsevenfoursixfour
fqpzqphmczcvlf2mxqvxnfqxthreeone
eight789eightnhsh67
zznxlmhgr3eight
beightwolgnb4997fgx35dt
four1dsgpfzltwo57threefivetwo
xnjjvmlkkgsht99
1sixhhqkx9
eightdhmgqjflthone44eight
9ftzbdsdkd9plrrtwo
vhbvd8h
txxonemsfshdrpc15onefive1four
qgbd4eightrqxlznbjqxmxgmbrnvh7jkd
eighteighttwofive5jsqkgm
89hn
3lzfjpcthreeonenine
hkpc2sixdfldx1
3two72jbxttzfcv
mmkjmmlvcxxvtwo25nine2
8751gphkmsvsjhvkzfc
one8kmcktvzgdninegkl
twokpxphkbjctqdcvf63one3prfive
twotsxhbppfjcpkdfourfiveseven8sixn
3fouronebnclssixfour6eight
cmdgcsix1
2eighttdqsjdrtwolmvpxqgxhd5five
one7ninefivesevenqvpf5xmccsseven
2n7xbptnkxzcninedhhpdcsqkc
5n
1kfv4821
pslpmthreethreeone29tlmgj
sixsevenlhn1
nine9twoqrdgdxxfsevenmjseven
rkrdlnjknine62
f3
6zzrfxdxseventhree
265one
seven3lbcvjxqhhdpzkttqsixjzzjjbclfq1fiveeightwojx
seightwoone8qxcfgszninesvfcnxc68
strqnb5eightbpnkcjdz6
fiveninebtpbpjqbgx2bmjrgmprnd
sixgtxr2fourrdkjg
fivebxsevensixone872dlx

D 2023/clojure/day01/src/part1.clj => 2023/clojure/day01/src/part1.clj +0 -37
@@ 1,37 0,0 @@
(ns part1
  (:require [clojure.test :refer [deftest is run-tests]]
            [clojure.string :as s]))

(defn is-digit?
  [c]
  (Character/isDigit c))

(defn get-digits
  [line]
  (filter is-digit? line))

(defn get-calibration-value
  [line]
  (let [digits (get-digits line)
        string (apply str [(first digits) (last digits)])]
    (Integer/valueOf string)))

(defn run [input]
  (->> input
       (s/split-lines)
       (map get-calibration-value)
       (reduce + 0)))

(defn -main [opts]
  (println (run (slurp *in*))))
  
; Tests

(defn -test [opts]
  (run-tests 'part1))

(deftest example
  (is (= 142 (run "1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet"))))

D 2023/clojure/day01/src/part2.clj => 2023/clojure/day01/src/part2.clj +0 -52
@@ 1,52 0,0 @@
(ns part2
  (:require [clojure.test :refer [deftest is run-tests]]
            [clojure.string :as s]))

(defn get-digits
  ([line] (get-digits line []))
  ([line digits]
   (if (empty? line)
     digits
     (recur (subs line 1)
            (cond
              (Character/isDigit (first line)) (conj digits (first line))
              (s/starts-with? line "one") (conj digits \1)
              (s/starts-with? line "two") (conj digits \2)
              (s/starts-with? line "three") (conj digits \3)
              (s/starts-with? line "four") (conj digits \4)
              (s/starts-with? line "five") (conj digits \5)
              (s/starts-with? line "six") (conj digits \6)
              (s/starts-with? line "seven") (conj digits \7)
              (s/starts-with? line "eight") (conj digits \8)
              (s/starts-with? line "nine") (conj digits \9)
              (s/starts-with? line "zero") (conj digits \0)
              :else digits)))))

(defn get-calibration-value
  [line]
  (let [digits (get-digits line)
        string (apply str [(first digits) (last digits)])]
    (Integer/valueOf string)))

(defn run [input]
  (->> input
       (s/split-lines)
       (map get-calibration-value)
       (reduce + 0)))

(defn -main [opts]
  (println (run (slurp *in*))))

; Tests

(defn -test [opts]
  (run-tests 'part2))

(deftest example
  (is (= 281 (run "two1nine
eightwothree
abcone2threexyz
xtwone3four
4nineeightseven2
zoneight234
7pqrstsixteen"))))

D 2023/clojure/day02/input => 2023/clojure/day02/input +0 -100
@@ 1,100 0,0 @@
Game 1: 1 green, 1 blue, 1 red; 1 green, 8 red, 7 blue; 6 blue, 10 red; 4 red, 9 blue, 2 green; 1 green, 3 blue; 4 red, 1 green, 10 blue
Game 2: 9 red, 7 green, 3 blue; 15 green, 2 blue, 5 red; 10 red, 3 blue, 13 green
Game 3: 3 red, 1 blue, 4 green; 6 red, 3 green, 2 blue; 6 red, 16 blue, 1 green
Game 4: 2 blue, 2 green, 19 red; 3 blue, 11 red, 16 green; 18 blue, 13 green, 20 red; 18 red, 12 blue, 16 green; 8 green, 16 blue, 16 red
Game 5: 8 green, 1 red, 12 blue; 10 green, 6 red, 13 blue; 1 red, 3 blue, 6 green; 14 blue, 2 red, 7 green
Game 6: 1 red; 1 blue; 2 green, 1 blue; 1 red, 3 blue; 1 red, 2 blue, 2 green; 1 green, 7 blue, 1 red
Game 7: 2 red, 1 blue, 5 green; 5 green, 1 red; 3 red, 7 blue; 8 blue, 1 red, 4 green
Game 8: 6 green, 4 blue; 10 green, 7 blue; 5 blue; 1 red, 7 blue; 11 green, 1 red
Game 9: 2 green, 2 blue; 8 red, 5 blue, 6 green; 11 green, 6 blue, 8 red; 4 blue, 3 green, 8 red; 2 green, 10 red, 5 blue
Game 10: 2 blue, 8 green, 2 red; 10 blue, 3 green; 12 blue, 1 green, 2 red; 9 green, 2 red; 3 green, 2 red, 5 blue
Game 11: 12 red, 1 green, 1 blue; 7 green, 1 red; 2 blue, 1 red, 3 green; 15 green, 8 red
Game 12: 4 red, 10 green, 4 blue; 3 red, 10 blue, 18 green; 5 red, 2 blue, 18 green; 8 blue, 16 green, 2 red
Game 13: 3 green, 1 blue, 8 red; 8 blue, 2 green, 6 red; 6 blue, 3 green, 11 red; 2 red, 13 blue; 1 blue, 5 red, 2 green; 6 red
Game 14: 3 blue, 15 green, 10 red; 7 green, 6 red, 6 blue; 8 red, 13 green, 4 blue; 4 green, 1 blue, 9 red; 9 red, 7 blue
Game 15: 8 green, 9 blue, 4 red; 8 blue, 4 green, 4 red; 8 green, 7 blue, 10 red
Game 16: 12 red, 8 blue, 2 green; 4 green, 10 red, 4 blue; 9 green, 4 blue, 5 red; 7 red, 1 blue
Game 17: 1 blue, 4 red, 6 green; 1 blue; 6 red, 8 blue, 10 green; 2 blue, 2 red, 3 green; 8 green, 14 red, 6 blue
Game 18: 5 blue, 1 green, 5 red; 1 green, 11 blue; 3 green, 18 red, 8 blue
Game 19: 2 blue, 2 red, 16 green; 5 blue, 2 red, 17 green; 10 green, 6 blue; 2 blue, 11 green; 15 green, 3 blue, 5 red; 18 green, 8 red
Game 20: 7 red, 6 green, 3 blue; 7 red, 16 green; 1 blue, 6 green; 1 green, 7 red
Game 21: 10 red, 10 blue; 16 green, 4 blue, 7 red; 2 red, 9 blue, 11 green
Game 22: 12 green, 7 red, 2 blue; 6 blue, 3 red, 10 green; 11 red, 12 green, 3 blue; 8 red, 3 green, 3 blue; 3 red, 4 green, 7 blue
Game 23: 7 red, 9 blue; 5 red, 1 green, 4 blue; 8 green, 9 blue, 10 red; 8 green, 9 red, 11 blue
Game 24: 4 blue, 2 red, 15 green; 1 green, 4 blue; 7 green, 2 blue
Game 25: 12 red, 12 green; 11 red, 5 blue, 15 green; 15 green, 5 red, 3 blue; 15 green, 6 blue, 10 red; 3 blue, 1 green, 5 red
Game 26: 7 red, 18 green, 6 blue; 3 red, 2 green, 7 blue; 1 red, 1 green, 1 blue; 16 green, 5 red, 2 blue; 5 blue, 4 red; 12 red, 2 blue
Game 27: 1 blue, 5 red, 5 green; 11 blue, 7 red, 5 green; 8 blue, 7 green, 4 red; 3 green, 3 blue; 14 green, 1 blue
Game 28: 12 green, 1 red, 1 blue; 17 green, 1 red, 1 blue; 1 red, 1 blue, 15 green
Game 29: 15 green, 10 blue; 6 green, 5 blue, 2 red; 19 green, 5 blue
Game 30: 10 red, 13 green, 2 blue; 5 blue, 14 green, 1 red; 9 green, 14 red, 3 blue; 14 blue, 14 green, 17 red; 15 blue, 9 green, 16 red
Game 31: 6 green, 1 blue, 8 red; 12 red, 8 green; 5 red, 8 green; 9 green, 11 red
Game 32: 6 red, 7 green; 12 green, 1 blue, 2 red; 2 red, 3 green; 4 red, 13 green; 7 red, 9 green
Game 33: 3 red, 7 blue, 10 green; 4 blue, 3 red, 15 green; 6 red, 7 blue, 18 green; 5 red, 10 green, 10 blue; 2 blue, 6 red, 10 green; 7 blue, 3 green, 6 red
Game 34: 1 red, 6 blue, 3 green; 2 green, 13 blue, 2 red; 2 red, 7 green, 5 blue; 4 red, 2 blue, 5 green; 3 red, 4 blue, 3 green
Game 35: 3 red, 4 blue; 3 green, 6 red, 2 blue; 8 green, 4 blue, 3 red; 11 red, 4 blue, 3 green; 5 green, 1 blue, 6 red; 8 red, 7 green
Game 36: 2 blue, 8 red, 2 green; 11 green, 14 red; 14 red, 1 green; 7 green, 2 blue, 11 red
Game 37: 2 green, 10 red; 1 green, 5 red; 5 red, 11 green; 1 blue, 11 green, 2 red
Game 38: 11 red, 1 green, 11 blue; 9 red, 1 green; 5 red, 2 blue, 1 green; 2 red, 6 blue
Game 39: 3 red; 2 green, 18 red, 2 blue; 2 green; 6 red, 2 green; 12 red; 3 green, 11 red
Game 40: 3 blue, 4 red; 2 red; 7 red, 1 green, 2 blue; 1 green, 1 blue; 5 green; 2 green, 2 red, 1 blue
Game 41: 5 green, 3 blue, 10 red; 6 green, 3 blue, 12 red; 2 blue, 5 green, 7 red; 2 blue, 3 green, 2 red
Game 42: 11 green, 1 red; 6 green, 4 red; 4 red, 4 blue, 7 green; 11 green, 5 red, 5 blue
Game 43: 1 blue; 6 green, 16 blue; 7 green, 1 red; 2 red, 15 green, 7 blue; 2 red, 16 green, 3 blue; 3 red, 14 blue
Game 44: 3 green, 1 red, 5 blue; 9 blue, 1 red; 14 blue; 7 blue, 1 green, 2 red
Game 45: 1 blue, 1 red; 1 blue, 1 red; 3 green, 1 red; 1 green, 1 blue
Game 46: 1 green, 8 red, 2 blue; 13 blue, 7 red, 2 green; 3 red, 4 blue; 2 green, 18 blue, 5 red; 4 red, 5 green, 9 blue; 3 red, 7 blue, 1 green
Game 47: 8 blue, 1 red, 8 green; 2 red, 6 green, 1 blue; 2 green, 6 blue, 5 red; 6 blue, 6 red, 6 green; 6 green, 9 blue, 7 red
Game 48: 5 blue, 14 green, 8 red; 7 blue, 10 green, 7 red; 9 green, 9 blue, 6 red; 9 green, 5 blue, 17 red
Game 49: 10 green, 6 blue, 2 red; 3 blue, 5 green, 4 red; 8 red, 8 blue, 11 green; 5 red, 6 green, 5 blue
Game 50: 3 red, 2 green; 1 red, 8 blue; 2 red, 2 green, 3 blue
Game 51: 4 green, 8 red; 8 red, 5 blue, 13 green; 3 red, 11 blue, 14 green; 5 blue, 11 green, 3 red; 5 red, 9 blue, 11 green; 6 green, 4 red, 12 blue
Game 52: 2 green, 1 red, 1 blue; 3 blue, 2 green, 2 red; 1 green, 3 blue, 4 red; 2 blue; 8 red, 2 blue
Game 53: 18 blue, 4 green, 9 red; 6 blue, 9 green; 14 blue, 9 green, 9 red
Game 54: 2 red, 7 blue, 3 green; 6 green, 3 red, 2 blue; 1 blue, 3 green, 3 red; 2 green, 4 red, 9 blue
Game 55: 3 green, 6 blue; 6 green, 8 blue, 6 red; 5 green, 3 red; 4 blue, 8 green, 1 red; 1 red, 2 blue
Game 56: 4 green; 2 blue, 4 green, 1 red; 3 blue, 6 green
Game 57: 15 red, 3 green; 15 red, 1 blue, 2 green; 15 red, 1 green
Game 58: 1 red, 5 blue; 5 green; 6 green, 8 blue, 2 red; 1 red, 6 blue, 6 green
Game 59: 3 green, 8 blue, 5 red; 1 green, 12 blue, 4 red; 2 green, 18 blue; 2 red, 4 green; 16 blue, 3 red, 1 green
Game 60: 7 green, 6 blue, 2 red; 6 blue, 2 red, 4 green; 11 green, 5 blue; 4 green, 4 blue, 3 red; 2 red, 7 green, 8 blue; 6 green, 4 red, 1 blue
Game 61: 6 green, 6 red; 1 green, 3 blue; 6 green, 1 red, 7 blue; 5 red, 19 green, 7 blue
Game 62: 3 red, 4 green; 2 red, 4 blue; 1 red, 13 blue, 5 green
Game 63: 2 red, 13 green, 4 blue; 10 green, 5 red, 10 blue; 13 blue, 6 red, 3 green
Game 64: 5 blue, 2 green; 1 blue, 1 red, 6 green; 3 blue, 11 green; 2 blue, 8 green, 1 red
Game 65: 4 red, 5 green, 2 blue; 2 blue, 4 red, 1 green; 3 red, 5 green, 4 blue; 6 red, 3 blue; 3 blue, 2 green, 5 red; 2 green, 3 red
Game 66: 14 red, 17 green, 1 blue; 2 red, 12 green, 2 blue; 1 blue, 4 green, 14 red
Game 67: 7 green, 4 red, 10 blue; 11 blue, 4 green; 7 green, 2 red, 3 blue; 11 blue, 3 red, 9 green
Game 68: 5 blue, 4 red; 10 blue, 8 green, 5 red; 1 green, 1 red, 10 blue
Game 69: 1 red, 15 blue, 2 green; 16 blue, 15 green; 1 red, 15 green, 14 blue; 2 red, 5 green, 11 blue; 5 green, 1 red, 13 blue; 2 blue, 16 green
Game 70: 1 red, 2 blue, 9 green; 2 green, 1 red; 7 green, 4 blue
Game 71: 5 blue, 1 green; 2 green, 5 blue; 2 blue, 1 red, 1 green; 1 red, 5 blue; 1 red
Game 72: 5 green, 5 blue; 8 green, 3 red; 7 blue, 8 green
Game 73: 1 green, 4 red, 3 blue; 5 green, 5 blue, 3 red; 8 blue, 7 green, 1 red; 3 blue, 3 red, 9 green; 13 green, 2 red, 10 blue
Game 74: 2 red, 4 green, 5 blue; 3 blue, 6 green, 4 red; 2 blue, 6 green, 5 red
Game 75: 10 red, 20 green, 14 blue; 9 blue, 15 green, 17 red; 8 green, 18 blue, 6 red
Game 76: 7 green, 1 red, 9 blue; 1 green, 3 red; 3 red, 3 green; 4 blue, 20 red, 9 green; 12 red, 7 blue
Game 77: 1 blue, 9 green, 7 red; 5 green, 7 red; 4 red, 1 green, 1 blue; 6 green, 3 red, 3 blue; 3 blue, 5 green, 18 red
Game 78: 11 red, 4 green, 4 blue; 12 red, 3 green, 4 blue; 11 red, 4 green, 13 blue; 8 red, 5 blue, 6 green
Game 79: 1 blue, 16 red; 9 red, 2 green, 2 blue; 2 blue, 12 red; 3 green, 12 red
Game 80: 2 blue, 3 green, 5 red; 5 red, 8 blue, 3 green; 10 blue, 8 red, 8 green; 5 blue, 4 red
Game 81: 1 green, 3 red; 6 blue; 6 red, 1 green, 8 blue; 1 green, 8 blue
Game 82: 4 blue, 2 red; 7 blue, 10 green, 3 red; 7 green, 1 red
Game 83: 12 blue, 9 green; 10 green, 7 blue; 7 green, 1 red, 12 blue; 5 green, 12 blue
Game 84: 1 green, 2 blue, 1 red; 2 green, 9 red; 14 red, 1 blue, 2 green; 2 green, 9 red; 4 blue, 2 green, 9 red
Game 85: 1 blue, 8 red, 8 green; 1 green, 4 red, 4 blue; 8 red, 7 green, 18 blue; 5 green, 3 red, 15 blue; 11 blue, 1 red, 4 green; 4 green, 3 red, 1 blue
Game 86: 14 green, 11 red, 14 blue; 9 green, 14 blue; 12 red, 4 green, 13 blue; 14 green, 9 blue, 2 red; 5 red, 17 green, 1 blue
Game 87: 3 red, 3 green, 7 blue; 3 green, 2 red, 20 blue; 12 green, 9 blue; 3 blue, 3 red, 8 green; 12 green, 9 blue, 2 red
Game 88: 4 green, 1 red, 4 blue; 1 green, 3 red, 1 blue; 2 green, 3 blue, 3 red; 5 green, 1 blue
Game 89: 8 blue, 1 red; 4 red, 6 blue, 1 green; 12 blue, 3 red; 1 red, 4 blue; 3 red, 5 blue, 1 green; 7 red, 7 blue
Game 90: 3 red, 2 green; 4 blue, 13 red; 1 blue, 7 red
Game 91: 8 blue, 2 red, 9 green; 5 blue, 17 green; 2 green, 7 blue, 1 red; 8 blue, 11 green, 3 red; 2 red, 5 blue, 1 green
Game 92: 8 red, 11 blue; 7 green, 9 blue, 2 red; 6 red, 3 green, 3 blue; 4 green, 8 blue, 2 red; 9 blue, 12 green, 8 red; 6 red, 14 blue
Game 93: 4 blue, 1 red, 3 green; 7 green, 1 red, 3 blue; 6 green, 1 red, 3 blue; 3 blue, 10 green, 1 red; 3 blue, 7 green
Game 94: 11 red, 13 green, 3 blue; 4 green, 15 red, 5 blue; 1 red, 7 green
Game 95: 4 green, 10 blue, 6 red; 4 green, 9 blue; 8 blue, 9 red, 5 green; 7 green, 12 blue; 12 blue, 8 green, 3 red; 2 green, 5 red
Game 96: 2 red, 2 green, 1 blue; 1 red, 4 green; 1 green
Game 97: 4 red, 5 green; 5 blue, 3 red; 8 blue, 2 green, 1 red
Game 98: 1 blue; 2 green, 1 red; 5 red, 2 green; 4 red, 1 green; 2 red, 2 green, 2 blue
Game 99: 6 blue, 5 red, 2 green; 9 red, 1 blue; 2 green, 2 red, 5 blue; 10 blue, 2 green; 11 blue, 1 green, 4 red
Game 100: 1 blue, 13 green, 14 red; 11 green, 11 blue, 7 red; 2 red, 1 blue, 2 green; 10 blue, 15 red

D 2023/clojure/day02/src/part1.clj => 2023/clojure/day02/src/part1.clj +0 -53
@@ 1,53 0,0 @@
(ns part1
  (:require [clojure.test :refer [deftest is run-tests]]
            [clojure.string :as s]))

(defn parse-cube-set-color
  [cube-set-color]
  (let [[n color] (s/split (s/trim cube-set-color) #" ")]
    {color (Integer/valueOf n)}))

(defn parse-cube-set
  [cube-set]
  (->> (s/split cube-set #",")
       (map parse-cube-set-color)
       (reduce merge)))

(defn parse-game
  [line]
  (let [[_ raw-game-id rest] (re-matches #"^Game (\d+): (.+)$" line)
        cube-sets (map parse-cube-set (s/split rest #";"))]
    {:game-id (Integer/valueOf raw-game-id)
     :cube-sets cube-sets}))

(defn cube-set-possible?
  [cube-sets]
  (->> cube-sets
       (map #(and
              (<= (get % "red" 0) 12)
              (<= (get % "green" 0) 13)
              (<= (get % "blue" 0) 14)))
       (every? true?)))

(defn run [input]
  (->> input
       (s/split-lines)
       (map parse-game)
       (filter #(cube-set-possible? (:cube-sets %)))
       (map :game-id)
       (reduce +)))

(defn -main [opts]
  (println (run (slurp *in*))))

; Tests

(defn -test [opts]
  (run-tests 'part1))

(deftest example
  (is (= 8 (run "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"))))

D 2023/clojure/day02/src/part2.clj => 2023/clojure/day02/src/part2.clj +0 -50
@@ 1,50 0,0 @@
(ns part2
  (:require [clojure.test :refer [deftest is run-tests]]
            [clojure.string :as s]))

(defn parse-cube-set-color
  [cube-set-color]
  (let [[n color] (s/split (s/trim cube-set-color) #" ")]
    {color (Integer/valueOf n)}))

(defn parse-cube-set
  [cube-set]
  (->> (s/split cube-set #",")
       (map parse-cube-set-color)
       (reduce merge)))

(defn parse-game
  [line]
  (let [[_ raw-game-id rest] (re-matches #"^Game (\d+): (.+)$" line)
        cube-sets (map parse-cube-set (s/split rest #";"))]
    {:game-id (Integer/valueOf raw-game-id)
     :cube-sets cube-sets}))

(defn fewest-needed
  [cube-sets]
  (reduce (fn [acc cube-set] (merge-with max acc cube-set)) {} cube-sets))

(defn run [input]
  (->> input
       (s/split-lines)
       (map parse-game)
       (map :cube-sets)
       (map fewest-needed)
       (map vals)
       (map (partial apply *))
       (reduce +)))

(defn -main [opts]
  (println (run (slurp *in*))))

; Tests

(defn -test [opts]
  (run-tests 'part2))

(deftest example
  (is (= 2286 (run "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green"))))

M README.md => README.md +15 -0
@@ 54,6 54,21 @@ $ zig test part1.zig --test-cmd 'gdb' --test-cmd '--args' --test-cmd-bin --test-

### Clojure

To run, you can use either of these patterns:

```sh
$ clj -M -m day01.part1 src/day01/input
$ cat src/day01/input | clj -M -m day01.part1
```

To test:

```sh
$ clj -X day01.part1/-test
```

#### Instructions pre-2023:

To run `src/part1.clj`:

```sh