From 0872c7b92f59b0580e1594b44257b0161d414f52 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Mon, 18 Jul 2022 20:28:23 +0000 Subject: [PATCH] Solved 19 Co-authored-by: sigonasr2 --- archives/19/current | Bin 0 -> 17016 bytes archives/19/src/main.c | 89 ++++++++++++++++++++++++++++++++++++++++ archives/19/src/utils.c | 72 ++++++++++++++++++++++++++++++++ archives/19/src/utils.h | 11 +++++ current | Bin 17032 -> 17016 bytes src/main.c | 83 +++++++++++++++++++++++++++++++++++-- 6 files changed, 251 insertions(+), 4 deletions(-) create mode 100755 archives/19/current create mode 100644 archives/19/src/main.c create mode 100644 archives/19/src/utils.c create mode 100644 archives/19/src/utils.h diff --git a/archives/19/current b/archives/19/current new file mode 100755 index 0000000000000000000000000000000000000000..e2467db1833285140d45ccbf1f85665db2b14ae6 GIT binary patch literal 17016 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 literal 0 HcmV?d00001 diff --git a/archives/19/src/main.c b/archives/19/src/main.c new file mode 100644 index 0000000..74ce739 --- /dev/null +++ b/archives/19/src/main.c @@ -0,0 +1,89 @@ +#include +#include "utils.h" + +/* + You are given the following information, but you may prefer to do some research for yourself. + + 1 Jan 1900 was a Monday. + Thirty days has September, + April, June and November. + All the rest have thirty-one, + Saving February alone, + Which has twenty-eight, rain or shine. + And on leap years, twenty-nine. + A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400. + How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)? + + https://projecteuler.net/problem=19 +*/ + +enum Month {JANUARY=1,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER}; + +int DaysInMonth(enum Month month,int year) { + switch (month) { + case JANUARY: + case MARCH: + case MAY: + case JULY: + case AUGUST: + case OCTOBER: + case DECEMBER:{ + return 31; + }break; + case APRIL: + case JUNE: + case SEPTEMBER: + case NOVEMBER:{ + return 30; + }break; + case FEBRUARY:{ + return ((year%100==0)&&(year%400!=0))?28:(year%4==0)?29:28; + }break; + } +} + +int main(int argc,char**argv) { + int day=1; + enum Month month=1; + int year=1900; + enum Weekday{ + SUNDAY, + MONDAY, + TUESDAY, + WEDNESDAY, + THURSDAY, + FRIDAY, + SATURDAY, + } weekday=MONDAY; + + int sundayCount=0; + + while((day!=31)||(month!=12)||(year!=2000)) { + printf("Date: %d/%d/%d\n",month,day,year); + if (year>=1901) { + //Start counting Sundays. + if (weekday==SUNDAY&&day==1) { + sundayCount++; + } + } + //Increment the day. + if (day+1<=DaysInMonth(month,year)) { + day++; + } else + if (month+1<=12){ + //It's a new month. + month++; + day=1; + } else { + //It's a new year! + year++; + day=1; + month=1; + //printf("The year is now %d...\n",year); + } + weekday=((weekday+1)<=SATURDAY)?weekday+1:SUNDAY; + } + + printf("\n\n%d Sundays were on the 1st of the month.",sundayCount); + return 0; +} \ No newline at end of file diff --git a/archives/19/src/utils.c b/archives/19/src/utils.c new file mode 100644 index 0000000..90b55a9 --- /dev/null +++ b/archives/19/src/utils.c @@ -0,0 +1,72 @@ +#include "utils.h" +#include +#include + +struct String add(struct String numb1, struct String numb2){ + byte carryover=0; + int digitCount=0; + char*str = malloc(0); + if (numb1.length>=numb2.length) { + for (int offset=0;offsetoffset) { + //printf("%c %c\n",numb1.str[numb1.length-offset-1],numb2.str[numb2.length-offset-1]); + int sum=((numb1.str[numb1.length-offset-1]-'0')+(numb2.str[numb2.length-offset-1]-'0'))+((carryover>0)?carryover--:0); + if (sum>=10) { + carryover=1; + sum-=10; + } + str[offset]=sum+'0'; + } else { + str[offset]=numb1.str[numb1.length-offset-1]; + } + } + } else { + for (int offset=0;offsetoffset) { + //printf("%c %c\n",numb1.str[numb1.length-offset-1],numb2.str[numb2.length-offset-1]); + int sum=((numb1.str[numb1.length-offset-1]-'0')+(numb2.str[numb2.length-offset-1]-'0'))+((carryover>0)?carryover--:0); + if (sum>=10) { + carryover=1; + sum-=10; + } + str[offset]=sum+'0'; + } else { + str[offset]=numb2.str[numb2.length-offset-1]; + } + } + } + if (carryover>0) { + str = realloc(str,++digitCount); + str[digitCount-1]='1'; + } + for (int i=0;ij*w6D3jOHq#aripii!2~A*W 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 L^lfN-{E`0x8?_f@ delta 2635 zcmZ`*4Qx|Y6u$TMXKmTod)vxmFzs5MFktQe%9vZXc36EgLzyrY(M)ve7SW6_!a&Sw z=H{BwSUeg_vKUA-lz?X1L|FtG106F)itz{VC)3QNM58c32Qr`MzMln_c$a&>d%pAC z(|gZ7z1`Hyw6BLo=L_RJQJP-`a&lMUKAR;?wJd47&be)GXx1BPkVV~9NiV&q1A+9Onnj#MS=_x0luj*&xqbf}vh27l!&i{+v%Biweuo{|k zY_Y4i*$S^ND5{1!|B5fks(CAx!4AV>yA4(PMhSUIS!07C!y=joKO0242?9nD#trl7 zGR3Y}#t36+nKHj!83z>RPS|U7@y*SfJ2pJ|Z1avXZOTA6 z{3A0X`%H=!+lH1plGE0f!IbMYZp(r;D_ijt6JyhJX;DowEU1$`S_XAKr12KN;)kOq zFQl8(Gg7sxp52cbGRz`Wo6`%XZeUqr^fsvR?A|H(P`wdj4Bx;S;W=ankWJpeS`vHB z2J36Q%d*`=$fR8G0xaS0&1p4aoXPWhWm%41%DnX&I-Y|#pXbF%1`0DBcM+mFOtb81 z_s#w*ZW!WkY3jv;NRf<81$@UazHI*rrI({p#CH`ZQp7aLpmM6iF7=z^Qrk zCd|Ydsr&a_Ez;&3&nczPCC-J%6MP1)u zF)M*nTd&D-H*TXpI9?Szv*Y8VtnN~QYcN;r?()vazPfso?1(BGP}m7vJW&<=VaHq1 zC}w`~`p5LUWE%`T)DZE#a0elQ2kXP%2Ab-_R|0DT;pzEGYyXnv)hz9QqYkkhQMosyaTw?9B=Cr=lqr@=q@ z8Mmy)nD~7lhJ_IFY9^CVWGBH=rjlOmpPAFlYwX3X|n{dKpnH#0f zaxqu`G1R4}lnIkImWzdazRs(71%ZoHb+L_eXm$@3T=U8sa1l@+55!WPsnFsB6#h} zpHgY^2a9Io@Mf9!h#g9o-;sMz6OU`|bcV|DJ~Wx|PkP?s9m3MKocnywAW{ zC_GZ_7LwZWbo>xbmuADk>O7&BJ(AdToCjyCJ;EN1)v*|IeI9F4W0TP6tC%Tky}Ys5 zeO;Evm1wxtV?GfoY6R%3;o;$$Vrx{(Q51xlMR2Hw&(gD|<2zs!&enRY`u`R&5d0Nj@fSm V)|xo$uch==$gQiO`=GII(SJKsZE64j diff --git a/src/main.c b/src/main.c index 254c7db..74ce739 100644 --- a/src/main.c +++ b/src/main.c @@ -2,13 +2,88 @@ #include "utils.h" /* - + You are given the following information, but you may prefer to do some research for yourself. - https://projecteuler.net/problem= + 1 Jan 1900 was a Monday. + Thirty days has September, + April, June and November. + All the rest have thirty-one, + Saving February alone, + Which has twenty-eight, rain or shine. + And on leap years, twenty-nine. + A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400. + How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)? + + https://projecteuler.net/problem=19 */ +enum Month {JANUARY=1,FEBRUARY,MARCH,APRIL,MAY,JUNE,JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER}; + +int DaysInMonth(enum Month month,int year) { + switch (month) { + case JANUARY: + case MARCH: + case MAY: + case JULY: + case AUGUST: + case OCTOBER: + case DECEMBER:{ + return 31; + }break; + case APRIL: + case JUNE: + case SEPTEMBER: + case NOVEMBER:{ + return 30; + }break; + case FEBRUARY:{ + return ((year%100==0)&&(year%400!=0))?28:(year%4==0)?29:28; + }break; + } +} + int main(int argc,char**argv) { - int testArr[][5] = {{1,2,3,4},{1,2,5,3},{6,2,1,7},{2,3,1,631},{1,0,0,0,1}}; - printIntDoubleArr(5,5,testArr); + int day=1; + enum Month month=1; + int year=1900; + enum Weekday{ + SUNDAY, + MONDAY, + TUESDAY, + WEDNESDAY, + THURSDAY, + FRIDAY, + SATURDAY, + } weekday=MONDAY; + + int sundayCount=0; + + while((day!=31)||(month!=12)||(year!=2000)) { + printf("Date: %d/%d/%d\n",month,day,year); + if (year>=1901) { + //Start counting Sundays. + if (weekday==SUNDAY&&day==1) { + sundayCount++; + } + } + //Increment the day. + if (day+1<=DaysInMonth(month,year)) { + day++; + } else + if (month+1<=12){ + //It's a new month. + month++; + day=1; + } else { + //It's a new year! + year++; + day=1; + month=1; + //printf("The year is now %d...\n",year); + } + weekday=((weekday+1)<=SATURDAY)?weekday+1:SUNDAY; + } + + printf("\n\n%d Sundays were on the 1st of the month.",sundayCount); return 0; } \ No newline at end of file