aoc

Advent of code
git clone https://codeberg.org/night0721/aoc
Log | Files | Refs

commit 67f21dffe7f1ecc452440b9b82ef27fa0a6b2be3
Author: night0721 <[email protected]>
Date:   Sat,  2 Dec 2023 16:34:09 +0000

Initial commit

Diffstat:
A2023/1/1.c | 34++++++++++++++++++++++++++++++++++
A2023/1/2.c | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2023/1/input | 1000+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2023/2/1.py | 25+++++++++++++++++++++++++
A2023/2/2.py | 27+++++++++++++++++++++++++++
A2023/2/input | 100+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 1259 insertions(+), 0 deletions(-)

diff --git a/2023/1/1.c b/2023/1/1.c @@ -0,0 +1,34 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +int main() { + FILE *inputfile = fopen("./input", "r"); + char line[100] = { 0 }; + int sum = 0; + size_t len = 0; + ssize_t read; + if (inputfile == NULL) { + printf("Input file not found. Exiting."); + exit(1); + } + while (fgets(line, 100, inputfile)) { + int length = strlen(line); + char *concat = malloc(sizeof(char) * length); + for (int i = 0; i < length - 1; i++) { + int currentChar = (int) line[i]; + if (currentChar >= 49 && currentChar <= 57) { + int len = strlen(concat); + concat[len] = line[i]; + } + } + concat[strlen(concat)] = '\0'; + char trimmed[3] = { 0 }; + trimmed[0] = concat[0]; + trimmed[1] = concat[strlen(concat) - 1]; + trimmed[2] = '\0'; + sum += atoi(trimmed); + } + fclose(inputfile); + printf("Sum: %d\n", sum); +} diff --git a/2023/1/2.c b/2023/1/2.c @@ -0,0 +1,73 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +typedef struct { + char *name; + char* value; +} number; + +void replace(char *target, const char *needle, const char *replacement) +{ + char buffer[1024] = { 0 }; + char *insert_point = &buffer[0]; + const char *tmp = target; + size_t needle_len = strlen(needle); + size_t repl_len = strlen(replacement); + while (1) { + const char *p = strstr(tmp, needle); + if (p == NULL) { // walked past last occurrence of needle; copy remaining part + strcpy(insert_point, tmp); + break; + } + memcpy(insert_point, tmp, p - tmp); // copy part before needle + insert_point += p - tmp; + memcpy(insert_point, replacement, repl_len); // copy replacement string + insert_point += repl_len; + tmp = p + needle_len; + } + strcpy(target, buffer); +} + +int main() { + FILE *inputfile = fopen("./input", "r"); + char *line = malloc(sizeof(char) * 100); + number numbers[9]; + char *names[9] = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; + char *values[9] = { "on1e", "tw2o", "th3ree", "fo4ur", "fi5ve", "si6x", "se7ven", "ei8ght", "ni9ne" }; + for (int k = 0; k < 9; k++) { + numbers[k].name = names[k]; + numbers[k].value = values[k]; + } + int sum = 0; + size_t len = 0; + ssize_t read; + if (inputfile == NULL) { + printf("Input file not found. Exiting."); + exit(1); + } + while (fgets(line, 100, inputfile)) { + int length = strlen(line); + char *cpline = malloc(sizeof(char) * 1024); + strcpy(cpline, line); + for (int i = 0; i < 9; i++) { + char *name = numbers[i].name; + + char *value = numbers[i].value; + replace(cpline, name, value); + } + char *concat = malloc(sizeof(char) * strlen(cpline)); + for (int j = 0; j < strlen(cpline) - 1; j++) { + int currentChar = (int) cpline[j]; + if (currentChar >= '0' && currentChar <= '9') { + concat[strlen(concat)] = cpline[j]; + } + } + char trimmed[3] = { 0 }; + trimmed[0] = concat[0]; + trimmed[1] = concat[strlen(concat) - 1]; + sum += atoi(trimmed); + } + fclose(inputfile); + printf("%d\n", sum); +} diff --git a/2023/1/input b/2023/1/input @@ -0,0 +1,1000 @@ +four9one +bbzhsmnmtf8kftwosevenxfkssgrcjthree +6pkkcddsixsixjgnjvdtjtwo +4four45seven7nine7two +rcssix4 +thfjtb56c +kkdhmmvvmthreezxqzqmb4khprbldcr +65bnhfgcgfxgqflblvjdhhtvzpfoureightfive +8eightvdj +h61gjgfhrgndb725 +7rzm2five +9167ddtxjpxb6 +4nine36knlfjmdgfourdmczsxv +ljnff279 +nineeightsixzsfiveseven1jqnxbhhd +jptwoeight6fourfrbpgsmkgl +znfqfjcspf8md +sixthree7qzj +39cfncbzj48two2 +52eight9fivefivesix +26nine +fsgpvxpqtk2eightlvb1ninebflbsskdbthztgvcl +twoone7ndjxttt +bpvbv5nzhsfg +onethree1kxcxzmvmkxjmtwosix +2prfceightdvcjnhzt3lmzfdnvxjgsix1 +ninefivegnsk5cz2sevenblfmtpqcfr +sixrninehnfggfbxrjm7five +qrlmkxckhfournfbfkgdzfqrztjs116 +3cf4kbkclqfourseven4 +ncqt3523two +fivevhbfndcqcbthreemg4six +7sixfb6 +sixfourmqqgmbxdgznkdbzdszc9 +3prcphmzcmt12 +fourznt9mk +twotwotdnbbbczxv8four +12fnqfsevensix +seven96 +6three6s5 +sixtqqszg6fourzbjhkvlkmnkdztq +two3bqnbxbvhspk +flcqsevenlgvtnvnctpfjvrlg65dkdbjn9 +threexnddmsxfmtwo31 +four498 +eight5one43nmkxdseight5 +1knmbd6 +8mxvjtthreelcfbhqfxjdvcpfiveonenine +641ppmssronechd +jzhhftmnnpgqcxjffourfnpssgmg6seveneightkvhnnmzv +5nddhls +fsc7kv41 +pqkmmdb96dcvrbtmtnfour4mcthkfvrf +fbnndk1twosix4 +sevennine7eightpmlxqprzvjone +lfftbhbtctplbpgn4 +31fivemlnrxfh6one3 +5fmrtkgj92pdvcgtxj +6pjfz9twofive1bfdseven +twotjrtlzflrhlgmmjssbcdtpkm3six5 +four69kdmtz3sixfive4 +twofrxqnljztltzvzzsp1575one +mhsrfclpqeightfive3grklzhlklxoneonetwo +3eightmjvfpstx64six +5fourmrmcn +ninelnqjlb1csjdnf +fmklqlxrh9vsbhpmbrd7621seven +twosevenone3six4tdltwo +9sevenfour +two6sevennine27three78 +mtjfmrjdcmsix9 +mpxksevenj4nrmjgc3 +xllmc4ld9 +jdrtnineeightthreexxklsbmseveneight9 +xmkfpfjhlpdbthreenfmcphvtjpseven28 +9fivenine +vqzlbthreezgjsp3kqlhsxjhmbztgn +pnm564v8seven +fltwone3twocdzlqmbqc7pjtxnine16 +gjcfsftcfivesix141 +cgxnbhk66eighttwofour +x1km2 +ldsxsvpnncxtwonine84sixrrrmvthree +mzrrlrjtqsixdgccvbxnpnspbccmhk6n +7t8fiverntkppnine +8dkbgh8 +73twodvndkl +8nnhbbrlh83ttxctrqd6 +5ninefive +eightnine496sdqcxrfms5pksrpq +6two6threeeightwott +2184threethree3four +3fourninefourjjtqrng +qhbjcm1seven +djpjfcjjkpcl15sixone85 +stptwoprjsix5sixseven +qpxbvxxnbeightsix9 +sevenktjmbtwo4 +vbpz46two3 +8five3foursix +47ztcbvfhrgnineseveneight67 +nineptnqrcjggnfour1 +16six38mrglvdmpnine2 +992fourtwo +zftdjcmh3fivembvs6eightthreesix6 +5gnlpfdqtlsccmtzbchjqbjjjsevensix +fiveseventhree4two +pkkrfhtwoztblseventjvqpg15 +s2 +98652cksvxdsbone5 +6dsnhqmkxmgrpp7nineeight4mnn +eightscjzjbzxrgxnldqlgqmdb7xnbxlnsevendcpvvf +threesthreefgkrtkvdl55chnmjbddlhddh +kdxgccsdrhone19947kbfvkqgccbkl +ninenlqcxpzdsf36three +422xpmfxjqrb +5796 +521seven9fourl1 +82four +ghnqeight75ninefive +twohqcrnd9two +prblcqjxmm3fouronevbrgslrxchgfvrxcd3 +8onesix9rmszglspgjthcntmmlqk +ffjqtrjtdftwosix5zc5six5 +fourthree4ks8 +6mblzskfhgcfn +fkp524 +gsix849jhtwo +fourfournnpgzleight6eightcnlgfcvvsevennine +p5 +jcmdcbqzsvzvkzgfrdnj65gpvdpxl72one +vhsnjtm9lxmdkhhkrlcssrdh63 +shoneightmnxnkgthree3 +2five8dgzqgrjzrh9eightfrqthree +jh2mmsdtzktkgoneeightonefive2nine +39eight34sgxvpgkmeight4 +sixlkr8threejfghvl2five9 +v5 +48sevenonesixglgteightsevenfive +two34 +37 +9fourtwo928jkdcsfdfivekfr +hfsfseven4 +nine3sevenqnkc6tqphlrmsnvsnt +hfpgk5bnjpnmfour6lpsmm2 +tmrx31fiveseven1bgvfnpr5 +two8sixfourfiveninetwo +fbpclsfivesixthree7 +l9seveneightgfive +jqnbtxj15 +qqdsff8467five +2fivetwooneczckldrdcmvlhxnqcxddzmthree +three39four3 +5sevensznnrkfldnppzgf +5fgrrmh1eightthreedpdfourfour +two9onengbsmhl +qeightrrj8 +fiveqvsrrxmjbxs2 +63354ninem +4pkhvqnzsix21xlxbks4fiverllxqjkcqg +ktrfour17nine92 +3sixsevensz +six5bqprcccgx68gflmfivegkkmqghp +twothreefivecnmlkzseven9xfqscvpc +five7csjkxtflf9ldbblfive5 +seven518sixnine4 +rgqbzngcvgfivesix257 +sjllqnfs5cjffivetcczglbqqxxncs +6tsghfivecjb +xgpkxl2six3fbxpzlj2sixfjqt +onexmdkzjqbthtbgtnnine6threelsixchlxmnc +ninenine2sevenkjxtrbk +nine531one4mpgznfsdl14 +9fourjlvdhvmlxtfknbpzbbcmgncqb +62mztmjgninesixeight +eight1oneqzqvsxvc3pkqr +529 +one1sixeighteight1npsevensix +twoninethree8two +lfoneight4 +one7jkqghfrssxninepfkhdzxqtsevenrbvscsffzkseven9 +lkcggvk26seveneight +1d11threeeight +3ninetwostmtwo +fourthreelhbgtvjst3lfmkrseven8three +72sixb5lvtmqrlss +threenvpxcsmxjqtqrbctvppfhrhgtvsv55 +cgsmqsixonevsvttj2rp8zfbkkfvsix +clsjmsbrvxcfkjf6threeeighttwofive +sevenxcjtsjslfrzxnkntfddninethreefour96 +3eight272ninemjssdblfour +4trbfmdbfqz +5five92437btbsqlzhjbml +9five3six +13six4mbjgchbpcchfivemgzpll +pslhgzgfzfzskdckpsxxftmljbxpxsix5fivethree1 +nzcdvfqzlbsdbkbkr2eightztgzm +three1seven41twosixpg +eightvjtvnzthreevdfourlgfq1 +dctbzcnllsdqxknvxnczpfjrx1eighteightjdksrpseven +4pgcmgd +2rqsix6 +eightonedgj9 +one6prgdcz9 +5vvlxrhtdtwoneq +vnxmtdtwo9threerhvrbfhllh +83qkvdggrltnine7gqmhlbonetf +sevenkk9two3 +seven3dvbl +6lklcq +one48dhgprcl5bsn +sixfour7gsmfive4mpslhbsg1seventwoneg +hmjkrrprr4eight2sixtwo +222 +nine1tscmztpxjbzjfm +nteightwosix5pnvnfxmn34onexhlcj +nine3rnsqrc +fivenmtbcpv3lfmddskrmh3 +qfour9ftxbsgl4zrcxjphpdtfivefive5 +drksixbkkgfjq3chnsc +5lrtmbnjone61 +xt2fiveeight63nsnpsix +63onerrpeightsevenfive87 +pccvdpml7sevensix4 +4vgsbfgsqfivebxhsscsjmseven9 +kxbdbz9gbkoneone +eightnine5616mkrfive +4two6dxbhbkfivesix +1fnlnm5 +1lvjskxjqthree +4vqchvclmxjfourseven1seven7 +nqkftljdnine6five7msjktkjpc2dqfkxffive +sixthreenineeighteight9ldbjkbtwohprspl +sevenptqrzckkc824 +8eightljnbhs +seven1plssbsfst53fnnine7two +4ninefivenrhbzr +2seven8dmblvb7 +cjhdnklghxkbln1lxpklfg +mqb9 +fourthree72zxbnvnmthreeeightsevennj +fourhqkjzbhxncj21sevenfhvj2 +6fivem1kxmlrsr25 +eight3xhcrzv2 +9tjfbrqcxlfivexljvhdclgeight +scnldbgone25 +1fiveqzgnkhbfjeight84nine2lqsfltq +gh9 +bgnqcpf7oneninezvtppnx +dzkbtnzhdf8cbkhvbmvctqmseven3 +7168d63ffgdbtq +vcpzgzgmpnone59 +threerkkljpxk2frn +6txtrc4gbsjctkvdzsixgfeighteight +five767dvjmrfgksx8threeseven +5xkqkjfjgksflfcqrgrhmfxflscsxsrdhxgpfivetxgpzzlfzj1 +pdhgxrprllptt4grbqthree +7jcfcggtqhmthfhbfflxpxvhfkzlmk9dmkkptt +onefvhpvsnvhc7eight38two3 +hhhklssktl7 +mmjtwo1qsnhklfmsj34qsix +qtnml3cvkxdzps2xlkkqr +3four84eightfr9 +fivetzr5cjphldseventhree7dlpfjgrzlxbsp +onemfbkvqjf9zjb +kdeightwonine67vpsrkskqzdrqzsnhtlg +cffrmzq4pqhmqszhrmfourthreeseven +onesixdzskhfk5fourf9vdnrthvsgj +lk297onesixrsqxfzbxkzlqzsh +7tdhclszrfiverncbkg6sixseventwoseven +fournine473 +79two +m33 +fiveseven3seven +8pjfjhczrhmjqeight1q +1eightfone73one1nine +one96nine +hxp1 +twohrxxsxn5sddmfiveeighttwo +5scfnine +lrtfjckqxbsixtcdlbpcvk9bzjpmxrtf +one24twofmtptbtkb8ninedgdkht +lkcmjplnmsgvppdj2hbld8five9eight +24twohrbmznkpjvsixeightsevenfour7 +hdmsddfzcpk2cxvssqszgnlnnzhnxfourrjmmsvvfhnbh +gbnvjxhnseven7mtxspmbzxfivefour +fivexgfk7gvtdhbxmlrmmlcfhkt +59one62ktbvcvh +tdsplthreeninelqgblffvvxxqbzt7z +kxsncninefive7vhjgzms +47sixztddvhdg9ndsix +59foursevenlhstfour6nfcmmtmnhf +7rxv1gbfmlkjgqqgnsixfournine +9threeqtthlzktpsp +stqsixthreejhhtgrthdxxvd5zmhxtczn +xjeightsixfxkqtmbkmg1trgbxkcfour +hcgzkblceighttwozmcpbmfpnck9bnineeightwoml +rksvnrz926 +qtvqdjfpllfourfiveoneeight6 +nineeight6six +sevenfournine4 +seven78569tbqsixtwonegs +mnphqplqcone9fivefour +4sevenzlonekfqjlznshbnone1 +cxncdtsbeightfour1tkfrqpffour +qbjdcg5fivefive5cljnlm +rqcvltskbd5tsftldxvsdtconekhpkkxmzt9 +bggdtwokdjnbvzlltpdsix94fb +1twocgqfzqxz +vn3 +scsprhdlngkldcvpndnxfour1sevenqpsvtpf +7tjngkcsgkdeightzld3 +szgtdtdntonefournine4 +5twovxmrnh615eight1six +4fourxmdcrxlzvfive +zsljdjhqhffour1tpzronefive9nvvpnvtd +sevenone2threethreekpkcmcx12 +qfgkxthreeccgbmkmhkrvqcfnine792 +l8 +nxxjzxtlqpvgvbrpdlgdx2cvm8twofiveeight +93jhshjrkqg4gxldkfour1nine +6three9four +2sevengqrndvxn79six +5pglrsbjeight3threeeight +fourhjrxhpt17threetwo +one8sevendbtgjj +8two23xmhjbmvqj +ftwonine32dlntmfive +fcmqrpxjjgpcr79vnj +tmckzseventdtgmtnnvztpvrone91five +sixone3 +6onegjmgqmhrszhplpvrv +eightcqkr869fivesix +seveneightnine7threethreeljmgsfl2tpqxgsx +63threeseven +onetmgjzjzb1rmnmssix +gcbhhttn8seven5pstttjhdbxnmjr5 +85mpmvntfk1sqzgxrjpfd7 +onethree3fourtfonefive7six +1two2ltnfive94one +fourfivefiveninenfzrrgh94 +two54mkstwo1ninezhrvsix +jdpnptxghs8 +xdbsdttwo4cjlkrzfkqsmmbpdfh +one1p1 +8jvxplsts2zmlmfczplv2 +pbgccdhchr6xdqljs +tqxnrsvthreenfsrgkqhpq995kdgjtxcdvf +q9xbzbjvtmkq1 +ttnpknthree9 +six18qhjd3sixhs12 +1lntlcrf68sfhzsix9onermrsvbmzpz +hhzjdhnsdb2 +nlgdm34five4fgqlpsfourqmdjqrklrrk +seven4splbgjscvrnsrslsixseven2pc +1dlx3eightsixeightseventhree +three2nine2chsvtghjfgjfn6 +8mpvxxkqlvsixqeightsddh +four26kjt +2fivejrnpfbfivefourgrhdcngfvkxqrl5 +3hp1 +mblqhptdfdfngmmdlfjhp3kdpsb1 +nine19seven95q +97one +lnbvtnvtnsevenfivefivethree2xjlsl +ctglrzjrcvkdjjcmxxkv5sevensixsnl +nineonetrpxnljthreefourninemrnzbbqjvbseven1 +fourseven49khbvhbxqvzhthree +961lsvnhdgb +seven284mpdlsnshvgbvxp36 +36ghthreefourc +four67six5bbdlzcg19 +1oneone +6sv94fourlrztncb8eight8 +twoggfmfjfbx54eight8five +fivejltzvxjgp1three1nzrgkrplssix8 +cdrbdxxdcfivekpnxplf5 +3fourlxnp +4hrkjqvfsch9szkfknmkkksevenrbsjcpph +fivetwo6xjtnvns3threejsx +9bdljbzvgbbhtnnqnzthree81 +9rdvjnqqkr44 +3twoonetwo +987bbxtq2seven +spvxkjpfive5gvqjfcsvd +7jvmqd +dvhtwone7csrxb +mqfrq3xsixhpsz36hxns +5glvgrrt +fivegtbfqqtsgmv2twoxpdvrph2 +8nine76xrvnnjzzlmqq53seven +dvv43eightsixsix +pshbmh8dpgdqnnb3jvc8dhstvf +sixsevenlscj84cnmk52 +five158hczhzrnfour +1fiverbh49ninenine +kfkrltljjthree9 +ts3seven +hbr2lqqkbdlsr +fourninehcvlfqqlmkfive876six +onechvhkvdtjsjd3threeqhgvgh1lpqrpzv +mlbvvlkhnl1twofvtlvccbf +fivexhnpqsixsix2onenine +sixhndnxt7fgjpljslsixthreehlxtqsgkrkthree +6vjp2one +glhmqdplqqmdgtnssevenseven77onesrpjqppkqfnine +qqmvfmpsv7two1nine +5lj +gndgkkcp5dzmczqmhsevensix3 +eightsix82sztzxlnfvnnkhpj +hppn8seven61 +five1oneightg +foureight7sixxrlscm +6threeszvsnprccb +8sevenlfttwo5two5 +jxmzrgjcqq8bl +one67mpktrzzvnhnine66 +cvgdvstltgpqg3tk6czjklgdfvsbxnthree +four4bphpmnineninervrpcsrbthree +rcsxjh93seventwosix9pnt4 +onekcfmt1lqkrsvzjtwogdrkrnpchg99 +phmhsxjvthree5four +39eightfiveonefive +ninehsvgkvtcgj1 +4eight18three +5tzgdpvkgq891knffnfourfour +3sevenqlrzktpzm8hcseven9 +onethree7eightszmllvone5xjxh +loneightnftmqbghjx397eightpmgndpgdldfoureight6 +jeighthpfrlthree3mvjqvnkmctwo +jqtwone1onefiveninezdzfq8nine +2mpbz +onesevenmftvrxrnrk779 +gjqqnggshhnjsgttgtpbt93zsixpnl3 +5584gqninegxseven +5qpqzztgrv9seven +three43vkfgqhn4 +56fivegkcnhtn11 +3eightghrgdqspgjtl1fzbmsneightzmzvbsl +sixnjrl2bshpmg +54fivedpxfmreight +3four5pnlnstthzfjtfv +onenine7 +fivethree5eight +2six4xmgxtml +one25eightfourthreefglftkh8 +rz6ninethree +qbrthree46eight +vldeight6nine +cshoneightthree9rdlh +fivehbplzxnhnineeightseven32 +l2lsmkone +bqlt6eight +xv3two88tspdtsh +fourxlcttfqhtp8 +eight8eightnlfbtmh +8sevenrmvdninefdeight6onedfmkhvklgg +six1ninebvgfbsjkstksbqlxsqxdqtsbmtseven5 +7fourgbpqm477threeonetwo +five18 +twotqkjneight516five +xbsixzvkjlzfx2 +qeightwolrqnbgqlbgseven3two6 +6mjsmmbdsninegkcd3jzpcrjlnm +7kzcnrfonetwoeightxc46mrtmb +55eightsevenfivejmjfour +l6two5 +mgbcclxkpdjdfivemsgkqpfpcbjjpxrs1sevenjzctftj +9tmvngsthreenrzplhrbdknine3seven6 +one2dhkmpctvhf +xfhqlkn6qdntslzkmgqhgststmzp +brbjvmjsix3ltktnldrjv +eight31cmmrrpvtr4n +3twofb +63g +cdgxslxkhxeight5one +7zxvlcsdpvsk6seven54nine +five95nbpthreemtqhgdbtdqhbkhpsdndjgvmcseven +fgh75 +five78sevenmvr1kgnzpfr +hkszszgkr414vknlf +nrxcmxjvftwoqrfvbtgktfclc69ninefx +sixseven6onethreefourzksnp7six +eightsevenjdpxmg4tvtonem17 +9twothreefour +kxmrfjpdhqxzqsf84 +46nbsxgphvptlsixcsixfkrlnh4 +4pn27gtt4eight1 +three26fqnine +2sixpnineshmsbxj6 +fr9gmmqhzdpcdjqklcjsqg1 +hheightwo6threesdnqvl87 +34fivedkjxqcqtvhfour2 +pgdzz39qmsvmfvhsevenlfgeightwop +7sevendjmzkksfourfive +nine7fourtwozlpvr1xgxddbfcqgcdh9 +2nzts1cgb5ninevnlj +four8twozvjnbmnbpssixsevenvbeightwovbj +four3one8rhbvtnbleightwokd +eightthreesix5 +7dggrvmlfourfive +gskldhhphjvgqnfgxdlthreemp27bjhgshzdb +ghxvcdveight1 +fourtpxlc6zcrgbhpdrzfrsmsqpkjmfgjd4two +fb79c19 +fivezskzmvbdfour4sixbnkbntrkjvnineeightfive +qbfxdktjq2rddsmgnz8pnpgmph7eight9 +664two +seven6bkdhbfmvsx1 +6szgdfhchfivefive +8thkcseven8threeeightbqtwo +3n97jvtxqbsks2bcrbkhzgh1 +fqxktzrczzlh8five +2mhrfx +pmtwonenine573fivetwo1sixfive +hzhzmrp69six +2bxxmszhfknonexgmfmsx24three +1four6zsbpgblxbh5six2 +7seven6six3 +sixhlqckdhkgkxmd9twoone4six +onecrgdchztlzqdljd28five +xrsp8sixpvrprcnzchnxthree9xjqsltz4 +gqtc91 +5twoone14eight6fsnshplkrh +jbhlnvgtqgjhzzh6kxjnn297qqqhxtgl +3fivellgjzxvg7bcsmvkdqtwosevenrkjbjxk +jcxjvsbpl863xvjszreightzjqtjlshg +twogdvrqfxplfour7 +lgzmnhtxdrc6fivefive6eightsix +seven6ntjgjjkcsninebkxgqmrpcs5 +fchnl7fournine9 +snzheight8fourfourfiveonefour +xpkoneight6qbh1sllfvsnkfzffhdfourfznkt +2tctninesevenfour4xt +two18bjtqjkjcjrcmlpjdlbdkfm +5ninesix484tbjzds9 +vmtffvjjhone5six983three4 +18nineonetvmkbgqgblhn18 +6five92eight6 +bvhgclm4mq1163one1 +hztxmgqt9three7hvmj +8jcsbhxlxfhld2jbrrqlsix +9nsgz +88three1xoneighth +htrnrgxvl84chsvpdf1eight +grxncx4 +fourrqp49fiveseven +65five +two3prvpvkz4xndcppzfournine +5srrpfjgztwo3lnvsgkm +five5bbcntvhmxmh +vfctcfrhvmdpldlklpcjkthree9threefour +9seven3 +fivedkqqqzl3rjtdsdkjpxm7three1 +twotwo59fivesix +sixthree9two36threehfrshhtnine +eight1bzthreethreefourgcvvjr +pqfzd5gqpvqtkrhzcsphnmtztwojmfpjsix +1qstrvgtqb393four +2eightoneightt +six4five9hzc +hvbjkkhnqg1sm5131eight +9sixtwo +2fivektvkhpfourtwoonedfrjqcpbx8psp +nineonetjfzrvx5xrhscvlzzonesixhdktzvjsr +2eight3rcjheight67bmktvnqltv +jkzpv4442ninelgxnrfxhfive +rnsblh8125 +zpmprktv3 +9four4vqzceight5eighttwo +rgknqkfsj6dh1m +7kdkxzqbltvhthree +lsdeightwod14three67 +5psxnsnr9nine +sixf2 +9six1fourxrnpqtbsix7seven +eightninespmlponejflmrndkm7fourbvhfour +spfkmffoureightzjvxnfjffthree7threem +twotwo4twoffqszvhkqlsxzllrghdhfgbdtxphs +314one4seven +fourninetgbjnphflcnpkdkxnine4fiveglkdq +four2lkd52 +456 +lfoneeightrkgq99kjhrclcgdnc +8qsqsl32 +qpnpmh1four21sixqqsix5 +jbrxttmncbtbkjpm7fbkkxc3gkjplp +5two62ppczhpjct +leightqmcmxzd45vztlfcvvv +vnntzgvjfl1ksixthreevxchkmckceightone7 +3two7sixeight +6hxgjm +4five8 +mbcbgvrgzxclvkkv1 +four3plnl +39ndbkdkddh5seven7kqtsg1 +threebmqbd87 +1fivenineninect9 +one4seven45 +gdh5stxjfzlgcbfivevgn5 +3qonexxzv275three +dphbjmbbeight6 +m13vffxq9 +four9threefoureight +qjkcczzgrnone9threetwodhhfzpssgone4 +htrsqgmmnk4 +jdrkr23 +vxeight6k1 +5rdhjgpkxsevenfour583 +8ninepfddonesixthreepcgdgkrk +bxtddhs31fivefourbpqfournrnqb +rmdpmsbtsdsrdxseven93foursix9 +8cn +bg4nh +foursevengkmvgqlncllqbklrntwo7 +4twotwo62 +bdsmrsone2sixonefsbsrkprbfthreethree8oneightpsv +4sevenfnbldqcp99 +9twoxvbqpktrqglhrfnine +sxztjcg3 +bgzslddbll5kzbkxgrld +7fivefxhggjvgcmqbppgffmfive +8three6nmsbsbzz +sixcrznp2threevqrszfivefxnfrcq +5mggpqlmlxmljvmktv1qpbllrfccgrzlone +fjktnlxgxjztzxc37 +8chhbninekmrbs +eightgdtsgqzqdthreeeight2xvdrckvnr7xdgjtdzsix +mq1lxdb2bsztdlfh814three +761eightkxrnjzhzfive +groneight3 +99cbcbgkjtgjsevenbzp4ninexbxgpb +1one23one2 +425five59jqxbmjjtwoneqp +eight44eightrggmgxgmr +g1 +9tbvsdgcz +jhfmgxmsix626oneeight +gzf9hjz7lfour2 +three8seventhree7threekgrpkrcxk +m2xpkpfour +2sbqj +177plqzcbj +qlsvnrqqbpcshmkj55 +fsszprone5 +9twokpxrxrjnbqhxbs +jc26 +eightczbvzdkb29dslztrgdm9eightbv +vtlgfh2kxtchmonebr986 +6two4eight +52seven +fourtvfqghltnrngbzbrkpshjhseven8foursixnkpbtf +zndgjjnctljjvfkz6 +7six3 +tqhgddbrrgjzh8ct231four7 +6pdjtvjqfzmrdqninefourdrtndvxtfour +twoflzcgtwojvnhkqpvd4374 +47sixthree +9threenine8 +sevenmmndnbnvstwo96sixlbddllbq5 +seventhreeone2fourrbzsixthree +gstzhlnvxrfour6seven4ncktrk8 +43jzhf3 +twosixfccseven63 +tlkksdsbgbqbzmjtx7fivetcvzbpggmtwotwonpknb +ninezq7xvsmlqvfourclznkcqnbmjone +kbns2kjpfdrp +7pntsfdpjq7rzlqvnine638 +seven7fourfour2xzxnfzhlmb +23sixsixbqzh +one4twofivehmonensf +fourfivefivejkdmbgfmdrnkqk6two7bnjv +784v1eightwog +3five859five729 +gshxpzrnr1gqrpcfourfive +29sixthreesmnd3sixpdsjfour +v4 +47xkjdlcnvxpfddz +nznnmq7jbfngrjzp +twofive1ldjf +nshmztnmgeightthree2two +95gffourthree +lcqfncp29hnx +4fourzpzcbtqkkr2jd9seventwo1 +ldqv2vpzjbsrqfdlngcgone5 +jhhkdvpzstx6 +fivegnbqtrxknine2gfcfnine5nine +hcdcffvmgkdgfxbvkfkjjzh3 +eight69eight +gmsqzqbrnvpsix5xjfchmsgsqmxm +one75six +4zt78gldjsmllkkdrpjbxllhm5 +onetwo8six +three3oneonenlvrxtwo +ninecldbktzkrkhxfknclmtvfhq8twofive8mrf +88kzkdjfjqpbgdthree4 +onefc4jljhhprfv8819 +two9ninefzxgj2three13 +xztwone33 +1fivevmppvshnsixmzxronesix +vd32 +323 +six8zhtrllzqbgjsixtxmxdpbfd6 +mone5mvzvxftqsbnktbdprllkjz7oneone +nine4one +threesixfjttrzrhr5five +eightnkzzmj4rzpzqseightsix1 +zf2 +geightldvlrdftnbtdrsv1qmcrrxtfp +zonetwol21j2 +8qmdfivejlrxmlvthree +seven395rtqnnbhd8chxjhp6 +21fourtprlhb5 +fourcmztvmjdf1threexsthreehrfkzk +jrndnvpxdrvcqdjdhhnlnr594rblf4three +5llzdsknms8518 +4feight4 +six5hdhtwo42351 +fvfxhkbthree16three3qh3n +46zsjfjjfd55 +sixoneonenrg5nine2 +3kxmmrzmsvtzqhpptwobzpqfbnjm +three4c9sevensevensix +bqfgzvpd198nmmkzttrpqjhzkd961 +two699txkcpfcnsm5 +2fivez6 +ldttwosrlhrczggq5 +ttjhfmxmseven1bgsevencqstcnjppknine +kphtgssvmxvf4 +4nine1bpdhrp86sfppzgbmtwonepbz +eight7957seven +fourhjlrlptlz1one9oneeight4 +2onefivefourcqvhgbrbbfvssjlv4 +thrjsvmgvlqfxjgfbfxxthree78xd +vrzfs9eightzsm6six +vjmdxth3 +4three1jmpnonesix3six6 +vmkfmshtr7lmcqpdtpxfnineeighteightpqnxntkzhrffhq9 +rzlpzxzlbshztwo3lrqkstvl +d8txxlfntwokdhhqfqj14 +1xttonexsqldqjrz +nrcsix698dgqhnnmvvxckg +59fzdrczj +52eightsix399 +htsxqlninesix498 +1fivedsxccqxpc6zkcnhxknhbtljthree +3fivetkff1 +3onegkl +one2sbtxp +53gxcnvtkc4m8 +2sevenonetwopmhvjhhbtfivejtdbthmtmlzv +jrpnktwo6pvcckm +fiveeight9 +9217fivefoursixdvctqz +1seven6five +5trztdklnh5pbxhjkrbsrbkblrjfive +v9gsnbfive5438 +619ltnxszkfcgztmfrxgrgcbjfthreevcrxxthree +2fourpcjshrql +hbmtblllp5fourfourjzkrvx +vngbbb79seven7 +92sixlzd4sevenfour +foursqmninenine2smplone +six4five +vjmztjchkc6four16two +2lvhfkgxfivefive9 +45two8dhkpk +84qfivexlclqpvtt9eight9eightoneightbk +6hl5fgcmlpphmzsvbk +4mtczfqfmk +threebkjb9 +sxthree1foursix7four +9one3lmthreetwo +7six83lzqz9skgcnbzzg4two +jj94sevenvxrxdfourqtmpmtlnninedkvc +prmlkbzrkvzg52 +lnxxmbsdgqgpjdzzsgxpjninengbgccmblv3 +nine6lkrsdfdbnsixfive9 +smphdfsixnceightktq36zs +zhmpseven9sixghjfpv +eightrmqmb5two +5four4five38twoxbmthcbnine +4vxvskjc83nsevenskgktml +three9three64five9 +four4four +sixthreesix8nx8bpkkjntxpsixrhbbc +6fiveeight28fourfour +2s52foureightfour7 +sevensix5vxfqr8pxncbhgd34 +2dssctwonec +rzcmjflfn8 +ninempft7sdlcjzmgtjqpxgv +eightfoursix3lbmg1twoneqh +xxnvsnmslcrql1lxvqfourqtfjcstgnineqcnkmthl +qnx3lsmlpone +49tvjptmdgvbftm +49psqsbvph1cxvzzeightxgfnjqqg +three2three21 +qhnfzrb4 +6gmxzdzfngpmxtnine +vnvqqbkmp5eightsixbreight +2j78znzkdrjpdnkctwoseven +three3nine +gpqbqjqhscmzhcsix4xvdqn8threenhvr +fivesix12tkljpqdhf3mcsix +1qvlrfcrmjvbr5threells +9skprmslsfourkfxbjjtflfour3 +jmvns4onek7gvmbs +nineone1qmdgdpfrqmvfrfj6three +ninexlmtdjmszjjjqdmpmn1two7 +9533nineone2hpnfdss +six3rgrmtgsninetwof +fivelvlnzlqj4zrljkprhsbt3zzzkzvfg5 +9nvmkt9six2sbzdkhqbg5 +four716grlbd4sqx2 +73fpdz5 +65five897b +threeone9rltsqbjl58zxxtktwoneh +bxfxd5five8 +4fzlpr4nzmfive37fivefive +vjptnknvlxhzvfpqxfive5four8 +9five1dr6eight5hpkx8 +eight7fourfourxlrztj64sixone +twofourqqprdrkmrbgtqj5oneightb +83three +threethreefourtnvddnmsixnjhrfmhmxz62one +8fivesevennine2skseven2nr +fourseveneight74hmslvqssdfdsltvcsd +38cxc +1njgbbprzf5fivethreeninezgllfmsxfq8pgntvq +mshrhzmgbfourthree8 +3oneqgqfgreightfourhsxlcb +7sixfivekronefbtrjszbfr +hgsqk4xfjzkkxdz +twoeightfq5rhdjcbg9 +drkclzltwovtblgppbtpzrcnlhhtwofivevcnlvxhbn8 +pksrcnqps5hzdvnbgkmgfoureight9fx +87ppqndvcmtzrttwothree5nine +fourfour1fivetwofive2v +fivermshbd75 +47mljfm9qjnbzjmq +1cqnrmpmknpzgxp8four8 +eightzgtjn1 +three2nfdnfivefourseven +zjbbj5mxqnnsxml5 +8847rtqjrctqczeight5hqmrbzkd3 +onev5seventkpvrtq +sevensevencfjbscdbvqlc12eightwok +2dpnxxlqthree3fourseven +3xfrnxtds9seven +eight7four +sixzkjrjf1s49xhk +foureight1bsxmfdgpgthree +crzjxgfldz9nine7 +dlrzoneeight3blfxhd6hxklgmzcb +six1cdlfcsshkh4eightgndfivefour4 +threethree2xcsixqfsgxjhgf7 +cnjkkfcnninezbvrthjrhg2two2qzbrchvxqsfqhk5 +ninefiveqmgnhrdndclldxtjmqmkseven1lcjlqddmbnn +zjqlxpn437fivemftgzsz8tsnnbgmm +xllzq6l6nineone1 +vqkjtjdnine4onefive97h +two1ltbdnine +ninefive62 +eight8ninetbmtxtmmnfllnj5 +four9three3ninefxttjkhtkgvpvcbd5 +43six3twoeight +fourfnctllc1twosixsix67hlgt +fourfive8gkblmrninesixgfkpqkleight +5ninermhkttx18three6five +51one2jvbxs6 +6pshzkvn87jz12three +62nineseven +bchls4fivelpdldjzmbtwofour28seven +274four +cjnjksf4cdpvbjfnine2rone +krxeight7mzdbbknqdxpzg4eight +1one3gx3eight2 +5nine19eighthvcmzbltkfive88 +11one2sixxgvmg +p51rzprxgldxcznjjonefdjgfqbndnjn +9jfpvqhpht6 +9threeseven5 +seven62 +threeonefivetwo91three6 +three3ksl +xhltjp6qt +9qtxtnlhgg8four5nine3cvptllv +267jlqgljqfltwo884oneightrb +141eightnlp +rxpxrbvgrcmhzone3one6ppnzmg2 +five5sixrpzjqgbtgdjlmmprh1 +onefivefivekglldg5six +threeseventhree2 +one1fgcxgjxrm4seven +mstfpfhf7seven3ninezvrxeighttwo +oneoneqpgdghxl7three3 +twodlbrctkhjtwothreefivetwo9 +fivenine19seven8two4 +vpjkmfsfrjhhbksevenfivervdm514 +fourjqtggglnfive32kzcx +lcrtvrfkzthree4eighttwo9 +eightnrvtxpqxjztttqvgmlqhxqj1 +2ninepqntclhbk5three +thfdxrnbbqc6 +seven8mjpmvbqxhfhxgjdlltnine2 +hqbthreezqbhlnthreenlfour8kgzzxjcsgz +6jksppsskp63threenshc +two8nine +bsixmstxhhfnm3bcckpjp +4fourtwo86tkdkxtwo +xc4eightsevenbdseight56 +fourrnntnp9ck +onesixflbfss8two2lxhhjdhxntpjpkds +threeone71fourcpcsxld +bczssjbdzbonemtbrz7five8ccnnj +42onedkxtrhhm1nkn +nf6ssm3 +eighthltsggc2six383 +srkppleightmxzmlk38 +336tdfthnj2fghhklkg +zhpsbbjzzk3mxzzsnvdbs +1nine6fiveninerdng37mfks +4ninefour2kznine3 +fhsjfivehs1 +one4qzbgrzlcfjbstfc +twohkrbh8zlhkgvfivetwormjq +ldfzzjzkxx9 +7f95stwo3 +xcppkmb5ntnrzrqndh1oneightxm +threebhvkdbbt26qdbcpgm3four +mvxd86sevenfjndplrd +585 +eightseven51xpxxzqnstzlp1 +one8eight57lvlbzgclktsix1four +255fourone72 +onexqrbpcmc1two7done6 +fournineqbxgklbpqqhs2six +dnptsevendbphglkqtwoxgsjckf4 +25pskrxeightfourjrtgxonetwofnkj +sevenfivesevenqtgqlpjkntdnkxqvf4 +1xklsljm8knrm3five5eight +sevenfiveseven9bnprxvjl +threevzmqxdmgc3 +fkzvone237lgqtxfcnvddqrdmj +5sixnsix6lqmsqdvvdj +287fdvgbtcq +sixsevenninelpzlclr4 +fivesix7 +73drvqt7nsixbzt8one +xksbgk6knc58oneninetwo +lknvtktz62pccjdnc6 +7zxskgs +nzdtwoneoneqvmt9pmvnthree8lksxhxv +3hzdrjckdsixthree2 +hbmbcrgmpkxzjthree8sixz +94979ntmkxbzlcone +bsb3threesix +jpmtgfcgjpkbx8 +3tqnctzbmfivebninetwo +9vrpgcbmdktdprzs +fourfivefourone9fourqnsjlbgkv9nine +5vlsbplrtonezqhhzt5bgxkspsf +one6dkckh6four2gqztm81 +dtoneighth871 +five3mzqgxnbmdbcmnteightsixtc +4three19qfourtzh5n +8threefourppvfbrfp4 +19five6nvtgsp8 +sixtwo9tqpqg1fourtwo +1tkzn +twofoursevenjp2zphqlzqmmbskkmxmj +one1vgvsgbhtwojmgr +nine2phxpfnptp +rqqxqslzqjlnfb1four +17gkhhffc3oneeight597 +jjhclx3 +2513 +3five91tnbkmxeightxonef +gpqnkzt2sevennflfrxdonevgkhjrgeight +1one5eightfour5hckvkpxsleight +41rbglbkmqr +one8eight +9threevdbtbrbrgrtcdv1 +58ninetwonine8three7 +nineznvtft63t +2nqhjtvds3ksfjkqxhvseven7 +41t279zsgmzmjk12 +eightthreethree12ninehrsbvftksstwo1 +fmgcfnxbs6vrmtxxvfdz27three +17qkrps1 +three4two4rnnslsvxmsbcpvnbpfseveneightwokcn +58ninehxcsnzfxbf6xvgcrfznrldqntsbsjmr5 +355knfjsdqjm8 +htsrn3qdbskfsd211 +969five +tdbjsvfxv67htbpmfx +6l +pdzseightjvjxlhgjhrnz9zzjbcrktjc99 +fourzqlhcjksixthreejrl9 diff --git a/2023/2/1.py b/2023/2/1.py @@ -0,0 +1,25 @@ +games = [] +with open('input') as f: + for line in f: + splitted = line.rstrip().split(":") + id = splitted[0].split(" ")[1] + sets = "".join(splitted[1]).split(";") + for i in sets: + ok = True + colors = [0, 0, 0] + detail = i.strip().split(", ") + for i in range(len(detail)): + count = "".join(detail[i]).split(" ")[0] + color = "".join(detail[i]).split(" ")[1] + if color == "red": + colors[0] += int(count) + elif color == "green": + colors[1] += int(count) + elif color == "blue": + colors[2] += int(count) + if colors[0] > 12 or colors[1] > 13 or colors[2] > 14: + ok = False + break + if ok: + games.append(int(id)) + print(sum(games)) diff --git a/2023/2/2.py b/2023/2/2.py @@ -0,0 +1,27 @@ +games = [] +with open('input') as f: + for line in f: + splitted = linerstrip().split(":") + id = splitted[0].split(" ")[1] + sets = "".join(splitted[1]).split(";") + maxes = [0, 0, 0] + for i in sets: + colors = [0, 0, 0] + detail = i.strip().split(", ") + for i in range(len(detail)): + count = "".join(detail[i]).split(" ")[0] + color = "".join(detail[i]).split(" ")[1] + if color == "red": + colors[0] += int(count) + elif color == "green": + colors[1] += int(count) + elif color == "blue": + colors[2] += int(count) + if colors[0] > maxes[0]: + maxes[0] = colors[0] + if colors[1] > maxes[1]: + maxes[1] = colors[1] + if colors[2] > maxes[2]: + maxes[2] = colors[2] + games.append(maxes[0] * maxes[1] * maxes[2]) +print(sum(games)) diff --git a/2023/2/input b/2023/2/input @@ -0,0 +1,100 @@ +Game 1: 12 red, 2 green, 5 blue; 9 red, 6 green, 4 blue; 10 red, 2 green, 5 blue; 8 blue, 9 red +Game 2: 3 green, 7 red; 3 blue, 5 red; 2 green, 1 blue, 6 red; 3 green, 2 red, 3 blue +Game 3: 12 red, 18 blue, 3 green; 14 red, 4 blue, 2 green; 4 green, 15 red +Game 4: 14 blue, 8 red, 10 green; 7 green, 9 blue, 4 red; 4 green, 5 red +Game 5: 2 red, 1 blue, 4 green; 1 blue, 1 red, 5 green; 6 green, 3 red; 10 blue, 4 green, 1 red +Game 6: 5 red, 5 blue, 1 green; 5 blue, 15 red, 2 green; 3 green, 1 red, 9 blue +Game 7: 9 red, 8 blue, 13 green; 9 red, 7 blue, 10 green; 7 blue, 2 red, 11 green; 4 red, 6 blue, 10 green; 3 blue, 12 green, 1 red +Game 8: 20 red, 5 green, 10 blue; 14 red, 8 blue, 5 green; 5 green, 4 blue, 9 red; 18 red, 1 green; 2 blue, 1 green, 5 red +Game 9: 3 blue; 3 blue, 4 green, 1 red; 8 green, 2 blue, 4 red; 5 green, 4 red +Game 10: 18 red, 11 green, 3 blue; 2 blue, 19 red, 7 green; 4 green, 1 blue, 6 red; 4 green, 2 red, 4 blue; 10 green, 5 red, 2 blue; 13 red, 12 green, 4 blue +Game 11: 5 green, 5 blue, 3 red; 2 red, 8 blue, 4 green; 4 blue, 4 green, 2 red; 1 blue, 3 red, 2 green; 4 blue, 4 green; 6 blue, 2 red +Game 12: 6 blue, 1 green, 4 red; 12 blue, 4 red; 12 blue, 2 red, 6 green +Game 13: 11 red, 17 blue, 7 green; 20 red, 12 green, 9 blue; 15 red, 15 green, 14 blue; 7 red, 6 green, 3 blue +Game 14: 8 red, 17 green, 6 blue; 5 red, 13 blue, 7 green; 2 red, 15 green, 4 blue; 9 blue, 2 green; 7 green, 2 blue, 8 red; 10 green, 14 blue, 10 red +Game 15: 14 red, 4 green, 4 blue; 14 red, 2 green, 16 blue; 10 blue, 2 green, 6 red +Game 16: 2 red, 3 green; 5 green; 1 red, 1 blue; 2 red, 3 green, 1 blue; 5 red, 4 green; 5 red, 4 green +Game 17: 4 blue, 3 green, 9 red; 3 blue, 8 red, 1 green; 1 blue, 5 green; 8 green, 2 red; 10 red, 1 green +Game 18: 10 blue, 5 red; 1 green, 9 red, 9 blue; 5 blue, 3 red; 3 red, 1 blue; 2 blue, 9 red, 1 green; 6 red, 7 blue, 1 green +Game 19: 9 green, 2 red, 12 blue; 3 green, 9 red, 16 blue; 2 green, 17 blue; 11 green, 3 blue, 7 red; 2 red, 10 blue, 11 green +Game 20: 17 blue, 16 green; 13 green, 12 blue, 13 red; 6 red, 9 green, 6 blue +Game 21: 1 green, 3 red, 1 blue; 1 blue, 2 green, 2 red; 2 green, 1 blue, 3 red +Game 22: 7 green, 3 blue, 5 red; 2 green, 14 red, 3 blue; 2 green, 17 red; 2 blue, 15 red, 6 green; 4 green, 1 blue, 17 red +Game 23: 4 blue, 2 red; 2 red, 7 blue, 1 green; 6 red, 5 blue, 5 green; 9 red, 4 blue; 10 blue, 8 red, 11 green +Game 24: 1 red, 9 green, 5 blue; 14 green, 4 blue, 2 red; 5 blue, 1 red, 11 green; 3 blue, 2 red, 4 green +Game 25: 3 green, 2 red, 1 blue; 2 blue, 10 green, 1 red; 8 red, 4 green, 1 blue; 3 blue, 15 red, 6 green; 2 blue, 13 red, 8 green; 2 red, 5 blue, 5 green +Game 26: 5 green, 5 red; 12 green; 5 green, 3 blue, 4 red; 1 blue, 1 red, 17 green; 2 blue, 18 green +Game 27: 1 blue, 7 green, 3 red; 3 red, 1 green, 13 blue; 4 green, 8 blue; 1 red, 3 green, 4 blue; 9 blue, 2 red +Game 28: 9 red, 2 green, 5 blue; 5 red, 9 green; 5 blue, 1 red +Game 29: 4 green, 10 blue, 13 red; 2 red, 5 green, 5 blue; 2 red, 9 green, 11 blue; 9 blue, 9 red, 13 green; 13 blue, 2 green, 14 red; 3 green, 8 blue, 5 red +Game 30: 3 green, 7 red, 3 blue; 5 green, 5 blue, 12 red; 14 red, 6 green, 11 blue; 7 blue, 9 green, 11 red; 10 red, 1 blue, 4 green +Game 31: 6 green, 5 blue, 17 red; 16 blue, 17 green, 14 red; 13 green, 13 blue, 3 red; 18 red, 8 green, 14 blue; 18 green, 1 blue; 16 red, 6 blue +Game 32: 12 green, 2 blue; 6 blue, 5 red, 10 green; 13 green, 2 blue; 2 red, 6 blue, 6 green; 9 green, 8 red +Game 33: 4 blue, 6 red, 2 green; 7 red, 5 blue; 3 blue, 1 red, 1 green +Game 34: 2 red, 7 blue, 1 green; 2 blue, 1 green, 6 red; 6 red, 3 green, 7 blue; 4 green, 13 red, 1 blue; 15 blue, 1 green, 5 red +Game 35: 8 blue, 12 red, 7 green; 2 blue, 14 red, 3 green; 14 green, 8 blue, 7 red; 15 red, 12 blue, 12 green; 11 blue, 14 red, 1 green +Game 36: 11 red, 8 green, 2 blue; 17 red, 2 blue; 3 blue, 8 green, 19 red; 6 red, 3 blue, 3 green; 8 red, 5 green +Game 37: 2 blue, 3 red, 12 green; 3 red, 7 green, 4 blue; 7 blue, 3 red, 8 green; 13 green, 3 red, 2 blue; 2 green +Game 38: 2 blue, 14 red, 17 green; 1 blue, 13 green, 6 red; 14 green, 2 blue, 2 red; 4 blue, 1 green, 6 red; 2 red, 12 green, 2 blue; 4 red, 2 blue, 1 green +Game 39: 2 green, 3 red, 12 blue; 1 green, 14 blue, 16 red; 13 red, 9 blue, 1 green; 15 red, 1 green, 18 blue +Game 40: 17 green; 12 green, 6 blue; 1 red, 3 blue, 6 green; 1 red, 5 blue, 8 green +Game 41: 2 green, 8 red; 2 blue, 7 green, 14 red; 13 red, 2 green, 1 blue +Game 42: 1 red, 7 blue, 7 green; 2 green, 4 blue, 1 red; 15 green, 8 blue, 1 red; 1 red, 1 blue, 12 green; 6 blue, 10 green; 6 blue, 1 red, 15 green +Game 43: 8 blue, 1 green, 1 red; 3 green, 1 red; 2 red, 6 blue, 9 green; 2 blue, 3 green +Game 44: 8 green; 1 blue, 12 green, 16 red; 9 red, 9 green, 2 blue; 3 blue, 11 green, 4 red; 16 red, 8 blue, 11 green +Game 45: 4 blue, 3 red, 13 green; 2 red, 2 blue, 13 green; 11 green, 7 blue, 2 red; 9 green, 6 blue; 12 green +Game 46: 14 green; 9 blue, 11 green, 10 red; 19 green, 8 red, 14 blue; 12 red, 10 blue +Game 47: 1 green, 14 red; 2 blue, 11 green, 4 red; 6 red, 8 blue, 2 green +Game 48: 8 blue, 13 red; 5 red, 2 green, 10 blue; 9 red, 12 blue, 1 green +Game 49: 2 blue, 8 green; 1 red, 8 green, 4 blue; 6 red, 1 blue; 3 green, 2 red, 4 blue; 6 blue, 1 red, 9 green +Game 50: 7 red, 14 green, 4 blue; 9 red, 10 green, 2 blue; 3 red, 9 blue, 14 green; 2 green, 12 red, 5 blue; 10 blue, 6 green; 8 red, 1 blue, 7 green +Game 51: 4 red, 18 green, 1 blue; 15 green; 3 blue, 16 red, 17 green; 9 blue, 10 red, 13 green; 11 green, 14 red; 1 green, 7 blue, 1 red +Game 52: 7 red, 4 blue, 5 green; 1 green, 10 blue, 1 red; 4 blue, 5 red, 7 green +Game 53: 3 red, 1 blue; 1 green, 3 red, 2 blue; 2 red, 1 blue, 8 green +Game 54: 1 green, 11 red; 1 blue, 3 green, 1 red; 1 blue, 1 red +Game 55: 1 blue, 2 green; 5 blue, 3 red; 3 green, 8 red, 3 blue; 4 red, 4 blue, 3 green; 2 green, 4 red; 4 red, 2 blue +Game 56: 17 blue, 12 green; 1 red, 7 green, 16 blue; 3 blue, 4 green, 3 red; 7 blue, 12 red, 15 green; 4 red, 8 green +Game 57: 2 red, 3 blue; 1 red, 8 blue; 9 red, 11 green, 8 blue; 1 blue, 13 green, 6 red; 7 red, 8 green, 2 blue +Game 58: 13 blue, 8 red, 4 green; 2 green, 7 red; 6 green, 1 blue; 5 red, 8 blue, 5 green; 5 blue, 1 green, 3 red +Game 59: 8 red, 10 blue, 3 green; 9 red, 19 blue; 11 red, 2 green, 20 blue; 1 red, 8 blue, 3 green; 11 blue, 1 red, 2 green; 8 red, 3 green, 19 blue +Game 60: 1 green, 2 blue, 5 red; 6 red, 2 green, 2 blue; 12 green, 2 blue; 5 red, 5 green, 1 blue +Game 61: 4 red, 9 green, 1 blue; 15 green, 1 blue, 8 red; 2 blue, 20 green; 13 green, 1 blue, 3 red; 7 green, 7 red +Game 62: 7 red, 5 blue; 6 green, 6 blue, 7 red; 5 red, 4 blue, 2 green; 3 red, 3 green; 9 blue, 1 green, 1 red +Game 63: 6 blue; 1 blue, 4 red; 11 blue, 2 green, 3 red; 5 blue, 2 green, 7 red; 3 red, 11 blue +Game 64: 3 green, 3 blue, 5 red; 2 red, 6 blue, 3 green; 2 red, 6 blue; 3 green, 7 blue +Game 65: 6 red, 7 blue, 11 green; 15 green, 9 blue, 3 red; 8 green, 10 red, 1 blue; 16 blue, 6 red, 2 green; 3 green, 10 red, 14 blue; 10 red, 2 blue, 13 green +Game 66: 5 blue, 9 green; 2 green, 2 red, 7 blue; 4 red, 12 green, 1 blue; 2 red, 13 green, 7 blue; 3 red, 4 green, 2 blue +Game 67: 8 green, 5 red; 3 blue, 4 red, 10 green; 5 red, 12 blue, 11 green; 11 green, 4 blue; 5 blue, 4 green, 2 red; 1 red, 4 blue, 10 green +Game 68: 4 blue, 13 red, 1 green; 2 blue, 6 red, 1 green; 5 green, 13 red, 2 blue; 3 blue, 3 green, 5 red +Game 69: 6 red, 14 blue; 16 red, 17 blue; 4 red, 2 green; 14 red, 6 blue, 1 green; 16 red, 15 blue +Game 70: 5 blue, 6 red, 6 green; 6 green, 1 blue, 6 red; 3 blue, 12 red, 4 green +Game 71: 1 green, 13 blue, 1 red; 2 green, 2 red; 1 green, 1 red, 6 blue +Game 72: 5 green, 10 red; 13 blue, 7 red, 8 green; 12 red, 3 green, 2 blue +Game 73: 10 green, 5 red; 11 red, 13 blue, 11 green; 14 green, 5 blue, 1 red; 9 green, 13 red, 10 blue; 8 red, 11 green, 8 blue +Game 74: 10 blue, 1 green, 6 red; 7 blue, 8 green, 4 red; 1 red, 8 blue, 7 green; 7 green, 1 red, 10 blue; 6 red, 9 green, 4 blue +Game 75: 1 blue, 3 green; 15 blue, 2 green, 11 red; 9 red, 18 blue; 10 red, 17 blue, 2 green +Game 76: 3 green, 6 red, 4 blue; 7 green, 3 red; 5 blue, 15 red; 5 green, 2 blue, 20 red +Game 77: 5 blue, 3 green, 7 red; 6 blue, 3 green, 1 red; 13 red, 5 blue, 1 green; 2 red, 2 blue, 3 green; 4 green, 7 blue +Game 78: 6 red, 4 blue; 2 blue, 2 red; 8 blue, 1 green, 8 red; 4 red, 1 green, 10 blue; 2 green, 5 red, 13 blue; 7 red, 2 green, 5 blue +Game 79: 3 green, 11 red; 16 green, 9 red, 17 blue; 3 red; 17 green, 18 blue, 5 red; 3 green, 3 red; 6 red, 18 blue, 12 green +Game 80: 2 red, 5 blue, 1 green; 7 red; 2 red, 3 blue; 8 red, 5 blue; 8 red, 4 blue, 1 green +Game 81: 12 green, 6 blue; 9 blue, 5 green, 1 red; 1 red, 7 green, 1 blue; 7 green, 1 blue; 1 green, 4 blue, 1 red +Game 82: 12 green, 3 blue; 1 blue, 8 green; 15 green, 3 blue, 1 red +Game 83: 5 red, 8 green; 10 green, 3 red, 11 blue; 12 green, 6 blue, 3 red; 2 green, 13 red, 9 blue; 12 green, 5 blue +Game 84: 1 green, 8 red, 2 blue; 2 blue, 9 red; 1 blue, 6 red; 3 red, 1 green +Game 85: 2 blue, 7 red; 5 blue, 5 red, 6 green; 2 blue, 3 green, 7 red; 2 green, 1 blue, 5 red; 3 green, 2 blue; 5 red, 6 green, 1 blue +Game 86: 13 red, 9 green, 4 blue; 15 blue, 11 green; 12 red, 19 blue, 14 green +Game 87: 13 green, 5 red, 7 blue; 5 red, 17 green, 5 blue; 16 green, 4 blue, 5 red; 15 green, 6 blue, 5 red; 2 red, 7 green, 3 blue; 3 green, 2 blue +Game 88: 9 green, 1 red, 5 blue; 8 red, 7 green, 14 blue; 8 red, 9 blue, 10 green; 4 red, 10 blue; 10 red, 4 green, 19 blue; 9 red, 1 green +Game 89: 4 blue, 7 green, 1 red; 6 blue, 3 green; 7 blue, 1 red, 6 green; 4 blue, 4 green; 1 red, 11 green; 1 red, 1 green, 3 blue +Game 90: 4 red, 12 green, 4 blue; 1 red, 9 green; 5 green, 10 blue, 6 red; 6 red, 5 blue, 2 green +Game 91: 16 blue, 11 red; 2 green, 3 red, 12 blue; 1 green, 17 blue, 1 red +Game 92: 2 green, 2 blue, 1 red; 7 blue, 2 green; 8 blue, 1 red, 9 green; 11 blue, 5 green, 1 red +Game 93: 5 blue, 1 red, 5 green; 2 red; 5 red, 9 green, 13 blue +Game 94: 2 red, 3 blue; 2 blue, 8 red, 5 green; 1 red, 15 blue; 2 red, 8 blue, 5 green; 16 blue, 11 red; 6 green, 6 blue, 6 red +Game 95: 4 green, 5 red, 10 blue; 8 green, 1 red, 13 blue; 6 green, 9 blue, 7 red; 2 red, 2 blue, 2 green; 5 red, 9 green, 9 blue; 2 blue, 10 green, 3 red +Game 96: 2 green; 7 blue, 10 red, 4 green; 9 red, 2 blue, 9 green +Game 97: 5 blue, 6 red, 14 green; 6 green, 14 blue, 2 red; 2 blue, 4 green +Game 98: 8 green, 1 blue, 9 red; 1 blue, 10 green; 11 green, 1 blue, 3 red; 1 blue, 11 green, 10 red; 14 green, 7 red; 4 red, 10 green +Game 99: 1 red, 6 green, 3 blue; 7 blue, 1 red, 2 green; 1 red, 4 green; 6 green, 11 blue, 1 red; 4 blue, 2 green; 2 blue, 1 red, 6 green +Game 100: 5 green, 1 red; 1 red, 6 green; 6 blue, 1 red, 6 green; 6 blue, 1 green, 2 red; 8 blue, 1 red, 4 green; 8 green, 5 blue