commit 67f21dffe7f1ecc452440b9b82ef27fa0a6b2be3
Author: night0721 <[email protected]>
Date: Sat, 2 Dec 2023 16:34:09 +0000
Initial commit
Diffstat:
A | 2023/1/1.c | | | 34 | ++++++++++++++++++++++++++++++++++ |
A | 2023/1/2.c | | | 73 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/1/input | | | 1000 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | 2023/2/1.py | | | 25 | +++++++++++++++++++++++++ |
A | 2023/2/2.py | | | 27 | +++++++++++++++++++++++++++ |
A | 2023/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