From 693ee1e4ae64bc187a4ca89a05ceacf84ca86520 Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Wed, 20 Jul 2022 15:06:57 +0000 Subject: [PATCH] #24 permutations complete Co-authored-by: sigonasr2 --- archives/24/current | Bin 0 -> 21384 bytes archives/24/src/main.c | 79 +++++++++++++++++++++++ archives/24/src/utils.c | 140 ++++++++++++++++++++++++++++++++++++++++ archives/24/src/utils.h | 14 ++++ current | Bin 17136 -> 21384 bytes src/main.c | 89 ++++++++++++++++--------- 6 files changed, 290 insertions(+), 32 deletions(-) create mode 100755 archives/24/current create mode 100644 archives/24/src/main.c create mode 100644 archives/24/src/utils.c create mode 100644 archives/24/src/utils.h diff --git a/archives/24/current b/archives/24/current new file mode 100755 index 0000000000000000000000000000000000000000..dcd94749998f2d95f82404760deaf4cc6d4a1a60 GIT binary patch literal 21384 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 Ku|vR-6#ou#=;zk} literal 0 HcmV?d00001 diff --git a/archives/24/src/main.c b/archives/24/src/main.c new file mode 100644 index 0000000..d4ed085 --- /dev/null +++ b/archives/24/src/main.c @@ -0,0 +1,79 @@ +#include +#include "utils.h" + +/* + A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are: + + 012 021 102 120 201 210 + + What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9? + + https://projecteuler.net/problem=24 +*/ + +void carryover(int*arr,int digit) { + arr[digit]=0; + if (arr[digit-1]==9) { + carryover(arr,digit-1); + } else { + arr[digit-1]++; + } +} + +void incrementDigit(int*arr) { + int val = arr[9]; + if (arr[9]==9) { + carryover(arr,9); + } else { + arr[9]++; + } +} + +boolean allUniqueDigits(int*arr) { + boolean digits[10] = {}; + for (int i=0;i<10;i++) { + if (!digits[arr[i]]) { + digits[arr[i]]=true; + } else { + return false; + } + } + return true; +} + +int factorial(int numb) { + int final=1; + for (int i=numb;i>=1;i--) { + final*=i; + } + return final; +} + +int main(int argc,char**argv) { + + //For permutations, we know that there are a total of N! permutations. + // Which means each individual set starts at N!/N. So we can skip ahead some permutations. + // For 10 numbers, we get 362,880 values per permutation set. So 1000000/362880 = 2. So we'll start at permutation two. + int setPermutationCount=factorial(10)/10; + int permutationCount=(1000000/setPermutationCount)*setPermutationCount; + int digits[10]={2,0,1,3,4,5,6,7,8,9}; + while ((digits[0]!=9||digits[1]!=8||digits[2]!=7||digits[3]!=6||digits[4]!=5||digits[5]!=4||digits[6]!=3||digits[7]!=2||digits[8]!=1||digits[9]!=0)&&permutationCount!=999999) { + incrementDigit(digits); + if (allUniqueDigits(digits)) { + permutationCount++; + printf("%d:",permutationCount); + for (int i=0;i<10;i++) { + printf(" %d ",digits[i]); + } + printf("\n"); + } + } + + printf("\n\nThe one millionth lexicographic permutation is: \n\t"); + for (int i=0;i<10;i++) { + printf("%d",digits[i]); + } + + + return 0; +} \ No newline at end of file diff --git a/archives/24/src/utils.c b/archives/24/src/utils.c new file mode 100644 index 0000000..715c599 --- /dev/null +++ b/archives/24/src/utils.c @@ -0,0 +1,140 @@ +#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;i_=2eVd z7Z0X@O|}Obmg7sbtoO@^U!juBitC`_I@o~!K>gGDtn%boJSqo3NAWSbQC++A7<`BB zNZGyjZRf9ZSi=j?uNOWveztG+&u2Zs9*u|gD$md9sH8GEG53WtPtjo0{#P)^Uv^dUkL%MU)O0m2P=vlF#+m6?n+M7W! z=GG&0%b0Tq*n2h0_4ye6dW?QGM*lKKzgUBBn;zQqK8z~sUul=Xwg;*fQ~v_4a{<O2M7V^4ee4VAhH)Uac-rfi-kMNFs zA47siST2+=M^7f|$9j?ugx*R*8y7tu6s`nHnP_GCxPn4y5hFYjVuzV&QpDb2=6?tc zGZCUpK0zKNRqG`>M4f=tB9}anP7d>Je&V!wrOgK&GNh8NZD6Ti6fAQpL zGQTX}AhfcjiBbY?ZKVC4C@xj(>zx{A1medtQ&8^YDxOIfj3=1|A0u$>3lM1md8eS8 zKRJi5ne!6)?`F+-5*kp9IlLEW zGht59dcMaqS2!U~>Mti~Jn7I1PM|$To|)kU%98-Y0~>PXq27=ksx|hN!+VD`vlcVB zaF?VxqNX_#mF7CtX-(ufcyY`Kb&M2p==7Q;&CW;`6Xx~ukXH0B;A<)HxCE45E= z^V=R?k5KJXTYQ&lo3{AoYj@T97MfW9h7_Q8ZY#P6dr24RoDSZ|F;l_DJjaS)V}gZ# z%@QY#cR_0vvJ|vhq?qtyFznjzv~+ejE$yzhHdkkdd%va4`EyrG=f1Ay1N&VqmIKbN zc8|N+4K|CbyUJqFqk>lW(=2FfB@*mODoaz{53!(fH1w4yegs$+7R4)o^?(b2$HU@t z;&BlCUyEW2%)S1yD3$>}4Y&*NHlQ1D{WqfcI^g^jQT!|5my@Cx2HbH&6yspL1;9eU z-$2{80mj{gb%1Wbk8rQ$;Y~AgEcS3+; ziw;v@=!K4yE;+1>e_k?64@iW{17N=ZxR`(@L=lfdpwG=T@(L95a+Mq-PWA7 zJs>jIMe#&*REEUTEz@|^nioF>V*fOrwbtp%psA;(MG;#c zNrpN4kpTxbY)+c6l9&i($bbS3_=^p>R0F=V!AorqzOXT!0_8nA4Zl;|Of?1#C6_3# zx=2|gfd(Zl9l@du8kCIGgHaR>XOR>XDT!ueS%Xp`i3jm%NICmFv&^bN=}0}0MH@6| zH3}$4gylTc+8E8qvIb=$QzQOh)2}iVEA&pf9)n*Bk;mibN{gW#ua)km*O%hi(qi?L zrg)LD6>>@22=JU_y{yEK&GQESx;)+a9aznD22#(pQULf_0Ua?% z&0d^h$ON7=VMnS=M3h5ruEOuJ%DhwYFD5(;dh(V>6_0Dm$y)kYfLDXU|0!2qBJD;H z&%kYh;aMHimk56I`{`P8+LPjXJs=Uk*!~?-;`S^3mc9)T^JRs1D&3MkO2EIN@VhLa z!1cBa=mhYjL$UFLz*}HcDk{uzpMZ>SmL>;(TG37E_cph5C@+5^rv^IF4I;^2D zn(&kMjRtiJCam~~y~0$YB&Xmr_|xiKJYzSR)o+4|N3q#aoTPpcRAg!Vq@!4`d=COP ze8f?qY6CVrx}*)-u%Wg>uWa~$9d89qeIpKhWJxnQ@Mx`_a$rN9UFVSVdkOETtI&rY Tm$hs7)w&A$-K}`EZq5GzMEHy+ delta 2669 zcmZuy4Qx|Y6u$3u-MYcHcI{TWb!%xTVUV?TvJ@P3?bbIsGUFHy69vP_Owde>P+~O0 zEh*@lGAJBP(2%e|49pONbWv1PkO>nIrx6@P&9a1~Aj&p2HlXl4_r3d|>%7T*-#Op; zx%b?^*LjE=+0I25@UF_;3;${ta*5OwBwAVL5YnhH7!+ysRsj9G8x!Xqjw} zdZuFsi|dpT-sAFg%(a`jc6;Cx?&4g7RgO%>R+%QP@FCxz#6BJd?(rK99TUUnC%=62 z#OAx1uSd4b@hs@y?uxakw(#w23=K;%q?3icDSS8MHD1}S_$&HgmCVypRkA33hmv?| zQ(Bzy?Uc+=Sj3T}fUG2bDv6(!#2;on%|Z7_X-AWIw#1U@coL8MS*iGwlSu~kBbJc< zBwneSng^<43p0i_7AGNr?I(l0I1mW+X--R#V#Ow;$3**PCoIyw){IK7#ZSoX+>(39 zK5$IeCsOo(QuJ#n`kyKKB?sKq7MB;~;8eP@_h(b^oWhxi`Nz<8Jc{ZS6aro9Unwk| z3g!nQ>YWY<=*$|)P;tNktvWO3fUvHl6e+T0QBxq~sitBed@VRT5b@Na694g`D8^ev zQ9PseIAB0G4?u4;ofZ0Nae+wFR7>DVgM9%y1l94Jhp}h!eQCTtGZr=7=lFjo zp{wWxzHt(+7gh2VlQ7@h#6P?PTg?^x?{{LoW-Z76FcCXbtmgP{$Kj`vgS=@RHd%UX z^s33j`ft-=hq#C^R4EL$ef=Fhaq*nn;IW2maV$Z0+dnqV?Hk$cl`$B$Zg%Hdw$T!# zz4bj`-{m=7LWpm5UHG!EsV+R>d(Ib5GzGfKdXZjLU-}>rx~Ylhj>dM))p2`VY3=qF zD{&EfYfC1vV<%jZs&WJ7n@#(ODDFdSL+nG`f%pgFO+-5CrBP8FN9@K48gROucSX^Q zm`I3X3*x~CqS%QTz~w!Hcm$E|j2XAjjH_TE1pamv7p}v6ct#2FXGqW8JQNpW-*5|T zPt0#TdP@}9Gf16i7ztuOjQl!8rI}IKf&B`mJ5Na=NBb^clbz0gKRW~O4&BKk*td;B zVfp;@K@`1HP+MM-oDTByAs4= zBv6sOM{oLcUQd*lcRFt%9oA$P=>3Sw#wo)(c-%?=mqfu9wtm@yii9Jgl#A;&SY%d5QPiV64We{05jOIU~8woY2pb z!_3NtC4S}#O-OlW7LbdFkEchR9V_VeYYW%l4WVs~45SDro`)VT3!L+>Za#;qm2R+? z*%@qPZu{8Y2igB;6Y^U0*QWT}sXwnHsk{FcjQWk-2hz8Peog%>L+Xf^Kv!!7tB|%< z$D4@q3shz`icz|xQ!qNlvb}u)oKSHYwFPkBDYWW)+EUR-vsICLDS1gS+t@xCSY3hemd_@l2c-E1n?7|WY z*c#kgD;t2J9(w96(Al8XDR)o7R_JMP=5;VX1^YR;(csKv_byrnwv}#0+gk?fA8XxZ zZ~!%Sv7$~GM$OAccY&?Zt<=1;i--) { + final*=i; } + return final; } int main(int argc,char**argv) { - //X * (2^(X-2)) - //0 - //01 - //02 - //03 - //04 - //05 - //06 - //07 - //08 - //09 - //10 - //123 - //124 - //20 - //21 - //3 - //4 - //5 - //6 - //7 - //8 - //9 - - boolean useNextHighest=true; //If this is true, use the next consecutive digit, otherwise skip one. - int*numbs=malloc(sizeof(int)*0); - generate(numbs,count,true); + + //For permutations, we know that there are a total of N! permutations. + // Which means each individual set starts at N!/N. So we can skip ahead some permutations. + // For 10 numbers, we get 362,880 values per permutation set. So 1000000/362880 = 2. So we'll start at permutation two. + int setPermutationCount=factorial(10)/10; + int permutationCount=(1000000/setPermutationCount)*setPermutationCount; + int digits[10]={2,0,1,3,4,5,6,7,8,9}; + while ((digits[0]!=9||digits[1]!=8||digits[2]!=7||digits[3]!=6||digits[4]!=5||digits[5]!=4||digits[6]!=3||digits[7]!=2||digits[8]!=1||digits[9]!=0)&&permutationCount!=999999) { + incrementDigit(digits); + if (allUniqueDigits(digits)) { + permutationCount++; + printf("%d:",permutationCount); + for (int i=0;i<10;i++) { + printf(" %d ",digits[i]); + } + printf("\n"); + } + } + + printf("\n\nThe one millionth lexicographic permutation is: \n\t"); + for (int i=0;i<10;i++) { + printf("%d",digits[i]); + } return 0;