From a8515687247e735e85b1c1c23de294c837531d24 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Fri, 22 Jul 2022 16:58:34 +0000 Subject: [PATCH] Completed the spiralllll Co-authored-by: sigonasr2 --- archives/28/current | Bin 0 -> 21304 bytes archives/28/src/main.c | 68 ++++++++++++++++ archives/28/src/utils.c | 173 ++++++++++++++++++++++++++++++++++++++++ archives/28/src/utils.h | 16 ++++ current | Bin 21392 -> 21304 bytes src/main.c | 98 ++++++++++++----------- 6 files changed, 307 insertions(+), 48 deletions(-) create mode 100755 archives/28/current create mode 100644 archives/28/src/main.c create mode 100644 archives/28/src/utils.c create mode 100644 archives/28/src/utils.h diff --git a/archives/28/current b/archives/28/current new file mode 100755 index 0000000000000000000000000000000000000000..797c91e76a9b5f60c3eccf0801fb2d06c61d265d GIT binary patch literal 21304 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 +#include "utils.h" + +/* + Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows: + + 21 22 23 24 25 + 20 7 8 9 10 + 19 6 1 2 11 + 18 5 4 3 12 + 17 16 15 14 13 + + It can be verified that the sum of the numbers on the diagonals is 101. + + What is the sum of the numbers on the diagonals in a 1001 by 1001 spiral formed in the same way? + + https://projecteuler.net/problem=28 +*/ + +enum dir{RIGHT,DOWN,LEFT,UP}; + +#define SPIRAL_SIZE 1001 + +int main(int argc,char**argv) { + //Move the number repeatedly in a spiral. Anytime the number in both the X and Y coordinates match, you sum. + int x=0; + int y=0; + int number=1; + long sum=0; + boolean adjust=false; + int maxCounter=1; + int counter=maxCounter; + enum dir dir=0; + while (x<=SPIRAL_SIZE/2&&y<=SPIRAL_SIZE/2&&x>=-SPIRAL_SIZE/2&&y>=-SPIRAL_SIZE/2) { + if (x==y||-x==y||x==-y||-x==-y) { + sum+=number; + printf("Added %d at (%d,%d). Sum:%ld\n",number,x,y,sum); + } + switch (dir) { + case RIGHT:{ + x++; + }break; + case DOWN:{ + y++; + }break; + case LEFT:{ + x--; + }break; + case UP:{ + y--; + }break; + } + if (--counter==0) { + if (!adjust) { + adjust=true; + } else { + adjust=false; + maxCounter++; + } + dir=(dir+1)%4; + counter=maxCounter; + } + number++; + //printf("(%d,%d)\n",x,y); + } + printf("\n\nFinal Sum:%ld",sum); + return 0; +} \ No newline at end of file diff --git a/archives/28/src/utils.c b/archives/28/src/utils.c new file mode 100644 index 0000000..47f5e25 --- /dev/null +++ b/archives/28/src/utils.c @@ -0,0 +1,173 @@ +#include "utils.h" +#include +#include + +struct String mult(struct String numb1, struct String numb2) { + struct String n1 = numb1; + struct String n2 = numb2; + byte carryover = 0; + if (numb2.length>numb1.length) { + n1=numb2; + n2=numb1; + } + int addends[n2.length][n1.length+1]; + for (int i=0;i=0;i--) { + carryover=0; + for (int j=n1.length-1;j>=0;j--) { + int mult = (n1.str[j]-'0')*(n2.str[i]-'0')+((carryover!=0)?carryover:0); + //printf(" %d/%d\n",mult,carryover); + carryover=0; + if (mult>=10) { + carryover=mult/10; + mult=mult%10; + } + addends[(n2.length-1)-i][j+1]=mult; + } + if (carryover>0) { + addends[(n2.length-1)-i][0]=carryover; + } + } + //printIntDoubleArr(n2.length,n1.length+1,addends); + struct String sum = {1,"0"}; + for (int i=0;i=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]+((carryover>0)?carryover--:0); + } + //str[offset+1]='\0'; + } + } 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]+((carryover>0)?carryover--:0); + } + //str[offset+1]='\0'; + } + } + if (carryover>0) { + str = realloc(str,++digitCount); + str[digitCount-1]='1'; + //str[digitCount]='\0'; + } + for (int i=0;iK8k!&j1|FCQ0xTudvQ`1jXdy~E(%DTb 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 v0=-SPIRAL_SIZE/2&&y>=-SPIRAL_SIZE/2) { + if (x==y||-x==y||x==-y||-x==-y) { + sum+=number; + printf("Added %d at (%d,%d). Sum:%ld\n",number,x,y,sum); } - primes[counter++]=digit; - } - int n=0; - - int maxLength=0; - int maxA=0; - int maxB=0; - - for (int a=-999;a<1000;a++) { - for (int b=-999;b<=1000;b++) { - for (int p=0;p<2500;p++) { - if (n*n+a*n+b==primes[p]) { - n++; - p=0; - } - } - if (n>maxLength) { - maxLength=n; - maxA=a; - maxB=b; - printf("New max of %d found with n^2+%dn+%d\n",maxLength,maxA,maxB); + switch (dir) { + case RIGHT:{ + x++; + }break; + case DOWN:{ + y++; + }break; + case LEFT:{ + x--; + }break; + case UP:{ + y--; + }break; + } + if (--counter==0) { + if (!adjust) { + adjust=true; + } else { + adjust=false; + maxCounter++; } - n=0; + dir=(dir+1)%4; + counter=maxCounter; } + number++; + //printf("(%d,%d)\n",x,y); } - printf("\n\nProduct of maxes (%d*%d)=%ld\n",maxA,maxB,(long)maxA*maxB); - + printf("\n\nFinal Sum:%ld",sum); return 0; } \ No newline at end of file