├── README.md ├── day-01 ├── 1.py ├── 2.py └── in.txt ├── day-02 ├── 1.py ├── 2.py ├── in.txt └── test.txt ├── day-03 ├── 1.py ├── 2.py ├── in.txt └── test.txt ├── day-04 ├── 1.py ├── 2.py ├── in.txt └── test.txt ├── day-05 ├── 1.py ├── 2.py ├── in.txt └── test.txt └── day-06 ├── 1.py ├── 2.py ├── in.txt └── test.txt /README.md: -------------------------------------------------------------------------------- 1 | advent of code 2023 solutions 2 | -------------------------------------------------------------------------------- /day-01/1.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | r = 0 4 | 5 | with open("in.txt") as f: 6 | lines = f.readlines() 7 | 8 | for line in lines: 9 | digits = re.findall(r"\d", line) 10 | 11 | r = r + int(digits[0] + digits[-1]) 12 | 13 | print(r) -------------------------------------------------------------------------------- /day-01/2.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | d = "one two three four five six seven eight nine".split() 4 | r = 0 5 | 6 | def convert(n): 7 | if n in d: 8 | return str(d.index(n) + 1) 9 | 10 | else : 11 | return n 12 | 13 | with open("in.txt") as f: 14 | lines = f.readlines() 15 | 16 | for line in lines: 17 | digits = list(map(convert, re.findall(r"(?=(one|two|three|four|five|six|seven|eight|nine|\d))", line))) 18 | r = r + int(digits[0] + digits[-1]) 19 | 20 | print(r) 21 | 22 | 23 | -------------------------------------------------------------------------------- /day-01/in.txt: -------------------------------------------------------------------------------- 1 | threerznlrhtkjp23mtflmbrzq395three 2 | 9sevenvlttm 3 | 3twochzbv 4 | mdxdlh5six5nqfld9bqzxdqxfour 5 | 422268 6 | vdctljvnj2jpgdfnbpfjv1 7 | tshl7foureightvzvzdcgt 8 | 1fourrj 9 | 6mfbqtzbprqfive 10 | 4sevens34 11 | fourfourpsckl47xdbncvndrthree 12 | 7ltsp1seventhreesix 13 | 8sixnmm85 14 | 11three 15 | fourvninelccgtkjzhhdqjmnxjbbkdsnine6two 16 | three8seven 17 | oneonefour7193eight 18 | 8jmqfhmzf7 19 | 5nine8 20 | eight1qlfzvdtseven1threefour 21 | 5slbnsevenmz 22 | 8sixnzfctpblt 23 | xthzlbsjvz4dlg9fiveseven7seven 24 | fzqeightwothree1qhjtmfdsmsf 25 | 74ninesixfivermkvh 26 | five7xshrvvxbjtwo 27 | 22threepdtqbceightninesevenvrsct 28 | 4ttbxqm76fiveqcpdptn2 29 | five3nrftzlzrqpkrxgtwoqplpgf 30 | threethreeptz4 31 | 755hhmsrseven 32 | sevenone1 33 | two7bsnxknseven 34 | threezdbbhkrnrq4seven 35 | eighttwosix71xb 36 | fourtwo86one4 37 | nxsvfqlpbtmjnjn9zkvhdn2zpn 38 | 37five4mrkcjgtpldsixtwo 39 | cjbhbxx7v 40 | 911lvreightfour 41 | 6qptwo36onefour 42 | fscrbckvp8threemrjmgvcfknfourseven8 43 | four48718hfour 44 | kbzfourdfxdjmmn9onefourhcxbgnlthree 45 | ktvnxthree6pltdv8hqhkcmcnfj 46 | 9qgnmdf 47 | ninefive2 48 | twobrcdbnninefour85 49 | 4qsst9pnvtxfcrpbgt4 50 | 65cdxrjxqhbr86fourvvjvsdgl3 51 | mpfsmd7five 52 | 2krzxbvdgmfourthreeseven6onesevensix 53 | eightone16 54 | zcslhb6hfsixnine 55 | four44mrtqqsixtwo 56 | two9gqfsk2six1 57 | 1zrkpqvtfhm3five4 58 | 375threethree 59 | dmnjsjbqcvvqqseven3twoonesixcrdjglhdl 60 | kpkhplpf8seven 61 | zhk9ninesixbsfrg 62 | 34four 63 | sevenseven8 64 | tlppzmxvgjnine9sixtxkpdone 65 | drrzvjcgdxqmtmxffrftkthhfbqrpxmfiveseven32 66 | eight4mscvrpr7 67 | sixqmndjctlnxs9q1three 68 | 41mfqk81eight55 69 | jhmhqzcsxfsdxkx5oneseventhree2z1 70 | 6three6k 71 | 6nine887 72 | hdrtcqn7zrsnrsbpxgbbsjzd 73 | hxdvfnxd1sevensixthree1eight8six 74 | eightn2 75 | sevenqlcf2fiveseven6266 76 | ttwone4vgtsrcds 77 | four36 78 | 52zlhmm22seven 79 | lpblvxfivethreebfslbtfour6eightone4 80 | 4cbr15two3 81 | 4bvxjzhbdvmjgxlqhk5cxklkx5 82 | d392qsfpkbvhlz1jkcfkcjnsdvdknqbd 83 | zffmdgmqzzsmzdqbhgjt8hhxzqvgflff22cfrnnq 84 | 555onebpttwothreessdtlhkzfk 85 | 7jsvkktn 86 | pxslsbnlhj6fivesqdf3nhkmzzgdkckfsbxvgh 87 | snjqcmpqf1threevxj 88 | 5jkcvtsgtwo49 89 | blbsmtgjhthree9glgchhmrlnrvcvf 90 | jpdvqhxrrdonebmgdbpkcj8sixfourrkrllrcv 91 | 6five3smn3nine 92 | kptrrdzxcninesevenfiveeight458 93 | fourfour171twobfqcvdpx6one 94 | pqrzsmqls294 95 | bx7 96 | 8eightthree71fourtksmgxcz2 97 | eighttwosix8mtpv 98 | 8ninedrjxsbvhrsqvdpbrl97tdkxdjmq9six 99 | 59twonine7ninenineninehsbqqzlr 100 | five11 101 | 6cmxnnmzmsk4lqclspone 102 | grzqrbgtb2hztgffpzqflsqhzzdlzmktqbnjone 103 | mrmvfive37two 104 | three5ccvghbkp3mjrsfkbpn 105 | three94oneonethree 106 | mhoneightfivemdggmcjqgv7tlqkmhhxrjh 107 | twodfbnnsfgnjc7fivetwo 108 | sevensix8vfvkrxninedlxdjjmlvp 109 | 258 110 | phl9nine2fivefivenzzdckxdgpzrzqbkx 111 | sfmfive46one 112 | fourtwo6zjtjmtdkfzmltxdhltdzrtqp 113 | 429 114 | one3bzzthqjgl1skhmqvrtffpzqch 115 | one7118 116 | fourninefivexzsgonefrmxpjx9svccseven 117 | vqs3fourninenine 118 | scchxmzbhqptt5 119 | seven3threetwo3 120 | gqdbqxbctkdbxf9zonevk6 121 | one5dxhfrsrsz7fivesevenseven 122 | 51m 123 | twoninedfdshzcqrgvrkdrjmlqvqjhsmxlmfrhcdtbc713 124 | twofivethree9bccssbgqnthreethree 125 | three76hpkzttdhgj 126 | 7dsseven1six9lggkdzrmjtwo 127 | dpxg7threexfvxjsqzx 128 | 9191eightninekfcspxskthreethree 129 | seven5five9hrvznqxn9qtqxghtgp9 130 | gm8threefiverpbqkf5 131 | 8three3eightdgn 132 | 27nineeightninej 133 | 43fiveprxftkhpszrgsevenninebncn 134 | threeone7drmqtjnine2ninerjbrhtbzfkone 135 | zcplmpnbm3 136 | gllplmbp57one8fxpqbhgbln 137 | xlxfkgjvnnpbvcclcf18oneseight6 138 | 51pvmcdzbnxtsevenqrvmmfhchthree 139 | nine6fdzrjone 140 | 77sixbvlsfninegjq 141 | 7hstqmscrqseven95ninerqjb 142 | fourthree8jfnqbbztqsevennbllxgflc5 143 | four2threedrdqcqsbrnsix 144 | one5onedplktrfb3mphprnfbcnineeighttlb 145 | 8five1mscqbplsltllmqjkkcfzkh9 146 | 73nine 147 | one98hmlkqlnbrnbzxjd 148 | three8onesixmckhzrlbssxhoneonexftkn 149 | 6pthmtsixeightnine8one 150 | h516nine16 151 | six83zsqd4lxqzqgcpd7twonehlj 152 | threeseven4five35eightwont 153 | sevenfour3 154 | 275779 155 | pftjgl25 156 | eight5oneights 157 | oneeighteight8nsnzphnmspkjxzdxhvhkgrl 158 | 9ninekzhkh2lfdseventwo 159 | 6two81fivethree 160 | sixblhfvjfnm1mfmnpvqqnqshthreepjlzvfour9 161 | 45spmbfdgdhljpdoneqclcqzccjndhqkthree6 162 | 34jhrxkrtxf 163 | 83mgdntfnhdj 164 | sixdtzllvpkppvlxhpkfive8sevenmdzpbnlcnfpcltg3 165 | 8krd 166 | threeqxcx8 167 | mtrssgmf85onesevenbtpmvptmjk5 168 | cgjlmfljxm98three4 169 | threehggmbtmzjceight11 170 | mxhhvvptm95two 171 | 8oneqcht3 172 | zjbfive6vvrr 173 | 1mbxsvmlveight7six645crtjb 174 | 6vptgkghfgzfourrsleightfive2five 175 | onejcqbtfivesixeighttwo8 176 | 2eight2kqmmbsbjvxtvjhponesixtwonesn 177 | 8pqeight 178 | 38mfhtq95ntvbmpthreexxg 179 | six2zhzb4dhf7threeseven 180 | jskqfbsct51seven8fourn 181 | jmlgbbsqtwosklzkz6five 182 | spngmplhchpqtfcksix1 183 | fiveqvsjlmlqmjzzhktkstwoeight3five 184 | threenbf6zhtwo95nine 185 | 9ltqfqqxdlv 186 | two6threeseven 187 | xbgzgqfvgone4fs 188 | fourfivedljcgdjrjzqmjbqqrctdvdnbjszszgpfour1 189 | 82foureighteightqfmxfkvvmr 190 | 991pfoursjb 191 | deightwo7sixbtxpv5qjfhkh3 192 | 482nineznmhcqhmrmbxztgkdfour9five 193 | four9threefiveeight2eightgcm 194 | 738 195 | 6tfive9sixtwofour 196 | two9fourone8 197 | 5gfnine996zgsnvjn 198 | 8hpgkrndtfourtwofive 199 | sbvxxctttjmkchhlbnine8seven 200 | l9 201 | hm6xdmone5jzhppnlcs 202 | five664 203 | gxthreemvrm5nine 204 | tjknbthreegjs8ckrrqmffhfour7 205 | two5bbcszdzvtpprsgkmteightfive 206 | plbtlpktcslgggpznine8sevenonejmsvg1 207 | 87two85seven 208 | 5fxdb5sevenseven9 209 | zgpbndt6one 210 | 7239pztpqfkf 211 | 768threetwocfzcvc4sx 212 | pbvc34sevenone47 213 | 68nine 214 | kqfxgjpnttwo84one 215 | eighttxk2psqlfzf 216 | sevenshrqgptpfj88fhxgmkkz 217 | 7three17one2 218 | pfmxggfx8lgvvln 219 | 39tsix7bkbfzqqx 220 | gtmvx3485mjtrdmsfxl9 221 | 7twosevenfour9seveneight65 222 | ninehscl531 223 | 82rseventkhksixj 224 | vzjtwo6ztbtjpllptmznhxcnljf 225 | xrjnql792 226 | 53twofourtnbfdhhr2xbsh 227 | twogrhgmvhkgcsj2two 228 | bxlgbpnvpkrphcp54pqjhndjfmf7 229 | hszmjxgjfcnine7 230 | sixsix2 231 | 688qmpnj1vsfiveeightmfrd 232 | one2sixmhmlmbghfeight3 233 | 5two4six1twosix 234 | 58459nine3fourseven 235 | 72nineonedtz88eight 236 | 4lgjq 237 | lvstjk3twoninefh 238 | eight161652xczvqcjhtvxgc 239 | 1seven5zrkchldlfxvzrqjgzg8bl 240 | ngfkczcrbrfvnsevenf4 241 | six9fiveseven21fourfour 242 | onecsix1 243 | 8fiverpnktj 244 | 5eightfourmjkhskllbrb83eightkrtn 245 | hqrkbrcccd5 246 | sixjlcncnfivexqhqdbkqfour8 247 | 72two 248 | one8sevenfivefour 249 | drgznqtjdfive3 250 | 2vgpfdhseveneight43thtnthree 251 | 2kfgbh17seven5 252 | bclqfgsdvfour9five 253 | seven48oneeightwon 254 | sixthhzzffourfivervssxzncxcthree9 255 | ninefive8 256 | 49sixnine73cvzgvnvvjqzmht 257 | sttbtlxgxfd69threeoneqbsmdsbpbfzpfpmf8 258 | zmxffive57 259 | dncfqshnpgmfmnpqfiveone4br2threeeight 260 | 8fivetworps 261 | two2twoeightnine6 262 | kttfsevenfrspkpsn8cscqgvthreetwo 263 | sphvhseven1mcone8 264 | qmtlxml2onetxsjdnprxlcd7jfncngfsv 265 | onetxjrzhnb1fxnlncstxthreelsixjlqhrnjhgt 266 | tdftgntv83433 267 | sfq4dvgbmrseven6nsmxfgzfh 268 | fourmvsgfvnrpp7one36hkfcmd 269 | 528dfbr4six9 270 | threesevenfiveddpmf9five1four 271 | 76ninehfivejseventhree 272 | 7ninelkkdgqzgksixlhdsmvvhvseven5 273 | hrjgpzlggnine4two7 274 | 2sixsixjnsfztffone7tb1 275 | 6pjxcpkpdh 276 | 84jsnmmllbzsseven 277 | 2three572ninekn1rjqg 278 | sseightwofivenineonesixsix3gqxcnztsveight 279 | nm18sxsrgmkqsfrrcqs 280 | xsvgrddftfmt1nnmzndpc 281 | lx5jlnbzmfeighteight 282 | fdfjhnrhdbpskcpgqjhbfjxsx7 283 | twokxnskxseventwo2xlmrtphhkvhznp 284 | two3mbfczdreightmxfr85 285 | rqtmx2qrhhqfmvonefour 286 | 59fourjsblcnbrzmbcgdzpnrqcptn 287 | 4ninexpjzqsjsznqtbclcplftnfour13six 288 | onekmj58kzvs8v 289 | five2nineseven 290 | 1two6jhdzt 291 | 2n 292 | tlsbhsr1lhnjhbthz3hkgrlglzsix8l 293 | sevensevenngkc7 294 | 4rxnlbqs 295 | jlsg8ftfpmmlthk3fourzqmrcrx 296 | twosixtwo94 297 | 825tpltn1ssszdsdklbrjn9qtz 298 | seven96seventllvlfxddqjvtft58six 299 | seven9ndsdnone 300 | rrdmxl1 301 | fjhlhhmmsklmfhrrjhvgblgqqhtvhfpzlgshcgvh445 302 | 6threetrsp75twoddj5 303 | gslbmxjn9twofivefourkbvdcpxrz4fivejbzhxjk 304 | hp6vplls1pvhscqflc 305 | one91oneeight9ninesixtwo 306 | vxntwofour1 307 | fivexbslqmnsixq8 308 | 8eight8two2 309 | 524 310 | 8five8rlkbjdsixfbqznnfive 311 | threeseven2fourkkmhgmt 312 | sbsr2nine52seven6 313 | hxqqhcxzfour2tpbkkzpndpkthreefourfour 314 | eightnbtthbztdtdv87oneonetwo 315 | eightninesevennqdx5 316 | ptmpmmh6 317 | 5svmgf1 318 | 2mhlmtbfive 319 | sixfour883 320 | x4eight239fivesl 321 | kqjzgkfs4txmfmn 322 | twonine6hjfzkdk 323 | cntncrvfour4mnd 324 | fourhnnsksgkskq11two4 325 | eightdhnine25 326 | two7lhbqh 327 | jbjgqt5threefour44threegcn 328 | 37eightpkhjshdg 329 | 1seven9pqmnsix 330 | 361rqvcqhv5zqzshvrffjqp4 331 | lbptzzf2ninezninesix7 332 | xvqgxhhn4694vjfdmnnine 333 | rhqjjxbn68 334 | zdoneightone3tldkfzzpbqblm12three 335 | sixnine7vss8fflxfxvvj 336 | kmpsffxpsxjbdkphpfour8cseven 337 | 5hhdbthreefivepfmonesix 338 | 7six13gmqvfcxrbsix 339 | twoxtqbsbsxtdjcdzqfourrrtgs86 340 | 52zdbph3kdtmpl 341 | 959threethree 342 | bckxnxxvmhbz923fourthree 343 | seven2lsjr 344 | xvspjhcvpnine8sevenqjvzmjbzseven1zone 345 | twogxgz2onefive 346 | 9qmstrkqpgqzkxbbprbsixjk3sixsevenone 347 | 4vzrjdvbkmlhtwo6mdkhsixfour 348 | oneone2eight9zszpvnfgn3one 349 | httbg6nztnlpgdgf 350 | qlxrnfclphthree5zbzsrszbc6 351 | ctcvnkckxtgsg1ninefivecrpnqmngqvnhmqcvn 352 | 9sevenfivefour 353 | 6pkvvone3 354 | 6nine2sixeightthree4 355 | 9qfivedrpfmxfbskhfstwofivergqcg 356 | 955mztjrdmlstwo5onedcrzz 357 | sevenrxbnlfpm6twozg7 358 | four1oneseven34three3 359 | ninerhc5qninefivebndtqdjrd25 360 | lsbx5bhlrjfdrmblnkl41576 361 | dvzbqqbd4615fourbjsmpvhllhjpzc 362 | 657 363 | 4ldkzjvdjfone 364 | nine49seven 365 | 4kx2rnmpjnheighthjkxpdstb557 366 | threeeight34three59 367 | twofourrv48fivetwosevenddcdm 368 | gkpzqjk89 369 | 341 370 | two5pnbbmp 371 | nine3btkkdn6 372 | 339 373 | 5gxcktphmzxjdtsb8 374 | 8dhfzjf832 375 | bqlv7klbrbsfcbdhpcb1eightone 376 | fourcpl5mnbtzmrgdjhfl 377 | 22hfmg1 378 | fiveqxtkfivethreesix5mzhj 379 | qfmfvbks1three3foureight1 380 | twoseven8ntkbkjmtxrb33 381 | 5ninensvcbfb 382 | nine2839kffmnbgvpzflmbvfpg 383 | 34six2fivebdvzlbdqkl 384 | 7three8five 385 | ndfrcqjrn3foureightfour 386 | one8pfpnpqxt49fourcspbbhlpszkxd 387 | qrmxsvjsnv2szlxhfour 388 | mpjninesixsixmngjcrphthreeseven6two 389 | vmponeightfour5 390 | 776 391 | 22twov7354one 392 | ninexffxsqrfourcsvhgj8eightthree 393 | nghjjvxldbznlqdeight96vhhgslrddvfmc6 394 | 3sixbjfvtgqp4 395 | rrqlrfksk9zpvmfqqsgdonesixseven 396 | six1fourqhvggsfdzfckntmfbrhthree 397 | one47onesmdhrtjhjk 398 | seventwoptwo7gtfzvgknbone8 399 | foureighttwo2nnnxljzt2seven 400 | nine66threemshnrl 401 | 9tbtkz98lhlprtwonevn 402 | two6two9867 403 | 8foureightvflcsxxblgzcjmdkllblvt1 404 | fourzlcneight5 405 | tltmpnhmrbhnntmjpfkfourtnxtmtqnhrsone9 406 | 838lqcmbqqrdgsix 407 | sixthreeeight9grr5nine8 408 | oneeight4six68 409 | rppnht6gdrztq14five 410 | 4xvgv72threev 411 | fournine2onenine2two 412 | 9dhksjxmct23ninempcqhroneeight3 413 | eightvhgtlfft4threethreecgnpzjf 414 | sfslpsixthreeeightcqnlpsplvtseven7nine2 415 | drr2 416 | twossevenhtffztninehkgzvnmgrn7one 417 | three4fourthree6eightthree 418 | eightpkgknqhfour6 419 | 28onethree25 420 | 1sevennine6vkrqnxct 421 | 786ptjbkbf1 422 | ninetjvnxqkphrltpeightthree514four 423 | 376mgfkztqseven 424 | 3threeqqvqxtvsnjvdkvpnvhk 425 | 8rqxcrxmkxczzfkqkffvzcstwosrtmfnzmbf5eighttwo 426 | two93 427 | 854 428 | 29fourhnmjvlseightnvkfbn61 429 | 6zslckzztm3eight 430 | sixfive1 431 | xzmlzvhcfk6seven8fiveeightpxbgkcl 432 | seven33bdrzdtwotvseven 433 | seven7oneeightthree 434 | j6sevenzjbf5eighttwo 435 | onegjeighteightttmknmgrmx1oneqxxfgone 436 | fljrjlk4sixone7five 437 | sevenbvqxrx27five9eight 438 | bhdfblngngtkq4 439 | 3sevenfivekpgnine9 440 | nineonelqppbgtgsnine6five 441 | fdmqs1two3twothree7qdhbmkqxf 442 | 176pfmhfrgvsseveneight 443 | one974fourdhvbbvfive8 444 | crlfbone3sevencjcsix 445 | rdgone8lrkhggmkttlmhvvxhvxpgkkjfllq1 446 | 7xtlstglgnqoneeightfive 447 | onerjcplltnd1seven 448 | gsqtjxhd8nndrkjxgmhzdmflslthreetwotwo 449 | jrspjndsvk1seven4hx 450 | 5lks 451 | one935onecmfrqxjxqq 452 | 9npxbtsfives2 453 | 9one7bghdxtv1 454 | 1khgbtlhxnsevensznknbbdrvgfgpfour 455 | 2sixrzlcqcrmgsxsxv 456 | sixthreezqbrlnngnpbbzp6 457 | eighteightrkjphnngh4lhrrdfhbx 458 | cqbsglsixfiveonetwonvzclvsdgnmmkmchrml9 459 | 7gsqfourpht3two 460 | sixsevenfoursixnine2ninemrgnlmqd9 461 | 9eight2eightsixfkzlmrzqgt 462 | onethreeseven4 463 | 6seveneight 464 | 7rq 465 | jmlbxtsxj265qssfhtlgx9 466 | three22fiveeightfdpfthree 467 | fiveninerflxggpvflnine5dvgcl 468 | 2q2twolxksmntbxrbt6 469 | c6mvlmhgbztpjhlsm2bhgnxtb65 470 | 4six3six4twoonecchglvpf 471 | 1eightvvhtdtwofltvfx 472 | bfnfhrlznxzszzdfoursljone922five 473 | g9 474 | hczxfzlhjntwo7ninesix35 475 | 8ddh3 476 | 3pjxlfour3 477 | 84tcc2oneightdz 478 | two96 479 | 8mrxsdltwo41onesix6 480 | four1cjqeightvpghbd9qtdkjfzmmjcslv 481 | oneeight3svkfzqh38threetqsxqz 482 | four1dfhhhnhjcsdzhqdrthreethreeqxmjsdnv 483 | 99eightsixone3three 484 | 995432 485 | onez6five 486 | 6sixtwo 487 | xhsmjfkgpninesevenfive2onepnfivefive 488 | 3xvfdxnfzkvmnfvvrqjqzkkq6vrxdeight 489 | fourfiveseven386 490 | 272pcvttjzdzzonegtsxqntflkppfive 491 | tone4mlskzchk9xgcht 492 | xqrkhzhghptwo18 493 | two25 494 | seveneight9 495 | 86three6bfmdkslfmxnbqrzjltwo7 496 | 6vclgmphzt7twovmvvshtslgkng6 497 | twofourfive2nine34rmljd 498 | two2cjjhrtxtvxntdzxstmcsixrfnzfsdmsninejkl 499 | 5ninenine9two6 500 | threegsmgz4three86seven 501 | five8tkdqvkmjqhdrnv9 502 | gsjhgthfqpcglnbpgfk83three2vnnhlr 503 | 1three8lxqzdcjsix46oneightjhb 504 | rhlbq9txlkxvninesl 505 | six4zldvvgjhzhszrqcdhrm9 506 | hlsqmddjmeightlfcrqkkbnssnxthree6four5 507 | gps5eighttwo93 508 | 6four3eighthvhlknbxdpseven4 509 | threespxdrjqsevenseven75pxxmphbqfhvvdtp 510 | four8nhlsqdlgnone2seven 511 | vjcxsixthree2hspmmpqnhrddseven 512 | 1tmrz8xfgtvtqmcrninedbpt739 513 | knjtcfive1eightknnbxgmsix 514 | qbj9 515 | fivefsrtdfcddfourtwojxdlmxczkljltbrct8 516 | jnggmc4fourbtblkhzfnnplggfive 517 | 96seven641 518 | pvvqsmtqf3fourdgqrxrtxlslsone59five 519 | five567 520 | two6nmhbffour38 521 | rhppzxndqrhmrxlvhn58fnseven 522 | ctgjbnine9ninebkbone4nine 523 | threeone2sixpldcvhfpfourz3 524 | jxxgfvzglzrzpfk7stplphbdone8eight1 525 | 3zvpstzgnz4gnfzdhnvvl 526 | eightthree88sixtwosixbrr 527 | seveneightqjncs4vdqllkvmfr 528 | 1five653sixonethree 529 | ninehkdxcqrhszdxbgvjjkcvfmzzbq5seventhree 530 | bttqsrsz6four5tdjkmrkcqb 531 | 23one35three 532 | nine4five 533 | 8jhvnq1foureightsixctfxnine 534 | mscdbpkzfptqvpxd7 535 | 7bmfvmtmjm 536 | five66btxzbjmxhqljqclkponeqxcq 537 | 5jpsnjbz 538 | sptwone4ffcqgfvzmsevensix 539 | 27sevenqxccm 540 | bpttwonine1vrkhxkxlvd 541 | six6rpqxbhdlgm4 542 | 3threeppmfsix1one 543 | dnhbjkmhbcbzkcncmjcrmkrhmhtwo2qxblfsgtwo 544 | mpztn5 545 | 8hkdnzqqs52 546 | szfsgbgxmlthreefourtwo43six1 547 | two5lb 548 | mv1three3d 549 | gfqn45 550 | 87brnjzx 551 | zzfszvk6five 552 | 3shknsmbksrxtkqdls6fivegfive 553 | 5xtgdxhflbnrq 554 | onelbrxfour6 555 | one3six 556 | 95vqkfive 557 | lnsl6sevengxlbqqrlpdxmhjbnc 558 | vkglhnqxbffll6pseveneightninelgkqv 559 | sevendsix3ghjrlkhlkqztkksvvsrqvhfthree 560 | ssfive8vmfdbfivend1xjpnjfbxxtwo 561 | 8eighttwodxpjeightvzqzpltldclmbkj 562 | 817rmdzceight3seven 563 | 49ftonethree9 564 | eighttwo5 565 | 9pdzqxgpone11ggnksvvcgg9seven 566 | jjljrfmdxg1fivetwo2kglgxjbjvznrb7rklzlhnpbn 567 | srkrbfseighttwo8 568 | dsjxggrzsnnine1one1 569 | 798xgsix9two 570 | 956six 571 | 5pnprseventhree 572 | 46cpjgjxs 573 | 7kpxxmmbrvm8ptwoneqht 574 | 3lfghbcksg 575 | 72cdcznmtsg2fiveone 576 | sevendvkzjsmsb8vmcdrxgvjv8fivenineeight 577 | 3xvdjgnz17 578 | zkss7nztwo97oneightnj 579 | ctgseven5nineccmbmdkgxmeight6four 580 | five3mfkrhbzvf 581 | 5one55vjsgpszbz 582 | zjbzghrbjh8fourrlpcfrxc 583 | sevengndftmqsxfjdzkjzvtwohzx83 584 | 7xpqmfninesevenfdeight6fivexqfj 585 | hfpbkh325xg 586 | ninefivekcsxrvjvvc7twogqxhddnine 587 | ssvfgvmmv8seven799bnmn 588 | fournhvbhhx9 589 | sixfour8hbzdbkmzqj6three1 590 | fivemxhmgvxfpsxm4 591 | sevenseven1srh7 592 | eight4pnsnh 593 | 4gbskpjhlptkflkjgzxlxrfskxxlrxvf 594 | xmj7cngxjrnzcstrbrjsixfmqxnqnljqthreexsnfptpvd 595 | qceightcplznbthree6 596 | ninebmqthreesixxfl3one4 597 | fivelb8four2one 598 | 9one5jpfourfour37 599 | sevenfourtwo6zknqzv 600 | twovbcltvfcv1ninechcjrc 601 | seventwo1five8mdxhv3three 602 | rqtgxztqntznineghqqkhfzvhmf1 603 | rloneightseven88 604 | 7five81one7 605 | ninepgnzpfktsslpmbonej6d 606 | ktwoseven78jhsdkkbptptwop 607 | six7nineoneninenine 608 | jtcqdt1 609 | 8fivetcqdglbnbxone 610 | 92sdvljhqdt6zgmgsznfchjnpn1 611 | threefour73threefive1 612 | jbhqh8phjqmm 613 | 4jlpncphmjjtthreethreesixpmpttpd 614 | tzxpfds4two4one7sevenjbblnlsl 615 | fxthhmseven4eighttwo 616 | 2csbxskpqzqkktsv2 617 | xjfjmvtkjfoursevenone9xbrl7 618 | 3ninekgg 619 | 8fkmzjqdntzone43fivethree2 620 | 4nine2blkhpjgpnone 621 | 3six66foursix 622 | 9one1 623 | 4mz 624 | 2fourfourone 625 | 33six2fourfoursix 626 | 8j 627 | 59trgvlblqbk35gjeightnine 628 | fdtvfddzfourfivepnrvpr2two3 629 | ctninetdv26seven 630 | crjtlxgcbgfr8sevensix 631 | fourfourhckrdsqkq8eight 632 | two24kdqkzgffpxkjngj8657 633 | foursdss33seven9zcl 634 | bhl2clcfsqnhpsixjxonefour5 635 | 545vksixeight 636 | three35five7two 637 | sevenmkddhdvqmsthree2five 638 | 7zmxsix2ckskqcglhtgthree59 639 | xvsthree9 640 | 22q 641 | ninetwo3threenineeight8dzfrf4 642 | cqnbzgtjthreed2 643 | 76jkpnonepbvhcdpfd8 644 | sevensevenmjrzvbkkknkfbq2seven5vms5 645 | threedeight8znlvhlzpbzvhvxxmgdt 646 | cndxthxtvztwonlcqcshvnclzvxmsdrtn1 647 | hcz8vnkrrkmgpbxk2nine 648 | 5h5oneeight3 649 | 5m1five99six62 650 | l1eighttwofour 651 | 2ccxhrlhjbr 652 | tfpzvqj4gs9 653 | 6twosixfivenine1 654 | 8zjsixqnrzlfxdhm8fvpfnnjxhhpggjtjnsix 655 | jzmgdcptone3hqbhthree 656 | jvqmsixone2hlqseven7 657 | f9eightqkdpqlctcmmzx 658 | 98fivethreexgl9 659 | 4bvztrtwo 660 | fivetnrqt8twokfxrsftsnfour 661 | onetwo33threenvng 662 | sixvznvnt3scseveneight81qjdbj 663 | threenine1 664 | 47rjklmqqpnthreeninehcslqslrbjtwoeight 665 | 8one1twotlsgf 666 | qpzvxrb242sevenrlssthreethreem 667 | eightthreethreeeightxxrz3gjmccv 668 | 862seventhree5one 669 | hjjx3threegsmggrfb 670 | twonc4eightfour43r 671 | 7cblplgthnineone1 672 | fxzjsnfn2xrzfhrsq 673 | one4xbvtvtxvqqmgnm9jdjxbmdjlldrqtzhrsxqseven 674 | lmgtwogqghh9five3seventwott 675 | oneeight2b 676 | 4five2525fivembnftdmkxzmq 677 | 3m4ninefoureight6ttxrcdgnine 678 | threeeighthcnxpqfgsvv12rkd 679 | gntcxfth588 680 | sclktwofivesnxkfq7twoxdvlxgvtzjtlgfspzk 681 | rg7 682 | 3vbrgrsevenzgncpj55nine6 683 | seventhreefiveshlrnfnqjvd21tldlrkjmtwo 684 | 8scjnkfpklljchzszvvfourjpvmvmgr6 685 | 8fivepdlqzrsllkqkqnine9four1lqgjz 686 | qmtwone7six2one5 687 | xrvhsvkvjb2nineleightwob 688 | ninefourhkdzxrgxxhfmsninedlddz5nine 689 | 1sevenhslkkjfxz 690 | seven5six94ninemjvv 691 | nine4three 692 | onesktp3szmp 693 | cqconetwoninek4sevensix 694 | nine892fouronegxhscsn 695 | 4mvzntcldzjxbmrrtzsheighteightbhtknp9 696 | 4nineoneightfl 697 | 17kdhhcnvnnq 698 | ckmqgt16gs 699 | threefivefour9 700 | 3twofoursbzpbdqlj5 701 | qdxzfxdfnsgj3twofour8fivefour 702 | 4xninesixzxkbqsgvpf 703 | fourqthree1nine 704 | one6fivenine2txbfgfkxzfmshmzhv4eight 705 | 9lhdxrmvfive 706 | xktdxtwo71 707 | 225two 708 | two3csjhrszsfdkqmxcc3ctlhlbk4nine 709 | bfspnrjxsgoneftk1665 710 | 4fivefivecsbqnljgrk 711 | 8xmkhgonefivethreethreenine4zbh 712 | nineone3twofour 713 | pflpcxx7two1jkzqmthreefive 714 | ksnjdtfhrnvcp2six 715 | sixrfsrqfbdvn1c 716 | sixlfmqfsnnnzhmqbngct2 717 | x9x7sevenqjn 718 | eightninethreeqttkfm1seven 719 | 59zx923six 720 | 5rnrdbmpddjldqjnrxsdsrgpfive8 721 | one38432spgsfkjzeightxxk 722 | 95csptxbnmdfourmzqccclqjzntftgmskvf9 723 | tlbbjckfnine6mssscphp4rzndb5three 724 | 4sixnineeightztjdssbflnine 725 | dzdftgcnvvrx669 726 | 6six7threeh 727 | eight7onelsrkgtkgdkgsntwosixonedn 728 | 4fourfourninenine1 729 | rtwonegfzmbhjbmbsvf3seven1 730 | 3czkzzzvqbt5rmdskr 731 | 9bmponetwo 732 | ltvcjgvkqqmfivethreeeight1jls8 733 | 14oneeight3qtkgbpsnseveneight2 734 | dmrgm4 735 | twodlxpltlcxxks5 736 | tdxfeight3pqdsz35 737 | 6hvfbrqccktfqhnnineone7btwovmgssfts 738 | 66threedrsbtwo 739 | prbsfivetwo21ccqb5qhxz 740 | nineninebkzq829fzkd5 741 | pddtlrsj7twonine5two61seven 742 | threeeightctnkhjnqm5sevenvdjqsjpknmmslmdb 743 | 76nqxdvzrninefszr31 744 | 3gvgclgxbvs5eight68sixnmppfhcqhbmzq 745 | 1eightrkninefive9four 746 | 3hfour375three 747 | eightthree54sixninenggbmckqk 748 | zbtqlmfqmbdxllqpffeight9 749 | 1threehxmlj1czzlphp 750 | 4four7stfrr7 751 | four6htkfsfx3qlk41seven 752 | qsixndconehconenine12 753 | sqvvptnzbqdmgjlmctqzhlldmzthreefour8 754 | f6ssgkone 755 | twofive8kqs 756 | foursevenxj6two 757 | rqlqljzzdrzq4 758 | one3ninefiveonesixpgjsnrvnine 759 | jktfqdxpfive3bhhczvnfive 760 | fivedtcgstrzg7five7seveneight48 761 | 7sevendnqnine54fivecvhzf1 762 | 9fivebseven 763 | nine9mjbjmmfkpxdjhch87hpzx 764 | fivejdqrrx71sixbone6v 765 | 2qkkng5 766 | fiveksvzs3threenine 767 | prtllbkjhxjhg4 768 | fctmfcrmqgq78rckrfq99d 769 | 9seventnsrsbxftwothreefgpzznbjcxh 770 | three34two 771 | ggvr32sbmseven4gjfhqstzq 772 | threefour4three 773 | two6sevenpzdvjdlninesevenfour 774 | pgneight692vqlnhmndjvlj 775 | six8sixqclbkscndtsfczqxhzt9bsf 776 | fivefourdlrjnbvbnine3six72five 777 | 4fivefiveglchzczdstone 778 | six4two 779 | 7threefoureighteight 780 | ngjpztzcshbksbzlbdnqnine4gbdsbthreetwo2 781 | 39sevenseven 782 | sxcxnqrskgzkzmrkkdbxjthone3 783 | 1lf9onebg 784 | 9lgfxnfffh9qbdxdl65fqlsjgdljrcn 785 | 37three1twofourfive 786 | 92onegdcczrfrkztxttftv 787 | fxzkfnrmh7fiveggfour 788 | 14fivetwoflrr59 789 | 7sixtzfpxrfrtnqxvkcgtc 790 | drmjeight1sixthreeeightrxqjknmql6vzz 791 | bsmbtp2 792 | ninetworfour7vgtvfvbv 793 | ninethreesccxmtmbnnine2eight1five 794 | 47twothreethreeonethree7 795 | ftqjtwo7dbcnfdprnn335 796 | d5three5b 797 | 5eightfivevnf4one 798 | 1dgtwojfxnqpc 799 | sixsixone7cpxpnzgeightbvx 800 | 33 801 | 7sixtwo4zjb 802 | pzfxv57one9fourfour 803 | 9two8 804 | 5nineone1 805 | one6five9twotwo2vtnqjtpxxr 806 | 6threehhrmtfsgld 807 | lbdjsslmqpspxrxqtp186rzjfour 808 | six4qd32dczd3 809 | six5sevensix6dhlgzlfvgkthree4 810 | rmgdbsvqqnt7five 811 | 8slpfjnhtggzpqr7q8three3 812 | fivecmsjjhxhh6rmvsnlfive 813 | 2onejrnnkpkf7sixsixthreetqkfbk 814 | ltwonejvqkzsltnine5fivemftvx 815 | fourtwolkxrtzdsninenine5pznzrqbcmnph 816 | 3rzkfvqfnine 817 | 6xbninefourszjltwo6 818 | 59qkf96twofour 819 | fivecp37 820 | bcpmljn5 821 | 7stthfdseven2threefourcrbxjjfnzbfqsfmqjlts1 822 | cpvsczrlrgnfpqbfbgh415five 823 | seventhree6 824 | tworqbfj7114clslxks9 825 | six5eightjtnq 826 | 7six9llnsseventfmflxsjkdgq 827 | six8tznfvz3 828 | fourpnmbqdbj23 829 | 2ninexltrcbkjlb 830 | 665fourptmcdj 831 | seven4mkvn1tkthree8s 832 | eight84one 833 | rhskrpddrmbgg7eight 834 | qgbtqls7fd63xngfvcgdp8kkffgxdcs 835 | 9seventhree 836 | lslprchqthree13fourkdfsrtfrthree2 837 | 246eight 838 | 5ldnrqhhqmvtwojhtjhflzczsb9kklbkldvc 839 | 36fivebgn3vzgvjffckfour 840 | vbxqnvhvmsix9lthree6zvmr8 841 | eighttwo23 842 | flqbvc23 843 | loneightsix9two 844 | xkzvpttgfourfive6rnngs 845 | threeseven6one5 846 | sixthree5rgklgfxllqzk4onetwo 847 | one15dhhtcsx 848 | zdmhgtnsjs22fjfourqzdsvcbgq 849 | 4four5 850 | hfjrsqjvtjkseven4kqcqbmbseven 851 | 241lgrtbsh 852 | fiveptwo9sevenfpxpbfdoneightzj 853 | 9eight923xnxgndjfg 854 | two8fivenine9cqcqqssbfc 855 | fivetwosevenlgrvqvtsv5tcmsvbmggvfqqg7 856 | 5mgkmn6ninetwo 857 | mzsncqkbtq45r 858 | fivefivegxzjvnxcbq8ptrzpjm5three 859 | 8ngzppeight646seven3oneightf 860 | sevenvcsix8 861 | vxkmqgpsixgs2 862 | 9jv9 863 | 17jzmvgzc 864 | 6dz9 865 | sevenzzvone86twothreeonesktlhbks 866 | three57vmlrfhcqkvlttzhcbtgqxgtbxb 867 | fiveeighteighttwotwotdtfncfjn8pkxdvkfgr 868 | 8k5dsrxlvtmvdsixtwo 869 | nine2fivernnckm 870 | fpngdckp48onepbslnjdm2zbthxqp 871 | nhrl8two 872 | eightczdrdrxninesdqlqhhvq7twoz 873 | sevenssmdflds6 874 | 8sglqfive7p6threeqrdkmg 875 | 4brkbn 876 | t4onepvf9three 877 | mdfnjqjdl2lsb2btsj 878 | tthreeljckhjqxbcjvmvx27jrffive 879 | fiveqldglnp2six9vqvdcqxbdznghqcrnbxm99 880 | 9pmkfmr6sevenlfjbvxqdbstwonine 881 | threeninezmhc8three 882 | one4nine4vc 883 | 8nqtgvnvcttpsrpsfive 884 | pjjkmpfjpjzsbhzrgrkk96snqbtkkkd 885 | 6four58fourtworg 886 | 4fivekrjgx4 887 | mqrzmhhvlvknzdknine9 888 | one8seven2qd5 889 | pjhkthxm4 890 | sixjmbljdchjsrs3bvvnzqcqmjcm3eightwoc 891 | 8ninekrb5vxhbhdtdfd7 892 | 7eightvlrsklsbpc3 893 | 2onethree1 894 | 4nine6qvfive2dlhvfour1 895 | threedkvnvvsmlthree149 896 | szseight88fourlfcvbzmone1dnzbnkq 897 | onekxnsfour7 898 | onefivefivefive6rmpjhdvk2 899 | two75 900 | xrxzfmnqrvrtflqscnhlbh14vf 901 | hsplmrdxtknine7tqtlk 902 | sncgfpvz43lvjmvrpv 903 | rdhoneightdxrvxhnthsevenfour72dxcdbmpbfd 904 | six2oneonethree1xdszcmstmq 905 | seven1one 906 | 12fourbtnxmsrvbnn6 907 | qfive7twomcmcsgsseven9 908 | five1nine7 909 | qcntzlp8one 910 | qgpeightwosix8lbclbpknfive4ksqvptntmonevlrtrcs 911 | nxmff91hzscmcthreesh 912 | 6three16 913 | hrlgqhzhqone14fivenine 914 | fournrvxrxsmvsskdnbzs5zgmfh1m 915 | four67one8drnprkbgt 916 | 81brchsdqdlk5fourseven2three 917 | ninefoureightfjtmvsnine9onefive 918 | two7rnl6three9 919 | eightseven2threethreenineqtwonezkq 920 | eightcfkglfmzqjgrns99seven 921 | dbzvbkslvthreefiveeight141gcklzxrzms9 922 | 4frfvf6fourgnsm 923 | 7hcgjbbpbl9qbzzhfq 924 | mnfllkcqgkninefive9 925 | 4qdld5hqgrthreeeight2 926 | xlnnine6lksthree 927 | lkvcnntznk33three4nine 928 | 8five2twonem 929 | 695mzfnhtlbhpvn1dfour4 930 | 47seven811tzhqrrshdm 931 | vgoneightnsr3fivethreetwornvbz 932 | gc2 933 | 3sevenxvmzbpknnqninetwofourtwosbpmqk 934 | 4seven8 935 | 2fivegk47gsqtvdms 936 | 1jqgxbmgs4zxkrtvvtsjf1nfsdgtqrmthreeeight 937 | vbvjdlnfiveninefive162nine 938 | jqqsfqbfq2clfmfxz 939 | 2hmn1v2twofour16 940 | phchfbxz3one 941 | zdcqgg34vqkhlbkc96six7 942 | 5eightbghcktjjninermkpmbpk 943 | 4zctvpqqfxqdpf 944 | six5onebljkhvlzfour3vf7 945 | three7sevenspczxeight3 946 | eightsjxdbgcjllvpxn5ninehrhlp 947 | r4 948 | vtkqxmmdfkmbxbvgr633 949 | nrtfbqdthb1974jsdfive7jc 950 | twothreenineeight3 951 | seven9c9 952 | l4rmngrjjl8phsftfrtwoninethree 953 | 8hptpqbfltv6twovcz5twothreethree 954 | hncsxnxrbx174dbsddg9n 955 | 7fpvztb 956 | eightnineq5kkd1seven 957 | gbj8rvvqjkbp 958 | sevenninecjrxhfsevenfivembxm1nkjrdtrllqrglrrxxj 959 | 21eightfive84mkdnzone 960 | 3rqjlbfzjninesncjnxxqnine9 961 | cvtwone2k1zmp65 962 | 1v 963 | one7eighteightsixqkfsm 964 | 44jkrsmcthreekktxlnnzjdslhfsmzl 965 | dmhxlbsixh35 966 | four8ninetwofour864 967 | 5threezmcq 968 | 6ninefive7 969 | 4nine9twooneeightwoz 970 | 5klvpcfxpkhdhx717 971 | 6stgznine4vhnsnhts9 972 | 9threeone98seven1vnnvgxslf 973 | sixeighteightztpdhvt2zqjstmzmtzgsfthreezzhhdr 974 | twodtbkqsjgtwohfnsqcrmpjfourhkpnsfdkfive6four 975 | ggrxkrdzmthree3 976 | sixlflcmmjrs5fivenine488 977 | four94hmhvlczssonedvgchseven6 978 | ssoneightfbfctjqv43psixsevenslqsfpkb1 979 | bdpnkb9eightnvtwojxbztssqfmninethree 980 | cpcnkvdbrqrxtfnmzbqgffivesix91fivehgrv 981 | five5495eight2 982 | 7foursix93seventwonbhtmfrbqgq 983 | tpqhxqqxpcnmlhqhkz123ninefive 984 | knqxmrrmninegr4 985 | 14qhlbkthreellvnqpfpbb 986 | 7eightcrlb6eightthree7 987 | twom3 988 | gtzdljfdzpdg4zbnzbnxmpcpfsevennine3 989 | svfjvnninefourpqsdmjcfhvccnjkpf8 990 | dzmoneighttwovk5tvpnmxfive 991 | 88msthvt4vbmnbrzjone 992 | nbgcs8nine 993 | 4three53pczsx1sevenmzmtrzz 994 | four24qphdrxfsf 995 | gdgj3f 996 | hthphptmmtwo7sixsevenoneightls 997 | qxbhjmmqsixfkfn36three6 998 | eightmkmdtvkctkvptsbckzpnkhpskdmp3 999 | six2twobgzsfsptlqnine42xtmdprjqc 1000 | pxreightwo7 -------------------------------------------------------------------------------- /day-02/1.py: -------------------------------------------------------------------------------- 1 | with open(0) as f: 2 | lines = f.readlines() 3 | total = 0 4 | impossible = [] 5 | 6 | for idx, line in enumerate(lines): 7 | name, c = line.strip().split(":") 8 | right = c.split(";") 9 | game = name.split(" ")[-1] 10 | total += idx + 1 11 | 12 | for i in right: 13 | color_dict = { 14 | "red": 0, 15 | "blue": 0, 16 | "green": 0, 17 | } 18 | 19 | for j in i.split(","): 20 | count, color = j.strip().split(" ") 21 | color_dict[color] = int(count) 22 | 23 | if (color_dict["red"] > 12 or color_dict["green"] > 13 or color_dict["blue"] > 14): 24 | impossible.append(idx + 1) 25 | 26 | print(total - sum(set(impossible))) -------------------------------------------------------------------------------- /day-02/2.py: -------------------------------------------------------------------------------- 1 | with open(0) as f: 2 | lines = f.readlines() 3 | total = 0 4 | 5 | for line in lines: 6 | name, c = line.strip().split(":") 7 | right = c.split(";") 8 | game = name.split(" ")[-1] 9 | min_dict = { 10 | "red": 0, 11 | "blue": 0, 12 | "green": 0, 13 | } 14 | 15 | for i in right: 16 | color_dict = { 17 | "red": 0, 18 | "blue": 0, 19 | "green": 0, 20 | } 21 | 22 | for j in i.split(","): 23 | count, color = j.strip().split(" ") 24 | color_dict[color] = int(count) 25 | 26 | for k in color_dict: 27 | min_dict[k] = max(min_dict[k], color_dict[k]) 28 | 29 | total += min_dict["red"] * min_dict["blue"] * min_dict["green"] 30 | 31 | print(total) -------------------------------------------------------------------------------- /day-02/in.txt: -------------------------------------------------------------------------------- 1 | Game 1: 4 blue, 7 red, 5 green; 3 blue, 4 red, 16 green; 3 red, 11 green 2 | Game 2: 20 blue, 8 red, 1 green; 1 blue, 2 green, 8 red; 9 red, 4 green, 18 blue; 2 green, 7 red, 2 blue; 10 blue, 2 red, 5 green 3 | Game 3: 2 red, 5 green, 1 blue; 3 blue, 5 green; 8 blue, 13 green, 2 red; 9 green, 3 blue; 12 green, 13 blue; 3 green, 3 blue, 1 red 4 | Game 4: 1 red, 6 green, 4 blue; 3 green, 1 blue, 1 red; 7 blue, 1 red, 2 green 5 | Game 5: 2 green, 9 blue, 1 red; 3 green, 1 blue, 3 red; 1 red, 4 blue, 9 green 6 | Game 6: 2 blue, 5 red, 7 green; 5 blue, 8 red, 3 green; 2 red, 9 blue, 2 green 7 | Game 7: 7 green, 7 blue, 2 red; 2 red, 7 green, 16 blue; 17 blue, 3 green, 3 red; 2 blue, 5 green, 3 red 8 | Game 8: 4 red, 3 green; 9 green, 2 red, 2 blue; 1 red, 3 blue, 6 green 9 | Game 9: 5 red, 3 green, 13 blue; 11 red, 15 blue, 1 green; 7 red, 2 blue 10 | Game 10: 15 red, 3 green; 7 green, 4 blue, 11 red; 13 red, 13 blue; 2 blue, 5 green, 8 red 11 | Game 11: 7 red, 3 green; 7 blue, 16 red, 4 green; 6 green, 6 blue, 12 red; 11 red, 4 green, 4 blue; 10 red, 6 blue, 2 green; 3 green, 7 red, 6 blue 12 | Game 12: 1 blue, 2 red; 2 green, 15 blue; 6 green, 5 blue; 6 blue, 4 green; 5 blue, 3 green; 3 red, 3 blue, 10 green 13 | Game 13: 10 red, 4 green; 9 red, 2 blue, 3 green; 6 red, 7 green, 1 blue; 9 red, 7 green, 1 blue; 3 blue; 3 blue, 3 red, 8 green 14 | Game 14: 12 blue, 3 red, 4 green; 3 green, 1 red; 6 green, 16 blue 15 | Game 15: 2 green, 3 red, 2 blue; 14 blue, 1 red, 17 green; 13 blue, 11 green, 10 red; 5 green, 7 red, 5 blue; 2 green, 3 blue, 6 red; 9 green, 2 blue, 5 red 16 | Game 16: 2 blue, 1 red; 1 red, 2 green, 3 blue; 4 green, 9 blue, 3 red; 1 green, 4 red, 8 blue; 7 blue, 11 red, 1 green 17 | Game 17: 9 green, 8 blue, 6 red; 8 red, 18 green, 1 blue; 18 red, 19 green, 1 blue 18 | Game 18: 1 green, 4 red, 5 blue; 10 green, 8 blue; 12 green, 10 blue 19 | Game 19: 3 red, 11 green, 12 blue; 16 green, 1 red, 20 blue; 9 green, 2 red, 14 blue; 5 blue, 2 green, 2 red; 20 blue, 3 red, 10 green; 4 green, 3 blue 20 | Game 20: 17 red, 3 blue, 9 green; 6 green, 1 red, 7 blue; 6 red, 2 blue; 1 blue, 4 green, 5 red; 6 green, 5 red; 10 blue, 11 green, 2 red 21 | Game 21: 9 red, 4 blue, 6 green; 14 red, 9 green; 1 red, 1 blue, 12 green 22 | Game 22: 5 green, 4 red; 1 green, 1 red, 2 blue; 5 red, 4 green, 4 blue; 2 green, 2 blue, 5 red; 8 green, 4 blue, 16 red; 15 red, 3 green 23 | Game 23: 5 green, 14 red; 6 blue, 2 green, 14 red; 4 blue, 8 red, 4 green; 4 blue, 9 red, 8 green; 9 blue, 3 green 24 | Game 24: 13 blue, 9 green, 13 red; 11 blue, 14 red, 10 green; 12 green, 5 blue, 14 red 25 | Game 25: 11 green, 1 blue; 12 red, 8 green, 5 blue; 1 blue, 8 green, 6 red 26 | Game 26: 4 blue, 1 green; 1 green, 5 red, 6 blue; 8 green, 5 blue, 6 red; 2 blue, 2 red, 8 green; 8 green, 2 red, 4 blue; 7 red, 2 blue, 7 green 27 | Game 27: 8 red, 1 blue, 8 green; 5 red, 2 green; 2 blue, 9 green, 9 red; 2 blue 28 | Game 28: 2 green, 1 blue; 2 green; 1 blue; 1 blue, 1 red; 1 blue; 1 green 29 | Game 29: 12 red, 8 green, 13 blue; 13 green, 15 red; 12 red, 18 green, 10 blue; 7 green, 20 red, 5 blue; 20 red, 7 green, 10 blue; 9 green, 13 blue 30 | Game 30: 5 red, 3 blue; 2 red; 2 green, 6 blue, 7 red; 5 red 31 | Game 31: 14 red, 7 blue, 2 green; 1 green, 11 red, 9 blue; 3 red, 2 green, 5 blue; 1 green, 9 blue, 8 red; 8 blue, 8 red, 1 green 32 | Game 32: 2 green, 6 blue, 2 red; 2 blue, 4 red; 1 green, 9 blue, 1 red; 3 red, 13 blue, 1 green 33 | Game 33: 6 green, 8 blue, 7 red; 3 blue, 1 green, 8 red; 6 red, 11 blue; 10 blue, 3 red, 7 green; 1 blue, 3 red, 6 green 34 | Game 34: 1 red, 1 blue, 8 green; 5 blue, 10 red, 11 green; 2 green, 10 red, 2 blue 35 | Game 35: 2 blue, 15 green; 3 red, 3 blue, 6 green; 13 green, 17 red, 3 blue; 18 green, 1 blue, 18 red; 16 green, 3 blue; 11 green, 15 red 36 | Game 36: 16 red, 4 green, 1 blue; 8 red, 2 blue, 5 green; 5 green, 2 blue, 9 red 37 | Game 37: 3 green, 7 blue; 8 blue, 5 red, 6 green; 5 blue, 1 red, 13 green 38 | Game 38: 6 green, 6 blue; 11 blue, 8 green, 1 red; 5 blue, 16 green 39 | Game 39: 2 red, 4 blue, 5 green; 1 red, 2 green, 8 blue; 16 green, 15 blue, 2 red; 6 green, 16 blue, 1 red; 16 green, 18 blue, 1 red 40 | Game 40: 3 green, 6 blue, 7 red; 1 blue, 17 red; 4 green, 6 red; 13 red 41 | Game 41: 6 red, 5 green, 6 blue; 4 green, 2 blue; 6 red, 1 blue, 4 green; 4 blue, 13 green; 3 blue, 2 red; 2 blue, 5 red, 3 green 42 | Game 42: 8 red, 5 blue; 15 blue, 13 red, 3 green; 6 red, 18 blue, 4 green 43 | Game 43: 5 red, 1 green, 1 blue; 2 red, 2 green, 3 blue; 4 blue, 3 red, 1 green 44 | Game 44: 6 blue, 12 green; 7 blue, 12 red, 11 green; 12 green, 2 blue, 13 red; 8 green, 8 blue, 12 red 45 | Game 45: 18 blue, 15 red, 8 green; 17 red, 3 blue; 1 green, 2 red, 15 blue 46 | Game 46: 3 blue, 2 green, 5 red; 11 blue, 2 green, 19 red; 3 green, 19 red, 13 blue 47 | Game 47: 9 green, 2 red; 7 red, 10 green; 2 blue, 9 green, 1 red; 5 blue 48 | Game 48: 8 blue, 8 green; 1 red, 17 green; 9 green, 6 red, 8 blue; 13 green, 3 red, 1 blue 49 | Game 49: 17 blue, 2 red, 1 green; 12 blue, 1 green, 4 red; 1 green, 2 red, 13 blue 50 | Game 50: 4 red, 2 blue, 9 green; 8 green, 2 blue, 6 red; 9 green, 2 blue, 14 red 51 | Game 51: 6 red, 3 green, 8 blue; 5 green, 16 blue, 1 red; 2 green, 13 red, 14 blue; 14 red, 12 green, 19 blue; 19 blue, 13 green, 9 red; 6 red, 15 blue, 7 green 52 | Game 52: 18 blue, 2 red, 5 green; 2 green, 5 red; 6 red, 10 green, 3 blue; 3 green, 6 blue, 6 red 53 | Game 53: 11 red, 4 green; 2 blue, 3 red; 3 blue, 13 red, 11 green; 11 blue, 8 red, 5 green 54 | Game 54: 4 green, 1 red, 7 blue; 4 green, 8 red, 8 blue; 4 red, 5 green; 8 blue, 4 green, 2 red; 4 green, 3 blue; 3 blue, 3 green, 3 red 55 | Game 55: 9 red, 1 green, 1 blue; 1 green, 8 red; 4 red; 7 blue, 7 green; 6 blue, 5 green, 6 red; 5 blue, 8 red, 4 green 56 | Game 56: 1 blue; 3 red, 2 blue; 1 red, 2 green 57 | Game 57: 7 green, 2 red, 5 blue; 6 green, 1 red; 1 green, 6 red; 1 red, 20 green; 1 green, 4 red, 2 blue; 15 green, 7 red 58 | Game 58: 3 green, 8 red, 5 blue; 2 red, 3 green; 2 blue, 2 green, 12 red; 1 blue, 3 green, 16 red; 4 blue, 9 red, 3 green 59 | Game 59: 2 red, 5 blue, 1 green; 2 red, 3 green; 12 red, 5 blue; 7 green, 3 blue, 4 red; 1 green, 5 blue, 14 red; 8 red, 11 green, 2 blue 60 | Game 60: 12 blue, 3 red, 2 green; 2 green, 6 blue, 1 red; 1 blue, 2 red, 3 green; 7 green, 1 blue, 2 red 61 | Game 61: 6 blue, 6 red, 7 green; 2 green, 5 red, 5 blue; 1 blue, 3 green, 15 red; 6 blue, 8 green, 14 red 62 | Game 62: 1 blue, 6 red, 2 green; 5 green, 5 red, 11 blue; 5 red, 6 green, 8 blue; 2 green, 17 blue; 2 red, 7 green, 5 blue; 3 blue, 5 green, 8 red 63 | Game 63: 6 red, 1 green, 9 blue; 7 red, 1 green, 11 blue; 3 green, 4 red; 4 green, 10 blue, 7 red; 13 blue, 11 green, 5 red; 14 green 64 | Game 64: 13 green, 11 red, 1 blue; 1 red, 2 green; 3 blue, 9 green, 19 red 65 | Game 65: 2 blue, 11 red, 3 green; 5 green, 6 red; 2 blue, 9 green, 9 red; 1 green, 5 blue, 3 red; 4 red, 4 blue, 6 green; 2 blue, 7 green, 1 red 66 | Game 66: 4 red, 7 blue, 3 green; 1 green, 6 blue, 7 red; 1 green, 1 red, 1 blue 67 | Game 67: 1 green, 8 red; 4 green, 1 blue, 3 red; 8 red, 3 green 68 | Game 68: 3 blue, 4 red; 1 blue, 1 green; 2 blue, 6 red, 3 green; 1 blue, 1 green, 3 red; 7 red, 1 blue, 4 green; 1 green, 2 red, 3 blue 69 | Game 69: 6 green, 2 blue, 3 red; 3 blue, 3 red; 1 green; 1 blue, 2 red, 8 green; 1 green, 1 red 70 | Game 70: 7 blue, 15 green, 3 red; 8 green, 6 blue, 5 red; 7 blue, 1 red, 3 green 71 | Game 71: 4 green, 3 blue, 7 red; 6 red, 6 green, 10 blue; 3 red, 9 green; 7 blue, 1 red, 13 green; 3 blue, 5 red, 11 green; 8 blue, 8 red, 5 green 72 | Game 72: 10 green, 4 blue; 4 blue, 8 green, 2 red; 2 red, 6 green, 6 blue; 1 red, 5 blue; 13 green, 5 blue; 8 green, 3 blue, 2 red 73 | Game 73: 9 blue, 1 red, 13 green; 2 red, 16 green, 6 blue; 1 red, 8 blue, 17 green; 7 green, 1 blue; 8 blue, 1 green, 1 red 74 | Game 74: 2 green, 2 red; 1 red, 5 blue; 7 blue, 3 green; 7 blue, 3 green, 7 red 75 | Game 75: 3 green, 5 blue; 2 green, 1 red, 9 blue; 17 green, 13 blue, 3 red; 3 blue, 2 red, 8 green; 7 green, 2 red, 8 blue; 1 green, 14 blue 76 | Game 76: 19 red; 2 blue, 20 red; 3 blue, 3 red; 20 red, 3 blue; 6 red, 4 blue, 1 green 77 | Game 77: 2 red, 5 green; 2 red, 2 green; 4 green; 4 green, 3 red, 3 blue; 2 red 78 | Game 78: 4 green, 16 red; 5 green, 2 red, 2 blue; 4 green, 2 blue, 11 red; 1 blue, 1 green, 6 red; 2 blue, 7 red 79 | Game 79: 8 blue, 2 green; 3 red, 3 green; 3 red, 9 blue, 4 green; 1 red, 2 blue, 4 green; 8 green, 6 red, 9 blue; 2 red, 10 blue, 9 green 80 | Game 80: 9 red, 17 blue, 2 green; 5 red, 1 green, 6 blue; 2 red, 20 blue; 6 red, 12 blue 81 | Game 81: 5 red, 4 blue, 1 green; 15 green, 8 blue, 2 red; 5 blue, 2 red, 9 green; 11 green, 1 blue, 3 red; 15 green, 1 red, 3 blue 82 | Game 82: 2 blue, 12 green; 12 blue, 12 green, 14 red; 4 blue, 16 green, 7 red 83 | Game 83: 6 blue, 7 red, 11 green; 2 red, 6 green, 4 blue; 6 blue, 1 red; 7 blue, 12 red, 13 green; 10 green, 6 blue, 10 red; 6 red, 4 green 84 | Game 84: 2 green, 5 red, 1 blue; 4 green, 3 blue, 2 red; 2 green, 1 red, 1 blue; 5 red, 4 blue, 4 green 85 | Game 85: 1 blue; 1 green, 2 red; 3 red, 11 green; 6 green, 14 red, 1 blue 86 | Game 86: 3 green, 1 blue, 3 red; 3 red, 6 blue, 2 green; 4 blue, 1 red; 5 blue, 4 green, 3 red; 2 blue, 3 red, 4 green; 7 blue, 2 green, 3 red 87 | Game 87: 1 green, 5 red, 5 blue; 6 red, 4 green, 1 blue; 2 green, 4 red, 1 blue; 7 red, 4 green, 5 blue; 3 green, 4 red, 1 blue 88 | Game 88: 3 blue, 18 red, 14 green; 11 red, 14 green; 2 blue, 10 red, 4 green 89 | Game 89: 5 red, 4 green; 3 red, 2 blue, 1 green; 2 blue, 4 green, 3 red; 2 green, 2 blue, 2 red 90 | Game 90: 14 blue, 10 red, 2 green; 11 blue, 3 red, 1 green; 5 blue, 2 green, 14 red 91 | Game 91: 9 blue, 4 red, 4 green; 4 red, 1 blue; 3 blue, 20 red 92 | Game 92: 3 red, 2 green, 7 blue; 2 green, 10 red, 8 blue; 9 red, 5 blue, 5 green; 1 blue, 2 green, 3 red; 10 red, 13 blue, 9 green; 11 blue, 7 red 93 | Game 93: 9 red, 2 blue, 1 green; 6 red, 2 blue, 11 green; 1 green, 1 blue, 10 red; 9 red, 8 green 94 | Game 94: 18 green, 3 red; 2 blue, 4 green, 12 red; 5 red, 1 blue, 13 green; 2 blue, 15 green, 7 red 95 | Game 95: 12 green; 1 red, 3 green, 1 blue; 13 green, 2 red, 1 blue; 9 green; 2 green, 1 blue; 1 blue, 4 green, 1 red 96 | Game 96: 5 red, 4 green, 2 blue; 10 red, 3 blue, 5 green; 14 blue, 11 green, 4 red; 14 green, 7 blue, 13 red; 17 red, 9 green, 6 blue; 8 red, 4 blue, 13 green 97 | Game 97: 3 green, 7 blue; 7 red, 4 blue; 5 blue, 6 red, 2 green 98 | Game 98: 9 green; 8 green, 4 blue; 6 blue, 2 red, 1 green; 4 green, 1 blue; 5 blue, 2 green, 2 red 99 | Game 99: 3 red, 1 green, 5 blue; 1 red; 3 blue, 4 red; 3 blue, 1 green, 5 red 100 | Game 100: 3 red, 3 blue, 10 green; 3 green, 1 blue, 6 red; 5 red, 4 green, 7 blue -------------------------------------------------------------------------------- /day-02/test.txt: -------------------------------------------------------------------------------- 1 | Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green 2 | Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue 3 | Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red 4 | Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red 5 | Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green 6 | -------------------------------------------------------------------------------- /day-03/1.py: -------------------------------------------------------------------------------- 1 | s = set() 2 | with open(0) as f: 3 | # store the file content in 2d array 4 | lines = [x.strip() for x in f.readlines()] 5 | 6 | for row, line in enumerate(lines): 7 | for col, char in enumerate(line): 8 | if char.isdigit() or char == ".": 9 | continue 10 | 11 | for x in [row - 1, row, row + 1]: 12 | for y in [col - 1, col, col + 1]: 13 | if x < 0 or x >= len(lines) or y < 0 or y >= len(lines[x]) or not lines[x][y].isdigit(): 14 | continue 15 | while y > 0 and lines[x][y - 1].isdigit(): 16 | y -= 1 17 | s.add((x, y)) 18 | 19 | nums = [] 20 | 21 | for x, y in s: 22 | a = "" 23 | while y < len(lines[x]) and lines[x][y].isdigit(): 24 | a += lines[x][y] 25 | y += 1 26 | nums.append(int(a)) 27 | 28 | print(sum(nums)) -------------------------------------------------------------------------------- /day-03/2.py: -------------------------------------------------------------------------------- 1 | t = [] 2 | with open(0) as f: 3 | lines = [x.strip() for x in f.readlines()] 4 | 5 | for row, line in enumerate(lines): 6 | for col, char in enumerate(line): 7 | if char != "*": 8 | continue 9 | 10 | s= set() 11 | 12 | for x in [row - 1, row, row + 1]: 13 | for y in [col - 1, col, col + 1]: 14 | if x < 0 or x >= len(lines) or y < 0 or y >= len(lines[x]) or not lines[x][y].isdigit(): 15 | continue 16 | while y > 0 and lines[x][y - 1].isdigit(): 17 | y -= 1 18 | s.add((x, y)) 19 | 20 | if len(s) != 2: 21 | continue 22 | 23 | nums = [] 24 | 25 | for x, y in s: 26 | a = "" 27 | while y < len(lines[x]) and lines[x][y].isdigit(): 28 | a += lines[x][y] 29 | y += 1 30 | nums.append(int(a)) 31 | 32 | t.append(nums[0] * nums[1]) 33 | 34 | print(sum(t)) -------------------------------------------------------------------------------- /day-03/in.txt: -------------------------------------------------------------------------------- 1 | .....613...................................439............498.........................438......617....343.............942................... 2 | .......*............790...........269..735..*........................../679..............*444.*.........*.......147...*.............441..... 3 | ....539......422.......*......662*........*..691..........*124.15..675.................=.......404...872............237......930.....+...... 4 | ........334.............861.........%....479..........424.......+.@.......402.......314...905................833........*293................ 5 | ..........#.......................906.................*...............950.....................712...437.........*142.359........551.14...... 6 | ....509.....=...........890...................&........9................./..847.154..568............@...102................280...*.......... 7 | .....*..950.67.............-......161.......530....=...................=............*...../..............@.......................426........ 8 | 614...............................*.............59.591.....259*.......342...427..........29../.........-....................946............. 9 | .......896........808..............6.............*.............35............./......538.....572....510...677*380...........=............... 10 | .......*.............*534..814................879...............................615/....*............................90.........580...413... 11 | .......810..........................................714.260..498..........386..........877......754........793...943.*............/.....*... 12 | .....................845..#..483........55...643.......*......&.....421..+.....+...527.....938............*.......*...993...............706. 13 | ....339*..370..........-.540.@.....337..........*........39........*........404......&.......*...483...308.....567................../....... 14 | ..........*......994..............*......855..356.768.....*.....114...@195..................976....-...............496.61...610...369.200... 15 | ..........15........*...@890...447.........*.........*.303......................821..251*....................8........*....+................ 16 | ...962.............260...................@..716....893..............304............*.....537.........805.....#..........................388. 17 | ............201*........................281.............471........*...../.....=....959...............%..238....180..641@................... 18 | ....278.........132..........65...&.........*920.......*.......831..97..828.....533......#368............../.......*......66-............... 19 | .....*................*......*..627......343..........111.....*.....................................*.100$........693..........780.......... 20 | ...974........474..537.759.101.......366....................183...............461*178..850.......644.........57............................. 21 | ..........67$.@.........................*...879..................54.100..355.................794.............=.....................826.530.. 22 | 494*549...............670...=194.....173............329=....*14....*........*....811*303....*....891..541........975........................ 23 | ........................*................403.............591................667............630....*.....$.667*....#...*......819.........19. 24 | 572...@.......%.......271..........910.........578.551..........818.534...........................217.........809.....262.....+............. 25 | .....105.......748..............%........637...*...*........515....*...................119............*143..@.....258....................... 26 | .20........115........714....525...491....*..768...647.....*...................433..../............583.......404..#..............268........ 27 | .......650..*.....%......%............*.311............275.283.306..=659.....................499........@................652.176............ 28 | ..100.....#.193.637..........828...806.............725*........*..............................@......418........370.......@........86&..977. 29 | ......350................229..$.............................%...724.....#.981*582..$...............................*.38.....38.503......$... 30 | .......#..380...........*.............311........%..........968......647..........33..................634*13......72./...%...*..*........... 31 | ............*.203*52.......+........./...........295.....................888..........277...938..662.........3.........619.320...766........ 32 | ....149...883..............817...........163............959..........8.....*.811%............*......&...354..+.....392...................... 33 | ....................727........789......*...............@...............739.........537....326.............*......*.......&925.........938.. 34 | ..383..505.166......-.........*.......565......491........136.....693..........870.%...........#...........654..&..313.................*.... 35 | .........=..$..801....962.....787..........181......186.../..........*103........+............826....599.......289.....311.768..........986. 36 | .292.414..........*......*................*..................214.....................439.@130...........+...52........*.....*.....989*...... 37 | .........221......149....405...@...........393..........714.....&.......652............*............607....*.........412....682.......982... 38 | .........*......................491.......................*..............-......906..909.......885.....%.747......19........................ 39 | ......567.........193........1..................925.........78......117.....797*................@............208............................ 40 | .............943..*.....571...*.....919.487............/....+.........*.......................................*......433.922.......795...... 41 | ....66......*....92..........367.......*....883.625.....479....852@.............277.635............860.......940..21....*....995.....&...... 42 | .........206............595%...................*............./.......................*......691.......*..........*..........*............... 43 | .....766.............&................=...........*...649-.241...56..@724..713..836.863.......=....676...+..824.506......247..$132.......... 44 | .....................278..........917..864.....219...............+............%.*......................973.........................744...... 45 | .........912...............%......*................979....-953...................733.............&................................*......... 46 | .........@........$........995....905......552...................391.........40=.......388.......141...................731*640.....511...... 47 | 123..662...989.672............................*........611......+.....%910.............*....5......................584...................... 48 | ...*...*../...........................306.....289.*....*.............................673.....*........970..51....@....*...............#..... 49 | ...916.23.......14..828........908.................181.227......26....190.....723..*.......877...513...@...*..977......319..867/...997..76.. 50 | ..........158........=............$..............................%............#...605....................264.......569.....................1 51 | .....453..*............................815.430*........946..840.........................456.........152................23................... 52 | 216.....*.389...........930............*.......211.......-...*.....635..472*185.................................@444...*.....783...966...... 53 | ...*...72.................*..........527...+...............636.......*.............746....575.....5...276.821........568.+......*...-....... 54 | ..765...........991........686..142*......588......@...........366....395.............*..*...............................983...266.......... 55 | .................+..................383.............330..&......%...............337.853.337........927.@703.&513......................855... 56 | ...652................=../..@.............431....48......512...............541....%.................+.............-...835/.......%......*... 57 | .....*..205.....510.92..901.778............*......./............588.........#..........@....................968.603........820...75....844.. 58 | ...560............/........................597...................&.......#............698..........427........*...../249.................... 59 | ..............817..........50..........208..................149..........169........................*......835..............522............. 60 | .....-......................*............*.....470......%..*.......151.................731.......395..979.........200.........#.......$..... 61 | ..242.........698........763............531.....*....252...533.....*.........64.........*...233.........*............*262.............498... 62 | ........994.....*...............620.639......575................934..606.99....*....770.72.#......@.............................-........... 63 | .......*.........658..355.........#...*............*...*597..............*...645......*........292........-..354...@.......409...515........ 64 | ........453..594.......#..............571..=552.193...8.............820...69.........877....%..........846.....*...525.446....*........*386. 65 | ....&...........#..................................................*....-.................652.................500............361....290..... 66 | ...833..................652.....410..924*72..........*.../104.....231.223....@...%....775................375................................ 67 | .................470...........*..................663.......................179.10....&.........256..770*............243.........354........ 68 | ...*5.............*............962......-....................../.....529...................../.....*.........39.255./.......73......&....... 69 | ...............253..766....$.............659........$497..241.656....&....630................262.212...154.......*............*............. 70 | ...................*....755...................375...........*................@...........................*.....936...159.......786...981.... 71 | ...................78....................426.....*39....885..835....432..............439.................335............@................... 72 | .......*574.785............................................*................736......*.....860....395...........381...........@..114...825.. 73 | ....557........@.............187.....640......514.36*.....834.........630...@....*..194......#....-......*......*....164....440.%.....*..... 74 | ...................744.908....*........*......*......185......................165........635..........464.354..104.................996...... 75 | .........................*.805..604..375...326........................*.................../....970.....................*.................... 76 | ....751.....776.......661.......*.................777*........434..952.662....2......................$.923...........99.463.........&.514... 77 | ....*........*.....55..........414..............................*..............$......&522........378............+............*....89..*.... 78 | .331.......403..94..................547.551..............300...600........=......452.......976.+...............213.........815.757.......... 79 | .....209-......*...760...............@...*.............................963........+..........*.906.......785...........................+.... 80 | 958...........319....@.....+.334..........640.................................798.........611......678.....*..630.......389............426.. 81 | .........../............961..*..................608..472...........45...........*...................*....390.............*.................. 82 | .....597..191......&861.......279.689.............=....*.972*..........560......900.............548..97.......240...51....2....411.......233 83 | ......*.......379.................*......+...........770.....989...955...&.214#.........*588.......*.............%..$....................... 84 | ....982.&.......................82....850...450......................*...............755.....799....539.....298.........993........788...... 85 | .........901....382.......569...............&........428............281.....=599.........98.../....................789.@......956.=....450.. 86 | .................*..497/..*...664....*...............%.........610................/944.....*....778......713*375.....*.................*.... 87 | .......@......637........443.../...905............................*883.......389...........563......................388...$.....*559....386. 88 | ........241.......*597.........................876..............$........731*.....192.483..............#958...%..*......828..100............ 89 | ...89&.........994.........*228...............#...........18...413..............1....*...........*..........157...453....................... 90 | ..........573...........198............447........488.672../.#......&383.........%.....589........511..................46................... 91 | .....*449......$...228*................+.............*........662.........%.............*....321........34%....838&...*..................... 92 | ..592.......659...............=...........................................188..248....836......*....................141..%......344......... 93 | ............................564....481..............-..........................................861............%...........93.....$...$.936.. 94 | ..........618.287......490$.......-............*..304.........662.........@....196...@...72*.........918.339.999.-.................28....... 95 | .............*..............................556.......812.272.....235@.510...#.....51.......804...........#.......209......323=............. 96 | .../471..474.................446.......*........855....*....#..............265..................588.24.......522............................ 97 | ............*........86..755..+........664........*.....311........793.361.....685.......859..../...@..158......=...667#...........871...... 98 | ...........529.........&.*.........................624........578....*...................*..................334..........843................ 99 | ....32#........12..818...406......888.........555........678...*...................@....796.%........159.......-.......$.......@142..289.... 100 | ..........797..@...*..........246....*..........*.............473............485..683.......526.......*................987...........*...... 101 | ...272....-.......763...........*...............546....203......................%..................560.....294........................921... 102 | ......+...............439...144..909....221...............*245.............847....971..........812............*............................. 103 | ...........66....+.........*.........20......337.....591.......*.226.&.....*.......-..+113........./........321..756...518....*............. 104 | ......325......166..........848................*.267*........857..*..34.....471.............579+.851...322........#...*........125.......... 105 | .........*..........157......................77..................567....646...........................*......783....634.5....@.............. 106 | .598.497.275.......&......908=............................................$.......172*324...$263.....207......&.........@...340...160....80. 107 | ....*..................#........484..833.998....*.....#.......945.135.......108..................104........................................ 108 | ..............908....645..264*..........*....581.332...519.......*.........*...........811..................214&..$............57........... 109 | ....%543.......@..............807..768.......................23............578.........&.....545...................988........*.........#... 110 | ...........547..........&.818........*................669....*........395.........88........*.....964*.....................230..105....471.. 111 | ......................231.&.........645....*982..398...@.....442..........................311.........466....168..788..474......-........... 112 | ..233......638.254......................824..........%...........676.....413......818.............................*.......*................. 113 | ..............*.........672.137..............866...862...376........*.........933*............455.................158....682..180*333....... 114 | ........454$...........*.......................*........#.............................../18.....*.....677...664.........................%867 115 | ..............318....107...........*793.....361...............................*................372.......*.....*509......765.203....737..... 116 | .................%........*.216.831....................509.....392............508...........&...........780.........219.....*......&....*635 117 | 334............&........862................945.....162*.........*.......529.......164.......627.381*........591........*83...........155.... 118 | .......278...476....363....../.........785.%................431...........*..........*529...........194......*..............982*91.......... 119 | .......*..................994..480.....*......*.......236...*........825.450......&.......&..797*.......634.249.......................626... 120 | 408.699........*527............*....900....145.880...*......833......*...........456....914......432...*...............391..537........*.... 121 | .........................836..955.....................126............557.............................870...38..........*.....*.......388.... 122 | .................+275.......*..................=................/............526..................................-....66....587............ 123 | ..........................400....&............933.......*.....535........455*.....&...209.699........90....*10..207...............*.67...... 124 | ..............757................719.-............*..-...38.....................22.....*..+...254.....$.736..................201.80.+....... 125 | .....86.584............+..*..........531........335.949.......500...........544.....22.11....*......%.........774*434...337...........331... 126 | .183...*............553....691..131..........................*.................*..............186..591..=171............................*... 127 | ...*..........645........*.........*.......365............654......*........843..649.............................673.....867........#.218... 128 | ....533..206..*...528=...618........891.41*......................988.596........$......%......391..506..672...../...........*103..926....... 129 | ............$.49..............*.....................445................@..../......&..678...................61.............................. 130 | ..63.............998.......927...295..600....303..........352..............358...464......234.......-.......*....517.......-778....32..641.. 131 | ....*693............*..............*...*...+.../..70......@...417......*.......$.........*..........417...940.....@....................*.... 132 | .................529...561.......706...894.740.......117=....+.......251....642...&763..183..................................$.............. 133 | 544.651.......+........*....951..................438............505..................................309......800..........534.............. 134 | ...*...........864.....930....*...36*.......418....*...............*................703...............*.........%..431................=..... 135 | ...........463................73.....476............942...55.....127..........................560..959................*.............255..... 136 | ......%...*.......176..969#...............@35...............*........-.........242...............=.........147.......914....191............. 137 | ....71....686................*.................260.........62.423...823..............-.....................*...................=.186........ 138 | .................521..447....940...123........*.................+..........62....855..452...............455.......264....9..........*165.... 139 | .......$608..675*.....*.../.......*............72......../...........*484....*....=................................*......*.....%........... 140 | ...................302..476.......64.....................159......815......445..........965........................558...824....281......98. -------------------------------------------------------------------------------- /day-03/test.txt: -------------------------------------------------------------------------------- 1 | 467..114.. 2 | ...*...... 3 | ..35..633. 4 | ......#... 5 | 617*...... 6 | .....+.58. 7 | ..592..... 8 | ......755. 9 | ...$.*.... 10 | .664.598.. -------------------------------------------------------------------------------- /day-04/1.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | r = 0 4 | 5 | with open(0) as f: 6 | lines = [x.strip() for x in f.readlines()] 7 | for line in lines: 8 | left, right = line.split("|") 9 | left_nums = re.findall(r"\d+", left)[1::] 10 | right_nums = re.findall(r"\d+", right) 11 | 12 | common = set(left_nums).intersection(right_nums) 13 | 14 | if len(common) > 0: 15 | r += 2 ** (len(common) - 1) 16 | 17 | print(r) 18 | -------------------------------------------------------------------------------- /day-04/2.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | s = {} 4 | 5 | with open(0) as f: 6 | lines = [x.strip() for x in f.readlines()] 7 | for i, line in enumerate(lines): 8 | if i not in s: 9 | s[i] = 1 10 | 11 | left, right = line.split("|") 12 | left_nums = re.findall(r"\d+", left)[1::] 13 | right_nums = re.findall(r"\d+", right) 14 | 15 | common = set(left_nums).intersection(right_nums) 16 | 17 | if len(common) == 0: 18 | continue 19 | 20 | for n in range(i + 1, i + len(common) + 1): 21 | s[n] = s.get(n, 1) + s[i] 22 | 23 | print(sum(s.values())) 24 | 25 | -------------------------------------------------------------------------------- /day-04/in.txt: -------------------------------------------------------------------------------- 1 | Card 1: 44 22 11 15 37 50 3 90 60 34 | 35 60 76 3 21 84 45 52 15 72 13 31 90 6 37 44 34 53 68 22 50 38 67 11 55 2 | Card 2: 42 14 40 24 51 49 47 73 34 74 | 40 22 48 65 34 81 24 97 14 49 1 98 66 42 71 74 28 11 47 3 45 63 73 51 87 3 | Card 3: 16 48 80 51 41 87 46 77 23 8 | 10 77 41 46 8 36 85 16 87 27 97 13 15 35 45 80 63 37 29 60 48 51 82 61 23 4 | Card 4: 82 88 65 64 33 89 23 49 11 92 | 11 33 91 15 81 44 29 27 63 23 1 13 74 89 88 8 37 22 51 92 65 7 49 82 64 5 | Card 5: 36 61 30 42 64 45 80 26 84 60 | 50 46 76 4 12 32 38 23 36 45 44 61 53 94 37 33 11 82 84 87 26 19 93 15 98 6 | Card 6: 75 63 86 49 17 26 59 70 18 57 | 87 3 2 47 65 21 24 74 28 17 34 33 16 29 63 14 60 95 83 15 41 70 56 49 23 7 | Card 7: 57 36 32 45 2 5 79 98 73 39 | 97 10 57 45 4 39 32 93 86 79 70 58 76 2 83 1 49 29 36 98 44 94 73 81 5 8 | Card 8: 85 17 70 99 44 11 42 39 83 57 | 71 94 85 1 44 66 83 42 70 73 39 33 88 56 11 31 87 7 99 8 49 43 57 91 17 9 | Card 9: 32 21 51 36 59 24 47 11 61 96 | 31 76 57 64 14 91 73 78 5 95 63 69 84 51 58 94 72 28 19 66 21 67 3 97 61 10 | Card 10: 83 96 30 51 6 24 7 65 39 97 | 67 85 39 71 93 37 35 77 56 25 82 3 89 47 8 88 66 79 7 87 84 52 11 70 1 11 | Card 11: 83 1 30 54 34 78 82 68 10 55 | 66 76 54 83 78 68 21 82 60 34 84 23 20 64 86 1 96 36 98 15 74 63 40 97 59 12 | Card 12: 74 1 6 81 56 43 65 38 3 4 | 6 24 34 46 64 81 73 52 72 62 54 44 77 98 40 7 17 63 79 91 29 71 82 9 56 13 | Card 13: 41 28 47 58 2 5 75 78 72 94 | 92 95 96 46 90 50 1 11 62 37 14 15 41 13 43 21 97 76 60 72 99 9 63 45 64 14 | Card 14: 75 48 10 62 12 44 92 20 68 19 | 58 8 30 25 77 73 23 68 31 53 74 39 97 88 7 52 4 10 86 35 3 94 81 20 63 15 | Card 15: 40 99 7 94 75 66 24 71 17 33 | 62 87 68 82 79 54 95 69 26 7 20 18 64 84 63 52 53 35 50 86 34 9 14 27 73 16 | Card 16: 5 29 30 84 1 38 35 32 8 81 | 67 65 29 96 5 11 82 71 95 93 38 76 34 77 6 37 21 17 2 52 94 58 99 3 84 17 | Card 17: 59 77 36 26 93 27 40 65 61 32 | 63 91 45 80 64 12 97 65 7 87 47 3 18 36 77 92 23 9 31 20 99 51 13 75 81 18 | Card 18: 6 56 47 29 45 63 41 33 5 4 | 95 92 45 10 81 38 27 20 65 91 57 80 72 30 18 88 15 17 55 50 11 59 40 36 86 19 | Card 19: 55 47 86 94 12 6 91 22 53 69 | 20 97 28 80 40 10 48 51 38 42 66 36 4 82 46 76 32 31 27 54 50 57 70 99 59 20 | Card 20: 98 62 51 84 26 19 35 89 32 14 | 57 94 93 87 96 42 18 53 73 88 27 61 43 59 80 50 97 64 37 6 72 13 52 40 92 21 | Card 21: 7 14 52 40 96 87 38 73 42 95 | 87 5 73 95 42 86 11 93 61 96 52 80 75 40 85 7 53 3 50 64 14 44 38 39 12 22 | Card 22: 25 18 51 7 49 95 30 26 96 2 | 92 87 2 11 95 18 26 69 49 48 14 30 94 51 24 62 96 31 98 7 60 16 10 25 93 23 | Card 23: 90 26 77 33 22 63 17 49 9 25 | 49 37 27 17 84 35 90 9 63 70 69 15 22 91 14 28 86 52 26 11 77 42 25 67 33 24 | Card 24: 9 35 28 79 83 60 74 12 75 30 | 97 60 72 61 74 94 91 84 22 79 8 57 66 20 28 35 30 75 9 71 76 83 12 77 2 25 | Card 25: 86 67 66 31 5 79 28 21 16 71 | 47 16 7 93 15 73 27 92 60 62 88 63 94 51 12 24 21 82 84 97 86 75 8 72 45 26 | Card 26: 65 48 46 57 31 96 42 98 14 89 | 84 98 58 31 76 85 96 94 52 41 40 67 34 74 83 54 42 14 10 65 48 57 79 46 89 27 | Card 27: 34 83 70 7 13 72 12 74 63 67 | 34 71 12 31 11 36 61 94 23 80 49 24 13 7 52 37 41 83 65 90 70 38 98 5 74 28 | Card 28: 11 33 66 25 89 28 17 98 37 5 | 78 13 28 25 54 51 66 5 43 6 37 97 89 26 98 11 33 64 40 17 61 74 31 60 39 29 | Card 29: 2 27 73 62 83 85 20 46 29 8 | 85 46 18 11 95 72 2 84 13 20 29 76 73 60 1 4 93 61 30 62 83 27 68 8 16 30 | Card 30: 27 77 35 2 13 49 33 47 96 75 | 96 13 35 31 75 79 8 77 28 45 61 74 27 34 92 38 33 48 49 76 2 47 5 10 54 31 | Card 31: 24 42 38 83 20 40 78 51 73 13 | 83 38 79 42 13 51 69 88 75 94 41 22 14 97 8 24 20 76 78 31 40 6 28 73 87 32 | Card 32: 78 68 70 87 52 71 30 93 96 77 | 60 24 31 14 52 4 78 71 83 45 27 93 82 85 77 30 38 2 96 94 70 87 68 61 25 33 | Card 33: 91 33 16 29 31 87 61 63 58 14 | 35 2 55 19 79 87 28 63 13 60 3 14 54 58 29 91 53 61 11 22 33 25 52 16 31 34 | Card 34: 31 76 55 66 39 70 78 89 4 83 | 78 62 46 32 31 61 51 1 83 22 89 96 72 80 66 69 50 20 11 40 24 76 90 42 71 35 | Card 35: 35 32 93 88 9 21 58 24 85 69 | 77 21 51 7 82 87 58 39 65 11 56 89 16 83 22 68 14 70 74 45 35 71 34 97 61 36 | Card 36: 22 57 6 69 88 46 71 58 96 26 | 6 14 86 50 12 76 55 35 8 17 46 5 80 52 83 57 84 3 60 93 34 67 43 97 11 37 | Card 37: 7 95 47 52 62 18 20 68 93 26 | 3 25 57 32 95 33 87 6 38 13 77 22 15 88 28 89 96 17 59 34 4 58 44 69 23 38 | Card 38: 52 36 66 89 79 6 2 86 51 37 | 70 28 40 39 61 48 33 58 88 90 75 27 50 98 4 34 10 57 5 13 80 62 76 9 67 39 | Card 39: 67 43 21 57 36 89 95 94 7 68 | 15 82 29 85 14 23 73 24 32 76 94 90 36 83 51 6 5 41 68 55 72 58 21 75 53 40 | Card 40: 29 83 62 57 2 44 99 17 81 59 | 28 66 53 11 79 57 13 50 52 71 12 42 32 54 74 56 8 59 67 70 18 65 61 48 85 41 | Card 41: 43 61 32 38 66 2 28 84 74 41 | 22 80 19 57 33 75 60 89 78 39 13 58 27 16 34 21 23 68 66 49 25 55 44 8 28 42 | Card 42: 95 17 92 58 87 97 82 98 44 43 | 48 76 45 68 12 52 93 25 26 35 11 92 82 3 67 85 23 17 61 34 2 59 88 60 74 43 | Card 43: 95 82 60 66 62 11 30 16 68 4 | 43 84 4 31 23 77 66 89 40 96 2 65 51 75 21 35 41 8 10 9 69 54 50 98 37 44 | Card 44: 53 20 33 50 67 80 4 37 61 26 | 38 92 72 12 30 56 7 44 69 70 57 17 93 31 39 62 32 97 3 5 61 1 68 10 49 45 | Card 45: 17 36 61 18 49 99 48 13 90 46 | 98 47 19 29 76 71 96 33 59 55 43 38 73 7 66 58 28 23 60 8 39 65 95 86 81 46 | Card 46: 4 94 23 22 25 35 40 55 50 51 | 65 62 27 32 48 3 83 53 87 54 8 79 95 49 68 97 56 15 11 30 5 14 46 80 77 47 | Card 47: 75 90 15 60 14 87 96 67 80 26 | 21 3 91 79 17 81 46 94 69 37 12 52 64 58 78 28 88 9 93 85 44 34 68 29 83 48 | Card 48: 76 96 28 52 81 54 55 51 10 45 | 48 67 54 93 38 28 70 87 31 82 26 5 60 85 10 15 91 34 84 72 12 62 17 51 97 49 | Card 49: 50 78 76 51 63 60 2 98 72 99 | 13 97 93 77 40 87 66 48 26 21 62 94 23 61 12 67 54 47 56 70 79 30 11 81 74 50 | Card 50: 6 60 84 70 96 59 85 91 78 88 | 61 3 40 12 35 76 94 48 54 71 51 22 87 11 97 1 57 5 49 53 98 83 82 74 46 51 | Card 51: 96 4 60 57 67 47 86 97 52 23 | 9 90 69 54 67 52 57 60 42 7 59 33 88 97 98 26 92 13 80 17 77 82 23 4 86 52 | Card 52: 50 62 38 21 94 19 88 85 83 80 | 77 17 31 23 90 83 85 81 5 32 6 82 46 38 52 50 19 35 59 80 96 98 37 61 62 53 | Card 53: 19 29 28 50 43 44 91 30 41 24 | 30 50 68 94 91 16 18 41 42 21 32 10 69 84 61 20 13 66 31 88 28 35 40 45 33 54 | Card 54: 70 66 59 79 69 52 9 72 26 3 | 88 81 36 64 5 91 7 97 20 6 44 85 54 77 60 45 11 1 73 61 19 99 40 12 90 55 | Card 55: 41 85 95 15 52 42 57 25 88 32 | 6 94 68 90 98 87 96 50 89 95 37 84 16 55 44 52 31 14 74 81 69 40 73 20 70 56 | Card 56: 44 96 94 25 41 73 5 3 81 18 | 16 36 34 85 70 42 69 28 35 5 84 23 43 67 68 32 1 29 8 48 27 63 95 41 56 57 | Card 57: 96 13 47 23 35 79 58 80 94 1 | 67 39 94 4 22 17 64 70 53 82 83 97 98 32 37 78 6 74 13 48 30 77 81 1 56 58 | Card 58: 26 82 95 34 9 48 62 81 27 32 | 31 4 20 46 28 14 35 45 68 92 67 57 72 84 79 33 58 65 64 82 76 29 93 89 96 59 | Card 59: 8 52 53 88 76 92 44 59 14 5 | 21 47 42 89 3 56 48 66 30 68 81 75 26 54 50 97 40 60 15 49 57 4 13 84 32 60 | Card 60: 71 80 66 49 16 39 76 68 74 82 | 23 72 41 78 1 96 50 73 79 13 65 59 32 29 38 63 11 92 64 54 30 22 52 95 25 61 | Card 61: 28 1 74 52 25 9 49 5 19 42 | 27 74 94 42 13 40 62 19 25 1 24 21 59 52 22 50 30 8 28 49 53 5 39 23 9 62 | Card 62: 87 62 88 31 17 95 91 42 37 28 | 78 47 11 29 50 20 28 17 58 76 18 91 25 39 22 60 65 51 16 67 27 57 35 74 5 63 | Card 63: 21 64 77 76 14 59 8 32 19 79 | 32 77 27 8 59 10 31 76 89 79 28 47 21 5 61 40 43 14 24 97 19 64 22 98 87 64 | Card 64: 50 35 23 27 79 15 90 37 88 99 | 54 89 97 22 59 66 90 79 93 65 23 32 17 36 15 85 50 28 37 27 48 55 99 62 88 65 | Card 65: 55 18 38 58 26 41 36 78 22 14 | 51 33 49 26 14 22 55 18 36 79 43 67 68 25 94 85 20 6 61 2 65 32 66 50 48 66 | Card 66: 97 52 63 58 79 51 55 90 28 87 | 59 48 7 25 47 85 79 87 37 77 56 43 41 24 55 70 99 17 28 58 49 51 52 66 60 67 | Card 67: 53 29 43 54 87 33 14 47 6 50 | 53 47 91 58 84 46 99 60 6 34 33 98 63 66 87 65 50 93 14 54 77 9 95 29 8 68 | Card 68: 65 64 10 35 78 62 98 82 9 11 | 81 78 62 59 65 64 41 35 32 10 58 97 12 60 57 21 82 11 99 9 84 98 8 44 26 69 | Card 69: 97 99 95 42 64 80 9 46 30 29 | 42 4 46 89 99 54 97 82 3 90 9 80 38 51 70 21 34 19 30 57 29 95 73 12 64 70 | Card 70: 83 18 66 53 81 21 60 74 12 79 | 39 90 32 83 2 59 74 29 87 66 60 14 8 51 78 67 72 42 64 30 70 82 81 80 73 71 | Card 71: 49 94 16 23 44 83 95 74 29 78 | 52 19 94 10 49 95 83 40 23 15 44 85 90 43 1 74 78 53 27 5 48 64 30 55 63 72 | Card 72: 41 28 95 19 80 15 38 53 27 46 | 3 60 71 33 56 80 68 29 74 10 26 27 20 47 6 70 28 53 65 37 62 8 91 69 99 73 | Card 73: 3 62 63 4 6 8 33 87 44 32 | 3 40 87 46 6 2 86 99 51 61 65 39 62 44 90 55 53 36 56 33 16 27 59 1 32 74 | Card 74: 19 44 31 74 18 58 42 28 60 14 | 8 30 34 95 6 64 70 99 43 88 5 26 16 79 52 24 73 65 38 17 78 82 57 48 90 75 | Card 75: 41 97 5 43 40 56 91 83 23 69 | 36 37 30 95 53 67 69 91 96 2 65 63 78 84 99 13 42 26 12 60 29 94 6 5 80 76 | Card 76: 57 3 77 91 60 49 29 9 83 5 | 79 85 54 50 31 25 90 80 68 73 45 92 61 2 24 63 52 6 11 8 66 84 87 7 88 77 | Card 77: 76 95 63 87 86 6 46 73 55 44 | 59 55 63 18 2 22 72 79 14 86 96 76 37 5 90 24 11 44 97 56 42 20 7 70 61 78 | Card 78: 78 29 52 51 56 13 39 33 97 83 | 25 87 77 2 7 30 76 90 22 93 92 14 37 65 88 67 42 98 62 23 32 50 81 31 47 79 | Card 79: 5 93 63 7 78 64 98 54 44 65 | 26 82 37 50 9 46 22 51 25 88 59 21 77 94 67 6 41 45 98 92 65 61 70 34 12 80 | Card 80: 46 80 27 3 30 89 29 10 85 81 | 8 60 63 84 4 2 47 50 70 32 26 36 13 57 72 90 6 83 94 9 22 88 58 34 33 81 | Card 81: 15 40 62 36 71 82 8 96 92 53 | 35 52 21 6 29 77 58 85 48 59 90 19 64 98 25 78 1 34 31 63 32 61 5 70 33 82 | Card 82: 39 28 83 51 73 60 8 94 89 93 | 26 48 85 54 75 77 22 23 65 5 20 1 3 40 62 45 11 55 58 84 76 74 13 86 2 83 | Card 83: 6 72 1 41 73 33 97 29 96 28 | 15 92 75 12 17 27 95 88 58 82 69 33 7 81 76 62 6 55 93 79 98 51 99 8 13 84 | Card 84: 86 32 71 28 75 79 73 62 4 58 | 73 71 40 28 91 76 36 51 47 32 24 54 83 65 74 4 86 7 75 26 58 2 37 69 45 85 | Card 85: 22 81 1 13 98 74 82 7 89 14 | 13 1 71 46 54 63 65 76 3 83 21 57 90 80 30 37 4 78 81 64 32 87 73 89 88 86 | Card 86: 22 14 97 63 31 52 71 28 18 60 | 50 14 73 18 24 51 5 29 70 28 63 40 9 62 59 37 92 90 95 83 4 22 93 77 13 87 | Card 87: 65 43 25 31 68 19 8 26 69 12 | 20 84 46 5 41 4 63 52 74 96 76 70 35 55 62 77 88 54 17 93 85 26 72 83 29 88 | Card 88: 87 35 32 94 63 95 76 56 89 48 | 90 7 48 65 54 35 50 45 94 26 40 2 95 88 22 73 13 33 87 92 61 76 72 81 86 89 | Card 89: 55 64 85 51 56 52 17 49 27 5 | 19 17 52 31 56 46 82 79 55 23 9 95 54 94 41 90 64 49 62 5 51 75 27 85 7 90 | Card 90: 21 96 79 30 97 23 61 66 95 50 | 6 1 50 2 87 97 18 76 65 94 75 61 51 59 28 8 21 93 95 54 55 66 57 26 62 91 | Card 91: 36 4 17 66 2 75 55 53 12 62 | 36 31 73 56 47 60 34 38 76 95 23 41 29 66 9 63 70 64 27 5 69 28 15 11 7 92 | Card 92: 95 6 85 38 77 58 29 4 87 96 | 5 4 87 77 84 64 23 15 95 52 24 75 12 38 6 96 31 57 85 74 80 89 25 36 97 93 | Card 93: 21 47 40 11 25 3 45 27 2 17 | 83 40 57 76 91 11 31 3 69 27 8 54 2 43 66 34 72 20 85 22 9 71 50 21 32 94 | Card 94: 48 68 49 4 7 33 6 73 1 95 | 19 46 47 96 38 63 52 18 68 61 45 86 76 85 42 80 92 17 36 10 3 72 37 59 64 95 | Card 95: 69 42 39 84 31 9 85 6 45 2 | 19 74 33 71 55 22 5 60 2 66 40 26 70 4 12 64 43 30 16 98 17 50 85 27 62 96 | Card 96: 73 42 99 21 12 29 77 94 1 26 | 46 5 63 64 83 75 74 86 69 89 79 57 60 48 37 13 96 43 72 4 23 98 59 80 92 97 | Card 97: 16 29 15 98 34 20 91 35 21 44 | 39 38 8 94 59 24 97 84 49 7 63 55 33 73 99 57 70 17 90 22 78 36 54 42 27 98 | Card 98: 32 83 45 81 73 25 58 84 74 86 | 72 1 39 93 36 47 16 20 2 15 34 30 3 7 66 50 89 26 99 13 87 68 28 41 8 99 | Card 99: 89 83 59 69 4 22 47 37 20 60 | 13 10 61 25 81 99 87 23 82 5 91 73 18 26 21 6 62 58 67 52 56 98 8 90 85 100 | Card 100: 32 79 87 19 25 91 62 82 76 5 | 26 66 13 28 18 97 3 65 49 30 21 2 42 9 33 14 68 98 72 96 59 99 77 7 34 101 | Card 101: 86 22 33 76 83 67 87 75 18 51 | 33 76 66 77 35 34 79 3 95 16 27 28 48 45 51 75 10 12 31 83 42 18 67 96 87 102 | Card 102: 8 58 41 62 81 47 52 71 59 98 | 21 91 68 71 58 14 90 93 79 38 98 41 13 72 66 11 26 3 62 84 83 65 17 47 36 103 | Card 103: 34 76 6 85 21 48 41 60 59 70 | 75 55 49 9 73 47 77 6 64 76 30 59 85 24 11 43 34 48 33 63 72 21 83 60 32 104 | Card 104: 57 85 27 66 58 37 80 70 78 74 | 57 70 54 30 22 46 78 80 3 74 50 35 92 58 5 95 7 59 83 90 66 60 1 98 12 105 | Card 105: 33 97 95 36 80 81 66 46 98 91 | 45 1 80 43 14 8 21 95 64 23 49 74 54 36 25 91 93 81 55 73 66 57 29 17 46 106 | Card 106: 51 19 86 18 63 41 44 9 7 21 | 12 18 20 94 59 51 42 9 1 55 22 3 48 91 21 56 74 61 93 34 44 17 37 97 13 107 | Card 107: 5 8 59 60 89 35 55 73 83 1 | 64 18 11 91 60 43 21 45 20 66 25 35 58 70 27 37 86 13 82 5 17 98 24 40 4 108 | Card 108: 26 76 43 52 20 87 1 58 88 34 | 85 69 29 16 48 31 13 65 91 52 37 55 64 7 88 74 96 40 61 33 45 73 84 23 14 109 | Card 109: 10 41 47 8 27 97 18 17 87 16 | 88 87 12 73 94 27 49 98 20 25 45 67 83 35 19 16 18 6 59 62 9 8 22 53 47 110 | Card 110: 42 70 11 15 56 19 99 4 93 88 | 25 79 92 67 58 66 52 77 7 19 75 72 61 1 4 68 42 27 53 44 22 56 83 70 88 111 | Card 111: 81 34 29 58 73 52 55 49 67 14 | 39 92 9 10 44 95 57 86 56 97 74 43 60 72 49 75 11 37 98 4 61 35 6 85 41 112 | Card 112: 23 51 12 85 16 60 98 67 79 5 | 13 59 49 96 15 30 33 75 61 81 86 55 60 83 93 14 82 19 71 68 39 69 32 2 31 113 | Card 113: 5 57 82 45 37 64 10 67 71 23 | 43 63 80 95 89 93 61 51 77 46 33 4 20 73 18 19 32 59 27 31 74 94 53 42 96 114 | Card 114: 35 61 73 13 29 27 33 98 10 43 | 9 11 25 87 45 63 24 17 1 96 14 86 39 7 99 67 48 26 51 40 76 59 47 52 31 115 | Card 115: 95 3 80 93 63 54 70 37 83 74 | 38 86 66 62 73 28 41 48 8 1 19 53 59 40 47 69 39 6 61 35 25 65 76 16 57 116 | Card 116: 14 17 25 45 9 38 78 48 58 51 | 95 33 43 77 10 64 72 21 60 98 26 70 96 68 44 85 97 75 28 16 22 80 7 46 34 117 | Card 117: 73 50 33 92 91 11 13 64 66 16 | 44 73 91 26 15 49 80 34 92 65 21 16 64 66 84 33 77 13 30 11 59 2 19 51 50 118 | Card 118: 97 77 94 41 44 9 22 2 53 48 | 9 76 46 88 78 41 22 94 92 4 58 59 53 15 77 48 20 42 97 2 44 75 69 32 36 119 | Card 119: 70 74 16 31 68 88 67 59 69 29 | 45 68 7 22 43 98 19 67 63 74 2 31 47 64 44 82 50 16 73 93 59 34 29 71 35 120 | Card 120: 3 36 60 7 45 18 19 34 55 72 | 9 34 72 40 19 32 16 61 2 63 33 92 93 81 88 7 60 84 18 36 44 45 5 3 55 121 | Card 121: 66 74 61 20 70 40 23 96 54 50 | 33 78 66 59 10 72 74 6 40 61 14 44 95 12 97 19 39 16 38 63 1 8 34 96 2 122 | Card 122: 82 8 40 84 5 42 46 60 21 57 | 14 95 68 94 93 19 41 6 39 25 47 37 12 66 81 50 38 15 71 96 99 13 97 87 53 123 | Card 123: 94 7 83 14 3 57 91 23 41 40 | 2 27 14 7 17 55 89 25 87 72 83 47 21 57 9 99 59 91 98 93 94 41 40 82 3 124 | Card 124: 65 67 23 63 35 97 78 51 18 58 | 52 45 39 35 80 67 21 40 29 64 18 3 38 78 51 23 28 63 8 32 93 97 58 65 61 125 | Card 125: 60 56 25 53 90 11 54 47 98 57 | 45 85 91 40 20 63 48 56 42 75 14 9 90 6 39 54 13 67 25 73 96 89 60 98 10 126 | Card 126: 88 35 60 29 39 27 43 71 50 97 | 69 27 82 48 98 28 14 90 65 81 97 57 45 21 75 94 96 17 54 31 5 22 2 24 26 127 | Card 127: 95 51 20 99 64 57 65 58 40 22 | 51 21 56 72 10 54 73 94 28 14 26 37 65 97 29 20 68 53 5 57 48 2 42 13 23 128 | Card 128: 65 74 76 90 4 36 44 92 68 63 | 19 85 6 44 9 92 37 36 64 76 96 43 79 98 86 39 49 93 71 26 63 99 56 70 16 129 | Card 129: 83 81 21 25 11 10 40 47 6 48 | 91 64 19 28 17 59 62 4 18 54 56 68 43 39 41 74 96 60 97 23 7 15 38 42 2 130 | Card 130: 73 5 17 4 26 85 6 2 75 88 | 55 99 4 73 59 83 2 33 69 93 5 70 51 35 23 91 53 68 45 95 88 15 98 37 96 131 | Card 131: 26 19 22 90 43 46 92 68 98 62 | 71 81 64 73 54 14 21 33 72 26 89 36 58 29 17 57 63 91 24 86 38 66 10 87 4 132 | Card 132: 66 61 98 42 92 11 89 4 12 56 | 7 1 49 57 64 28 94 88 45 5 87 69 62 52 35 40 97 53 21 71 19 83 9 60 77 133 | Card 133: 77 92 46 32 49 88 29 35 37 61 | 1 69 31 74 71 61 40 64 20 77 5 53 70 94 18 2 17 72 82 99 80 67 16 8 41 134 | Card 134: 74 23 3 71 41 13 79 68 64 97 | 78 66 54 75 26 14 36 18 87 3 82 59 4 83 29 6 34 76 32 53 11 57 27 39 42 135 | Card 135: 79 92 41 97 24 76 12 73 70 89 | 53 55 81 9 86 20 98 27 22 18 59 82 26 10 74 31 58 62 75 44 93 68 23 14 83 136 | Card 136: 27 20 15 61 60 79 52 69 18 38 | 23 10 73 55 87 14 17 12 47 80 49 83 35 22 97 84 11 44 78 85 90 45 41 58 2 137 | Card 137: 58 73 71 95 64 91 88 78 31 15 | 67 90 69 86 64 79 38 56 35 73 14 43 91 75 61 96 87 77 53 48 89 88 20 55 82 138 | Card 138: 48 46 63 72 26 91 53 86 27 17 | 52 49 34 13 99 69 1 92 95 80 8 6 74 56 75 37 29 61 93 18 66 97 2 32 60 139 | Card 139: 66 78 41 91 24 96 61 90 21 31 | 74 3 51 31 14 46 15 61 96 54 91 53 27 49 90 92 21 41 97 86 24 78 40 10 66 140 | Card 140: 21 70 50 26 82 4 46 51 22 45 | 99 79 98 58 14 71 88 59 51 45 6 44 18 90 41 24 27 4 12 78 21 26 95 49 20 141 | Card 141: 68 92 49 78 1 31 87 40 67 94 | 29 78 26 96 40 67 94 20 1 27 12 31 87 68 92 35 18 22 81 86 60 49 5 32 99 142 | Card 142: 64 6 96 90 88 27 77 41 72 13 | 41 14 82 46 28 86 84 63 76 75 32 90 13 6 30 77 44 88 27 78 60 79 64 96 70 143 | Card 143: 11 41 77 59 60 80 93 10 94 96 | 80 47 59 40 57 22 98 44 91 38 41 53 62 1 35 27 66 78 21 68 42 34 14 81 60 144 | Card 144: 30 83 21 64 54 33 95 44 61 74 | 34 9 8 14 47 62 82 28 84 68 2 50 66 59 26 64 41 57 70 23 46 88 79 44 95 145 | Card 145: 50 43 99 92 15 9 12 82 88 57 | 43 82 38 98 94 60 11 25 3 52 2 4 49 89 57 88 18 97 68 27 15 70 9 80 99 146 | Card 146: 93 98 19 66 94 17 92 15 69 3 | 62 57 65 69 92 60 44 54 79 42 45 36 19 37 33 81 83 98 94 90 77 3 85 56 87 147 | Card 147: 92 6 22 88 54 76 25 21 3 33 | 39 68 15 63 29 62 97 27 59 14 76 44 56 41 26 90 43 57 73 24 7 52 31 8 53 148 | Card 148: 95 69 83 87 55 43 25 73 39 76 | 39 94 99 77 32 58 53 68 1 72 50 26 38 41 5 37 52 35 67 83 2 69 19 73 93 149 | Card 149: 9 4 2 76 45 6 83 68 66 99 | 38 73 32 31 35 43 12 16 80 98 55 17 82 20 91 19 56 36 33 5 63 65 77 28 40 150 | Card 150: 89 58 46 72 43 40 73 50 85 91 | 96 28 57 24 20 79 42 21 6 47 48 2 41 23 38 54 45 69 26 56 65 99 74 78 4 151 | Card 151: 79 62 74 63 69 93 61 73 76 20 | 99 4 85 43 78 8 83 9 70 77 21 79 2 92 91 35 60 42 38 84 72 66 18 36 56 152 | Card 152: 58 16 29 44 57 30 3 43 62 86 | 93 22 87 38 20 64 26 21 51 63 14 15 61 89 40 96 83 74 10 66 31 69 92 19 18 153 | Card 153: 28 60 76 64 15 55 13 22 56 51 | 17 19 88 15 83 72 49 50 96 6 89 1 78 18 94 29 30 22 79 60 64 13 80 85 38 154 | Card 154: 60 25 91 36 96 75 39 55 30 68 | 97 95 10 68 48 67 55 72 26 77 23 63 35 13 52 64 30 61 15 99 14 46 41 60 39 155 | Card 155: 31 39 17 30 37 74 55 18 93 26 | 95 51 73 15 39 71 99 32 63 10 76 68 14 85 77 31 53 13 46 36 22 43 66 93 19 156 | Card 156: 69 54 99 23 74 95 3 51 6 79 | 6 3 13 10 23 99 92 30 16 69 91 33 51 2 54 95 79 60 49 62 26 74 15 50 70 157 | Card 157: 46 41 69 38 94 4 76 10 59 34 | 41 11 13 2 60 85 6 40 18 38 70 7 5 50 10 14 59 47 69 17 30 84 58 39 45 158 | Card 158: 81 63 68 7 56 88 31 29 30 45 | 19 84 8 7 56 63 70 30 33 24 97 34 48 68 38 49 29 50 18 45 81 95 39 96 1 159 | Card 159: 64 88 6 52 80 55 85 37 68 12 | 78 91 73 35 26 20 94 72 65 54 76 27 42 53 75 12 61 57 40 47 55 29 90 28 60 160 | Card 160: 66 97 98 82 28 80 84 45 87 32 | 1 57 59 76 83 49 89 45 16 26 34 47 55 6 54 92 32 96 72 28 97 87 67 56 29 161 | Card 161: 76 53 82 26 47 84 68 9 90 65 | 4 99 68 55 92 35 62 90 76 75 72 54 80 93 95 69 21 11 8 19 98 83 27 52 61 162 | Card 162: 35 43 90 21 87 48 44 72 45 96 | 26 58 19 17 12 11 88 53 7 39 28 2 51 1 24 83 4 71 90 57 80 87 81 82 41 163 | Card 163: 60 9 42 11 81 76 33 39 63 64 | 18 72 17 61 27 81 89 79 26 4 30 33 91 64 52 31 63 51 40 70 6 45 32 46 5 164 | Card 164: 48 77 13 10 23 93 42 72 16 89 | 8 90 89 17 73 52 60 54 4 12 95 62 67 69 55 66 56 65 59 21 22 43 26 97 31 165 | Card 165: 81 16 32 54 95 35 41 12 37 57 | 26 27 2 23 56 69 7 55 88 50 84 11 47 25 3 43 8 72 31 44 64 82 75 22 57 166 | Card 166: 10 89 46 37 68 42 55 6 92 35 | 8 43 75 73 94 89 63 20 51 54 87 98 74 78 47 31 34 18 32 60 38 50 69 3 41 167 | Card 167: 81 7 4 48 36 26 11 51 16 86 | 19 60 92 52 95 58 99 61 98 57 30 82 13 89 6 40 32 8 24 79 39 84 68 43 72 168 | Card 168: 52 34 59 72 63 57 36 3 30 11 | 57 1 30 93 96 52 26 11 14 49 48 36 72 59 92 3 63 91 46 60 34 94 22 19 9 169 | Card 169: 9 27 82 11 50 43 68 74 83 77 | 77 94 45 48 56 82 63 49 41 31 96 32 50 13 9 83 43 99 27 74 55 68 87 11 54 170 | Card 170: 67 66 11 9 63 75 25 19 13 60 | 87 93 29 85 60 27 33 75 61 99 19 66 74 53 24 82 11 25 7 47 77 67 9 63 13 171 | Card 171: 86 42 30 87 31 74 40 71 10 20 | 27 18 24 42 86 10 71 97 37 12 57 30 76 3 94 65 7 96 4 67 69 58 9 62 48 172 | Card 172: 46 19 33 70 75 88 3 56 8 21 | 13 88 56 70 8 12 41 87 19 49 42 62 78 26 34 11 35 52 85 6 3 7 58 37 46 173 | Card 173: 80 70 56 30 85 13 94 90 40 36 | 40 85 58 74 70 57 80 25 30 94 36 73 50 92 5 78 29 3 32 13 35 90 56 71 41 174 | Card 174: 77 50 5 80 69 65 27 17 86 3 | 32 37 25 67 56 86 50 19 41 45 64 1 38 70 63 66 47 78 92 23 54 65 95 8 87 175 | Card 175: 95 2 77 74 71 94 60 96 34 61 | 5 60 34 76 35 19 47 52 82 29 75 62 70 14 12 24 55 49 30 15 71 86 91 90 27 176 | Card 176: 8 99 42 72 81 60 55 51 40 6 | 81 8 6 26 62 22 3 73 68 85 48 42 93 15 20 99 87 97 72 67 60 36 46 55 78 177 | Card 177: 18 29 85 81 21 73 34 38 6 50 | 38 49 44 62 89 45 24 86 83 98 35 13 85 67 73 91 39 64 1 96 8 54 50 34 25 178 | Card 178: 69 57 27 80 68 95 19 30 71 63 | 68 19 80 34 56 30 3 27 94 85 99 69 78 14 62 10 63 44 59 8 51 95 9 57 71 179 | Card 179: 98 68 77 57 28 14 49 20 23 32 | 14 23 48 32 69 77 28 72 21 24 89 80 53 57 68 99 52 79 27 31 20 62 29 87 7 180 | Card 180: 84 48 77 15 73 99 80 56 81 25 | 58 27 3 55 28 37 65 70 57 44 89 15 81 90 42 48 54 39 26 25 6 88 93 12 95 181 | Card 181: 90 18 43 93 74 58 64 26 19 60 | 62 39 74 26 22 75 58 18 72 71 36 30 23 10 43 91 68 19 67 56 60 96 31 79 99 182 | Card 182: 42 64 24 74 23 67 35 57 9 92 | 56 62 33 65 57 9 43 10 20 32 61 39 99 97 24 21 75 52 86 68 55 74 84 88 47 183 | Card 183: 3 81 51 41 70 94 28 69 1 98 | 91 67 31 3 48 42 69 47 20 19 78 55 7 70 6 13 56 96 32 92 68 75 60 73 1 184 | Card 184: 68 41 58 60 79 44 36 35 93 88 | 14 97 20 65 12 82 17 63 48 10 37 72 11 98 58 81 56 87 99 83 59 61 80 8 52 185 | Card 185: 6 48 27 60 13 5 36 25 78 95 | 53 22 98 75 60 24 27 55 69 34 41 82 1 17 19 35 78 91 81 37 32 21 5 15 3 186 | Card 186: 22 31 70 64 72 11 48 63 94 95 | 43 10 45 61 99 86 51 37 81 34 24 60 31 67 30 74 55 42 52 19 73 82 96 32 83 187 | Card 187: 24 19 70 82 52 64 8 86 23 54 | 92 14 11 7 13 67 26 86 72 62 50 94 40 52 48 33 49 96 68 29 30 1 73 88 41 188 | Card 188: 32 86 69 20 23 64 67 78 46 61 | 81 94 62 47 72 48 16 83 93 64 8 21 37 41 51 13 50 58 92 11 1 98 74 39 76 189 | Card 189: 70 29 33 24 9 10 48 42 60 65 | 26 92 27 76 90 1 37 78 35 66 20 43 45 99 7 87 32 83 67 52 58 15 94 63 89 -------------------------------------------------------------------------------- /day-04/test.txt: -------------------------------------------------------------------------------- 1 | Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 2 | Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 3 | Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 4 | Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 5 | Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 6 | Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11 -------------------------------------------------------------------------------- /day-05/1.py: -------------------------------------------------------------------------------- 1 | with open(0) as f: 2 | lines = f.read().split("\n\n") 3 | maps = lines[1::] 4 | seeds = list(map(int, lines[0].split(":")[1].strip().split())) 5 | 6 | temp = seeds 7 | min_l = 0 8 | 9 | for m in maps: 10 | ranges = [] 11 | 12 | for line in m.split("\n")[1::]: 13 | ranges.append(list(map(int, line.split()))) 14 | # print(ranges) 15 | 16 | dest = [] 17 | 18 | for s in temp: 19 | for x, y, z in ranges: 20 | if s in range(y, y + z): 21 | dest.append(x + (s - y)) 22 | break 23 | else: 24 | dest.append(s) 25 | 26 | min_l = min(dest) 27 | temp = dest 28 | 29 | print(min_l) -------------------------------------------------------------------------------- /day-05/2.py: -------------------------------------------------------------------------------- 1 | with open(0) as f: 2 | lines = f.read().split("\n\n") 3 | maps = lines[1::] 4 | x = list(map(int, lines[0].split(":")[1].strip().split())) 5 | seeds = [] 6 | 7 | for i in range(0, len(x), 2): 8 | seeds.append([x[i], x[i] + x[i + 1]]) 9 | 10 | temp = seeds 11 | min_l = 0 12 | 13 | for m in maps: 14 | ranges = [] 15 | 16 | for line in m.split("\n")[1::]: 17 | ranges.append(list(map(int, line.split()))) 18 | 19 | dest = [] 20 | 21 | while len(temp) > 0: 22 | fst, lst = temp.pop() 23 | for x, y, z in ranges: 24 | f = max(fst, y) 25 | l = min(lst, y + z) 26 | if f < l: 27 | dest.append([f - y + x, l - y + x]) 28 | if f > fst: 29 | temp.append([fst, f]) 30 | if lst > l: 31 | temp.append([l, lst]) 32 | break 33 | else: 34 | dest.append([fst, lst]) 35 | 36 | min_l = min(dest)[0] 37 | temp = dest 38 | 39 | print(min_l) -------------------------------------------------------------------------------- /day-05/in.txt: -------------------------------------------------------------------------------- 1 | seeds: 4188359137 37519573 3736161691 172346126 2590035450 66446591 209124047 106578880 1404892542 30069991 3014689843 117426545 2169439765 226325492 1511958436 177344330 1822605035 51025110 382778843 823998526 2 | 3 | seed-to-soil map: 4 | 1014943420 3864598346 36796924 5 | 3481858860 1134944893 176050938 6 | 1463359964 377309295 172917932 7 | 1909673912 2511534001 114785858 8 | 3472030089 1310995831 9828771 9 | 188280292 3055921442 55776498 10 | 352078282 1410745074 662865138 11 | 1436499332 3759669547 26860632 12 | 281816159 550227227 70262123 13 | 2940933503 180112079 197197216 14 | 3314718477 977633281 157311612 15 | 3269652387 3354932755 45066090 16 | 3138688421 4164003330 130963966 17 | 3689427547 3407181792 70304018 18 | 2673867052 3901395270 21291616 19 | 3881132258 2371714487 139819514 20 | 180112079 3751501334 8168213 21 | 2471524173 3399998845 7182947 22 | 244056790 3826838977 37759369 23 | 2330362750 620489350 141161423 24 | 1730119344 3786530179 40308798 25 | 1770428142 4040990485 122455143 26 | 1892883285 4024199858 16790627 27 | 3657909798 2340196738 31517749 28 | 1365072738 2268770144 71426594 29 | 1636277896 3930358410 93841448 30 | 1173574466 2626319859 183826748 31 | 3871069976 3233532062 10062282 32 | 3138130719 4163445628 557702 33 | 3759731565 3243594344 111338411 34 | 1357401214 3922686886 7671524 35 | 2478707120 2073610212 195159932 36 | 2695158668 2810146607 245774835 37 | 1051740344 3111697940 121834122 38 | 2024459770 761650773 215982508 39 | 2240442278 1320824602 89920472 40 | 4020951772 3477485810 274015524 41 | 42 | soil-to-fertilizer map: 43 | 3211509025 2411974869 518394 44 | 3778955089 2412493263 120143427 45 | 1387254723 3589309701 265617279 46 | 3899098516 3906385182 120055953 47 | 1714049028 3209939839 261248850 48 | 3687768172 2393589437 18385432 49 | 554325135 488411873 327969675 50 | 2579624415 1520719313 60457941 51 | 4019154469 1244906486 275812827 52 | 65913262 0 488411873 53 | 1244906486 2362023384 31566053 54 | 2251369843 4026441135 268526161 55 | 0 826989738 65913262 56 | 3737515035 2233559302 41440054 57 | 1975297878 2563998121 276071965 58 | 3606812793 2152603923 80955379 59 | 3706153604 2532636690 31361431 60 | 1327930741 2336176382 25847002 61 | 3262441387 2840070086 276664362 62 | 1353777743 3176462859 33476980 63 | 1007455475 962102883 213088648 64 | 3212027419 3538895733 50413968 65 | 2519896004 3116734448 59728411 66 | 938255592 892903000 69199883 67 | 3539105749 3471188689 67707044 68 | 2640082356 1581177254 571426669 69 | 927647402 816381548 10608190 70 | 882294810 1175191531 45352592 71 | 1652872002 2274999356 61177026 72 | 1276472539 3854926980 51458202 73 | 74 | fertilizer-to-water map: 75 | 3919934952 4034286493 116558226 76 | 3104838986 886102234 15848522 77 | 151486725 1109841455 112301087 78 | 38656834 2035810690 62773281 79 | 1106567462 3087125934 135164894 80 | 1010741746 2114463748 17027276 81 | 1428501666 0 69192244 82 | 1241732356 699332924 186769310 83 | 728534624 1829633882 45432965 84 | 465497393 318840419 263037231 85 | 263787812 69192244 201709581 86 | 1750247416 2131491024 226195640 87 | 3103410010 1396336613 1428976 88 | 1541007057 2541565636 209240359 89 | 2557596892 1222142542 146760701 90 | 3810606692 4150844719 109328260 91 | 1497693910 2098583971 15879777 92 | 2027240691 1925694260 110116430 93 | 3120687508 1664856712 30800728 94 | 2919531038 2357686664 183878972 95 | 2271333563 2800862605 286263329 96 | 0 660676090 38656834 97 | 121820432 2771196312 29666293 98 | 773967589 1428082555 236774157 99 | 2137357121 1695657440 133976442 100 | 2704357593 270901825 47938594 101 | 2782613153 952748391 136917885 102 | 4200808114 3619712494 94159182 103 | 1513573687 1368903243 27433370 104 | 3151488236 1875066847 50627413 105 | 4036493178 4260172979 34794317 106 | 1027769022 581877650 78798440 107 | 3202115649 1089666276 20175179 108 | 4071287495 3713871676 33593925 109 | 1976443056 901950756 50797635 110 | 2752296187 1397765589 30316966 111 | 101430115 2750805995 20390317 112 | 4104881420 3523785800 95926694 113 | 3523785800 3747465601 286820892 114 | 115 | water-to-light map: 116 | 3408155249 2527370950 73535457 117 | 1697763259 1358503385 195569028 118 | 4146691798 4150439777 2978835 119 | 1667104621 3141702962 30658638 120 | 3109198454 2600906407 225322957 121 | 2896907826 3481425874 212290628 122 | 3568598531 1256359145 28510402 123 | 1021594560 3172361600 54292616 124 | 2709047387 0 23043868 125 | 634713149 1912815102 64867237 126 | 2732091255 3693716502 115595269 127 | 4005143114 4153418612 141548684 128 | 1341220299 1554072413 325884322 129 | 3514549073 2826229364 54049458 130 | 1113545862 2299696513 227674437 131 | 3481690706 1879956735 32858367 132 | 379941491 3226654216 254771658 133 | 4149670633 4005143114 145296663 134 | 699580386 1977682339 322014174 135 | 2847686524 2880278822 49221302 136 | 1075887176 23043868 37658686 137 | 3334521411 1284869547 73633838 138 | 3597108933 2929500124 212202838 139 | 1893332287 440644045 815715100 140 | 0 60702554 379941491 141 | 142 | light-to-temperature map: 143 | 3239555722 2588818955 376881377 144 | 413170934 1615450109 438931580 145 | 1386539780 3880234113 95792562 146 | 3901352290 2965700332 122376625 147 | 2415511159 396206595 236868242 148 | 396206595 3092807515 16964339 149 | 2652379401 633074837 587176321 150 | 1998109231 1220251158 178061188 151 | 2176170419 3109771854 239340740 152 | 852102514 2054381689 534437266 153 | 1806003521 3349112594 192105710 154 | 1487062900 3976026675 318940621 155 | 1482332342 3088076957 4730558 156 | 3616437099 3687776838 138356657 157 | 3754793756 3541218304 146558534 158 | 4077829533 1398312346 217137763 159 | 4023728915 3826133495 54100618 160 | 161 | temperature-to-humidity map: 162 | 2477444013 1065021126 6182773 163 | 845330217 1308005650 445611689 164 | 1290941906 3378900568 76961272 165 | 2975821403 1792935684 125881029 166 | 2161173272 2394771508 172817491 167 | 2483626786 3710234886 492194617 168 | 3447920062 2383111679 11659829 169 | 4033768577 1918816713 94002198 170 | 3319210784 3455861840 27565379 171 | 1373852246 1071203899 92358857 172 | 3101702432 845330217 174648768 173 | 2026258159 2567588999 134915113 174 | 1799450492 3483427219 226807667 175 | 3552117684 3041692569 337207999 176 | 3889325683 1163562756 144442894 177 | 3346776163 2047917336 101143899 178 | 3459579891 4202429503 92537793 179 | 0 348737431 60744241 180 | 1367903178 2829658946 5949068 181 | 1466211103 2702504112 127154834 182 | 1764704299 2835608014 34746193 183 | 60744241 322208375 20457270 184 | 1593365937 2870354207 171338362 185 | 81201511 342665645 6071786 186 | 4255648951 1753617339 39318345 187 | 2442345588 2012818911 35098425 188 | 2333990763 2231897270 108354825 189 | 87273297 0 322208375 190 | 4210606810 1019978985 45042141 191 | 3276351200 2340252095 42859584 192 | 4127770775 2149061235 82836035 193 | 194 | humidity-to-location map: 195 | 4164635022 1854717524 130332274 196 | 1293632444 529805154 119897086 197 | 2886189584 4227662016 67305280 198 | 2977935483 447338344 82466810 199 | 1796689277 771172820 2500486 200 | 3592167651 2376391709 149158288 201 | 85140393 196642481 8447522 202 | 1799189763 1985049798 97611367 203 | 93587915 82281848 114360633 204 | 1191989560 4020597507 76356570 205 | 2953494864 3996156888 24440619 206 | 2292169251 649702240 113196341 207 | 3741325939 3311723608 237145571 208 | 3978471510 3948521384 47635504 209 | 2457376544 762898581 6077326 210 | 1413529530 768975907 2196913 211 | 1268346130 3923235070 25286314 212 | 4064092089 3749326886 100542933 213 | 2463453870 3849869819 73365251 214 | 2858545 0 82281848 215 | 4026107014 4166840403 37985075 216 | 3060402293 223340676 11429685 217 | 0 205090003 2858545 218 | 3071831978 1031969734 125782276 219 | 895745297 2082661165 83676280 220 | 513318799 1318499280 382426498 221 | 2536819121 3548869179 86842399 222 | 2405365592 1157752010 52010952 223 | 2086131564 3105685921 206037687 224 | 1972516256 3635711578 113615308 225 | 3197614254 2921186788 184499133 226 | 3382113387 2166337445 210054264 227 | 383000830 933333460 37595105 228 | 2777453266 1209762962 108736318 229 | 443432473 4096954077 69886326 230 | 1461500584 2540223954 335188693 231 | 1415726443 2875412647 45774141 232 | 420595935 4204825478 22836538 233 | 979421577 234770361 212567983 234 | 223340676 773673306 159660154 235 | 1911475087 970928565 61041169 236 | 1896801130 2525549997 14673957 237 | 2623661520 1700925778 153791746 -------------------------------------------------------------------------------- /day-05/test.txt: -------------------------------------------------------------------------------- 1 | seeds: 79 14 55 13 2 | 3 | seed-to-soil map: 4 | 50 98 2 5 | 52 50 48 6 | 7 | soil-to-fertilizer map: 8 | 0 15 37 9 | 37 52 2 10 | 39 0 15 11 | 12 | fertilizer-to-water map: 13 | 49 53 8 14 | 0 11 42 15 | 42 0 7 16 | 57 7 4 17 | 18 | water-to-light map: 19 | 88 18 7 20 | 18 25 70 21 | 22 | light-to-temperature map: 23 | 45 77 23 24 | 81 45 19 25 | 68 64 13 26 | 27 | temperature-to-humidity map: 28 | 0 69 1 29 | 1 0 69 30 | 31 | humidity-to-location map: 32 | 60 56 37 33 | 56 93 4 -------------------------------------------------------------------------------- /day-06/1.py: -------------------------------------------------------------------------------- 1 | with open(0) as f: 2 | lines = f.readlines() 3 | times = list(map(int, lines[0].split()[1::])) 4 | distances = list(map(int, lines[1].split()[1::])) 5 | ways = [sum(1 for hold in range(t) if hold * (t - hold) > d) for t, d in zip(times, distances)] 6 | r = 1 7 | for w in ways: 8 | r *= w 9 | 10 | print(r) -------------------------------------------------------------------------------- /day-06/2.py: -------------------------------------------------------------------------------- 1 | with open(0) as f: 2 | lines = f.readlines() 3 | times = [int("".join(lines[0].split()[1::]))] 4 | distances = [int("".join(lines[1].split()[1::]))] 5 | ways = [sum(1 for hold in range(t) if hold * (t - hold) > d) for t, d in zip(times, distances)] 6 | r = 1 7 | for w in ways: 8 | r *= w 9 | 10 | print(r) -------------------------------------------------------------------------------- /day-06/in.txt: -------------------------------------------------------------------------------- 1 | Time: 47 98 66 98 2 | Distance: 400 1213 1011 1540 -------------------------------------------------------------------------------- /day-06/test.txt: -------------------------------------------------------------------------------- 1 | Time: 7 15 30 2 | Distance: 9 40 200 --------------------------------------------------------------------------------