// Checking tool. txt files are from http://kociemba.org/symmetric2.htm // Compile, then at command prompt run (Windows, or next line is Unix) // Verifier.exe Th.txt Th.out // ./Verifier Th.txt Th.out #include "stdio.h" #include "stdlib.h" #include "stdint.h" #include "vector" using std::vector; #include "time.h" //#include //#include //using std::cin; // to pause use cin.get(); vector loadrbks(const char filename[20]) { vector rbkstrvec; FILE* input = fopen(filename, "r"); if(input == NULL) { fprintf(stderr, "Error: cannot open file, %s for reading.\n", filename); return rbkstrvec; } const uint32_t N = 1048576; rbkstrvec.reserve(N+3); rbkstrvec.resize(N+2); char *rbkstr = &rbkstrvec[0]; size_t nread = fread(rbkstr+1, 1, N, input); if(nread==N) { rewind(input); const uint32_t N2 = 61212870; printf("Increasing size to handle %s probably larger than 1MB.\n", filename); rbkstrvec.reserve(N2+3); rbkstrvec.resize(N2+2); rbkstr = &rbkstrvec[0]; nread = fread(rbkstr+1, 1, N2, input); if(nread==N2) printf("Warning: file, %s is probably bigger than 61,212,869 bytes.\n", filename); } fclose(input); *rbkstr = 10; rbkstr[nread+1] = 0; printf(" %s loaded. nread=%zd\n", filename, nread); rbkstrvec.resize(nread+2); rbkstrvec.reserve(nread+3); return rbkstrvec; } int main(int argc, char *argv[]) { printf("\nStart of main()\n"); clock_t t = clock(); if(argc!=3) { printf("Error, argc = %d != 3\nExiting...\n",argc); return 0; } vector rbkstr0vec=loadrbks(argv[1]), rbkstr1vec=loadrbks(argv[2]); char *rbkstr0=&rbkstr0vec[1], *rbkstr1=&rbkstr1vec[1]; uint64_t distreco[27] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, *distrece=distreco+26, *distrecp=distreco; /*rbkstr0[100]='\0', rbkstr1[100]='\0'; printf("%s\n",rbkstr0); for(uint8_t i=0; i!=101; i++) printf("%d\n",rbkstr0[i]); printf("%s\n",rbkstr1); for(uint8_t i=0; i!=101; i++) printf("%d\n",rbkstr1[i]); printf("\n\n backs are %d %d",rbkstr0[rbkstr0vec.size()-2], rbkstr1[rbkstr1vec.size()-2]); return 0;*/ const uint8_t ma[3]={1,2,0}, mb[3]={2,0,1}; uint8_t C[8], c[8], D[8], d[8], E[12], e[12], F[12], f[12], temp; uint32_t count=0, count_fail=0, count_total=0, *E_B4=(uint32_t *)(E+8), *e_B4=(uint32_t *)(e+8), *F_B4=(uint32_t *)(F+8), *f_B4=(uint32_t *)(f+8); uint64_t *C_B8=(uint64_t *)C, *c_B8=(uint64_t *)c, *D_B8=(uint64_t *)D, *d_B8=(uint64_t *)d, *E_B8=(uint64_t *)E, *e_B8=(uint64_t *)e, *F_B8=(uint64_t *)F, *f_B8=(uint64_t *)f; while(rbkstr0[0]>63) { *E_B8=*e_B8=*C_B8=*c_B8=506097522914230528, *E_B4=*e_B4=185207048, *F_B8=*f_B8=*D_B8=*d_B8=0, *F_B4=*f_B4=0; while(*rbkstr0!=10) { if(*rbkstr0=='U') { if(rbkstr0[1]=='2') { temp=*C; *C=C[2]; C[2]=temp; temp=C[1]; C[1]=C[3]; C[3]=temp; temp=*D; *D=D[2]; D[2]=temp; temp=D[1]; D[1]=D[3]; D[3]=temp; temp=*E; *E=E[2]; E[2]=temp; temp=E[1]; E[1]=E[3]; E[3]=temp; temp=*F; *F=F[2]; F[2]=temp; temp=F[1]; F[1]=F[3]; F[3]=temp; rbkstr0+=2; } else if(rbkstr0[1]==39||rbkstr0[1]=='3'||rbkstr0[1]==40) { temp=*C; *C=C[3]; C[3]=C[2]; C[2]=C[1]; C[1]=temp; temp=*D; *D=D[3]; D[3]=D[2]; D[2]=D[1]; D[1]=temp; temp=*E; *E=E[3]; E[3]=E[2]; E[2]=E[1]; E[1]=temp; temp=*F; *F=F[3]; F[3]=F[2]; F[2]=F[1]; F[1]=temp; rbkstr0+=2; } else if(rbkstr0[1]!='0') { temp=*C; *C=C[1]; C[1]=C[2]; C[2]=C[3]; C[3]=temp; temp=*D; *D=D[1]; D[1]=D[2]; D[2]=D[3]; D[3]=temp; temp=*E; *E=E[1]; E[1]=E[2]; E[2]=E[3]; E[3]=temp; temp=*F; *F=F[1]; F[1]=F[2]; F[2]=F[3]; F[3]=temp; if(rbkstr0[1]=='+'||rbkstr0[1]==49) rbkstr0+=2; else rbkstr0++; } } else if(*rbkstr0=='D') { if(rbkstr0[1]=='2') { temp=C[4]; C[4]=C[6]; C[6]=temp; temp=C[5]; C[5]=C[7]; C[7]=temp; temp=D[4]; D[4]=D[6]; D[6]=temp; temp=D[5]; D[5]=D[7]; D[7]=temp; temp=E[8]; E[8]=E[10];E[10]=temp;temp=E[9]; E[9]=E[11];E[11]=temp; temp=F[8]; F[8]=F[10];F[10]=temp;temp=F[9]; F[9]=F[11];F[11]=temp; rbkstr0+=2; } else if(rbkstr0[1]==39||rbkstr0[1]=='3'||rbkstr0[1]==40) { temp=C[4]; C[4]=C[7]; C[7]=C[6]; C[6]=C[5]; C[5]=temp; temp=D[4]; D[4]=D[7]; D[7]=D[6]; D[6]=D[5]; D[5]=temp; temp=E[8];E[8]=E[11];E[11]=E[10];E[10]=E[9];E[9]=temp; temp=F[8];F[8]=F[11];F[11]=F[10];F[10]=F[9];F[9]=temp; rbkstr0+=2; } else if(rbkstr0[1]!='0') { temp=C[4]; C[4]=C[5]; C[5]=C[6]; C[6]=C[7]; C[7]=temp; temp=D[4]; D[4]=D[5]; D[5]=D[6]; D[6]=D[7]; D[7]=temp; temp=E[8]; E[8]=E[9];E[9]=E[10];E[10]=E[11];E[11]=temp; temp=F[8]; F[8]=F[9];F[9]=F[10];F[10]=F[11];F[11]=temp; if(rbkstr0[1]=='+'||rbkstr0[1]==49) rbkstr0+=2; else rbkstr0++; } } else if(*rbkstr0=='F') { if(rbkstr0[1]=='2') { temp=C[2]; C[2]=C[4]; C[4]=temp; temp=C[3]; C[3]=C[5]; C[5]=temp; temp=D[2]; D[2]=D[4]; D[4]=temp; temp=D[3]; D[3]=D[5]; D[5]=temp; temp=E[3]; E[3]=E[9]; E[9]=temp; temp=E[6]; E[6]=E[7]; E[7]=temp; temp=F[3]; F[3]=F[9]; F[9]=temp; temp=F[6]; F[6]=F[7]; F[7]=temp; rbkstr0+=2; } else if(rbkstr0[1]==39||rbkstr0[1]=='3'||rbkstr0[1]==40) { temp=C[2]; C[2]=C[3]; C[3]=C[4]; C[4]=C[5]; C[5]=temp; temp=D[2];D[2]=mb[D[3]];D[3]=ma[D[4]];D[4]=mb[D[5]];D[5]=ma[temp]; temp=E[3]; E[3]=E[7]; E[7]=E[9]; E[9]=E[6]; E[6]=temp; temp=F[3];F[3]=F[7]^1;F[7]=F[9]^1;F[9]=F[6]^1;F[6]=temp^1; rbkstr0+=2; } else if(rbkstr0[1]!='0') { temp=C[2]; C[2]=C[5]; C[5]=C[4]; C[4]=C[3]; C[3]=temp; temp=D[2];D[2]=mb[D[5]];D[5]=ma[D[4]];D[4]=mb[D[3]];D[3]=ma[temp]; temp=E[3]; E[3]=E[6]; E[6]=E[9]; E[9]=E[7]; E[7]=temp; temp=F[3];F[3]=F[6]^1;F[6]=F[9]^1;F[9]=F[7]^1;F[7]=temp^1; if(rbkstr0[1]=='+'||rbkstr0[1]==49) rbkstr0+=2; else rbkstr0++; } } else if(*rbkstr0=='B') { if(rbkstr0[1]=='2') { temp=*C; *C=C[6]; C[6]=temp; temp=C[1]; C[1]=C[7]; C[7]=temp; temp=*D; *D=D[6]; D[6]=temp; temp=D[1]; D[1]=D[7]; D[7]=temp; temp=E[1]; E[1]=E[11]; E[11]=temp; temp=E[4]; E[4]=E[5]; E[5]=temp; temp=F[1]; F[1]=F[11]; F[11]=temp; temp=F[4]; F[4]=F[5]; F[5]=temp; rbkstr0+=2; } else if(rbkstr0[1]==39||rbkstr0[1]=='3'||rbkstr0[1]==40) { temp=*C; *C=C[1]; C[1]=C[6]; C[6]=C[7]; C[7]=temp; temp=*D; *D=mb[D[1]]; D[1]=ma[D[6]]; D[6]=mb[D[7]]; D[7]=ma[temp]; temp=E[1]; E[1]=E[5]; E[5]=E[11]; E[11]=E[4]; E[4]=temp; temp=F[1];F[1]=F[5]^1;F[5]=F[11]^1;F[11]=F[4]^1;F[4]=temp^1; rbkstr0+=2; } else if(rbkstr0[1]!='0') { temp=*C; *C=C[7]; C[7]=C[6]; C[6]=C[1]; C[1]=temp; temp=*D; *D=mb[D[7]]; D[7]=ma[D[6]]; D[6]=mb[D[1]]; D[1]=ma[temp]; temp=E[1]; E[1]=E[4]; E[4]=E[11]; E[11]=E[5]; E[5]=temp; temp=F[1];F[1]=F[4]^1;F[4]=F[11]^1;F[11]=F[5]^1;F[5]=temp^1; if(rbkstr0[1]=='+'||rbkstr0[1]==49) rbkstr0+=2; else rbkstr0++; } } else if(*rbkstr0=='R') { if(rbkstr0[1]=='2') { temp=*C; *C=C[4]; C[4]=temp; temp=C[3]; C[3]=C[7]; C[7]=temp; temp=*D; *D=D[4]; D[4]=temp; temp=D[3]; D[3]=D[7]; D[7]=temp; temp=*E; *E=E[8]; E[8]=temp; temp=E[4]; E[4]=E[7]; E[7]=temp; temp=*F; *F=F[8]; F[8]=temp; temp=F[4]; F[4]=F[7]; F[7]=temp; rbkstr0+=2; } else if(rbkstr0[1]==39||rbkstr0[1]=='3'||rbkstr0[1]==40) { temp=*C; *C=C[7]; C[7]=C[4]; C[4]=C[3]; C[3]=temp; temp=*D; *D=ma[D[7]]; D[7]=mb[D[4]]; D[4]=ma[D[3]]; D[3]=mb[temp]; temp=*E; *E=E[4]; E[4]=E[8]; E[8]=E[7]; E[7]=temp; temp=*F; *F=F[4]; F[4]=F[8]; F[8]=F[7]; F[7]=temp; rbkstr0+=2; } else if(rbkstr0[1]!='0') { temp=*C; *C=C[3]; C[3]=C[4]; C[4]=C[7]; C[7]=temp; temp=*D; *D=ma[D[3]]; D[3]=mb[D[4]]; D[4]=ma[D[7]]; D[7]=mb[temp]; temp=*E; *E=E[7]; E[7]=E[8]; E[8]=E[4]; E[4]=temp; temp=*F; *F=F[7]; F[7]=F[8]; F[8]=F[4]; F[4]=temp; if(rbkstr0[1]=='+'||rbkstr0[1]==49) rbkstr0+=2; else rbkstr0++; } } else if(*rbkstr0=='L') { if(rbkstr0[1]=='2') { temp=C[1]; C[1]=C[5]; C[5]=temp; temp=C[2]; C[2]=C[6]; C[6]=temp; temp=D[1]; D[1]=D[5]; D[5]=temp; temp=D[2]; D[2]=D[6]; D[6]=temp; temp=E[2];E[2]=E[10];E[10]=temp; temp=E[5]; E[5]=E[6]; E[6]=temp; temp=F[2];F[2]=F[10];F[10]=temp; temp=F[5]; F[5]=F[6]; F[6]=temp; rbkstr0+=2; } else if(rbkstr0[1]==39||rbkstr0[1]=='3'||rbkstr0[1]==40) { temp=C[1]; C[1]=C[2]; C[2]=C[5]; C[5]=C[6]; C[6]=temp; temp=D[1];D[1]=mb[D[2]];D[2]=ma[D[5]];D[5]=mb[D[6]];D[6]=ma[temp]; temp=E[2]; E[2]=E[6];E[6]=E[10];E[10]=E[5]; E[5]=temp; temp=F[2]; F[2]=F[6];F[6]=F[10];F[10]=F[5]; F[5]=temp; rbkstr0+=2; } else if(rbkstr0[1]!='0') { temp=C[1]; C[1]=C[6]; C[6]=C[5]; C[5]=C[2]; C[2]=temp; temp=D[1];D[1]=mb[D[6]];D[6]=ma[D[5]];D[5]=mb[D[2]];D[2]=ma[temp]; temp=E[2]; E[2]=E[5];E[5]=E[10];E[10]=E[6]; E[6]=temp; temp=F[2]; F[2]=F[5];F[5]=F[10];F[10]=F[6]; F[6]=temp; if(rbkstr0[1]=='+'||rbkstr0[1]==49) rbkstr0+=2; else rbkstr0++; } } else if(*rbkstr0=='(') { rbkstr0++; if(*rbkstr0>=48&&*rbkstr0<58) { if(rbkstr0[1]>=48&&rbkstr0[1]<58) { distreco[10*(15&*rbkstr0)+(15&rbkstr0[1])]++; rbkstr0 += 2; } else distreco[15&*(rbkstr0++)]++; } while(*rbkstr0!=10) rbkstr0++; break; } else rbkstr0++; } if(*(++rbkstr0)==10) rbkstr0++; while(*rbkstr1!=10) { if(*rbkstr1=='U') { if(rbkstr1[1]=='2') { temp=*c; *c=c[2]; c[2]=temp; temp=c[1]; c[1]=c[3]; c[3]=temp; temp=*d; *d=d[2]; d[2]=temp; temp=d[1]; d[1]=d[3]; d[3]=temp; temp=*e; *e=e[2]; e[2]=temp; temp=e[1]; e[1]=e[3]; e[3]=temp; temp=*f; *f=f[2]; f[2]=temp; temp=f[1]; f[1]=f[3]; f[3]=temp; rbkstr1+=2; } else if(rbkstr1[1]==39||rbkstr1[1]=='3'||rbkstr1[1]==40) { temp=*c; *c=c[3]; c[3]=c[2]; c[2]=c[1]; c[1]=temp; temp=*d; *d=d[3]; d[3]=d[2]; d[2]=d[1]; d[1]=temp; temp=*e; *e=e[3]; e[3]=e[2]; e[2]=e[1]; e[1]=temp; temp=*f; *f=f[3]; f[3]=f[2]; f[2]=f[1]; f[1]=temp; rbkstr1+=2; } else if(rbkstr1[1]!='0') { temp=*c; *c=c[1]; c[1]=c[2]; c[2]=c[3]; c[3]=temp; temp=*d; *d=d[1]; d[1]=d[2]; d[2]=d[3]; d[3]=temp; temp=*e; *e=e[1]; e[1]=e[2]; e[2]=e[3]; e[3]=temp; temp=*f; *f=f[1]; f[1]=f[2]; f[2]=f[3]; f[3]=temp; if(rbkstr1[1]=='+'||rbkstr1[1]==49) rbkstr1+=2; else rbkstr1++; } } else if(*rbkstr1=='D') { if(rbkstr1[1]=='2') { temp=c[4]; c[4]=c[6]; c[6]=temp; temp=c[5]; c[5]=c[7]; c[7]=temp; temp=d[4]; d[4]=d[6]; d[6]=temp; temp=d[5]; d[5]=d[7]; d[7]=temp; temp=e[8]; e[8]=e[10];e[10]=temp;temp=e[9]; e[9]=e[11];e[11]=temp; temp=f[8]; f[8]=f[10];f[10]=temp;temp=f[9]; f[9]=f[11];f[11]=temp; rbkstr1+=2; } else if(rbkstr1[1]==39||rbkstr1[1]=='3'||rbkstr1[1]==40) { temp=c[4]; c[4]=c[7]; c[7]=c[6]; c[6]=c[5]; c[5]=temp; temp=d[4]; d[4]=d[7]; d[7]=d[6]; d[6]=d[5]; d[5]=temp; temp=e[8];e[8]=e[11];e[11]=e[10];e[10]=e[9];e[9]=temp; temp=f[8];f[8]=f[11];f[11]=f[10];f[10]=f[9];f[9]=temp; rbkstr1+=2; } else if(rbkstr1[1]!='0') { temp=c[4]; c[4]=c[5]; c[5]=c[6]; c[6]=c[7]; c[7]=temp; temp=d[4]; d[4]=d[5]; d[5]=d[6]; d[6]=d[7]; d[7]=temp; temp=e[8]; e[8]=e[9];e[9]=e[10];e[10]=e[11];e[11]=temp; temp=f[8]; f[8]=f[9];f[9]=f[10];f[10]=f[11];f[11]=temp; if(rbkstr1[1]=='+'||rbkstr1[1]==49) rbkstr1+=2; else rbkstr1++; } } else if(*rbkstr1=='F') { if(rbkstr1[1]=='2') { temp=c[2]; c[2]=c[4]; c[4]=temp; temp=c[3]; c[3]=c[5]; c[5]=temp; temp=d[2]; d[2]=d[4]; d[4]=temp; temp=d[3]; d[3]=d[5]; d[5]=temp; temp=e[3]; e[3]=e[9]; e[9]=temp; temp=e[6]; e[6]=e[7]; e[7]=temp; temp=f[3]; f[3]=f[9]; f[9]=temp; temp=f[6]; f[6]=f[7]; f[7]=temp; rbkstr1+=2; } else if(rbkstr1[1]==39||rbkstr1[1]=='3'||rbkstr1[1]==40) { temp=c[2]; c[2]=c[3]; c[3]=c[4]; c[4]=c[5]; c[5]=temp; temp=d[2];d[2]=mb[d[3]];d[3]=ma[d[4]];d[4]=mb[d[5]];d[5]=ma[temp]; temp=e[3]; e[3]=e[7]; e[7]=e[9]; e[9]=e[6]; e[6]=temp; temp=f[3];f[3]=f[7]^1;f[7]=f[9]^1;f[9]=f[6]^1;f[6]=temp^1; rbkstr1+=2; } else if(rbkstr1[1]!='0') { temp=c[2]; c[2]=c[5]; c[5]=c[4]; c[4]=c[3]; c[3]=temp; temp=d[2];d[2]=mb[d[5]];d[5]=ma[d[4]];d[4]=mb[d[3]];d[3]=ma[temp]; temp=e[3]; e[3]=e[6]; e[6]=e[9]; e[9]=e[7]; e[7]=temp; temp=f[3];f[3]=f[6]^1;f[6]=f[9]^1;f[9]=f[7]^1;f[7]=temp^1; if(rbkstr1[1]=='+'||rbkstr1[1]==49) rbkstr1+=2; else rbkstr1++; } } else if(*rbkstr1=='B') { if(rbkstr1[1]=='2') { temp=*c; *c=c[6]; c[6]=temp; temp=c[1]; c[1]=c[7]; c[7]=temp; temp=*d; *d=d[6]; d[6]=temp; temp=d[1]; d[1]=d[7]; d[7]=temp; temp=e[1]; e[1]=e[11]; e[11]=temp; temp=e[4]; e[4]=e[5]; e[5]=temp; temp=f[1]; f[1]=f[11]; f[11]=temp; temp=f[4]; f[4]=f[5]; f[5]=temp; rbkstr1+=2; } else if(rbkstr1[1]==39||rbkstr1[1]=='3'||rbkstr1[1]==40) { temp=*c; *c=c[1]; c[1]=c[6]; c[6]=c[7]; c[7]=temp; temp=*d; *d=mb[d[1]]; d[1]=ma[d[6]]; d[6]=mb[d[7]]; d[7]=ma[temp]; temp=e[1]; e[1]=e[5]; e[5]=e[11]; e[11]=e[4]; e[4]=temp; temp=f[1];f[1]=f[5]^1;f[5]=f[11]^1;f[11]=f[4]^1;f[4]=temp^1; rbkstr1+=2; } else if(rbkstr1[1]!='0') { temp=*c; *c=c[7]; c[7]=c[6]; c[6]=c[1]; c[1]=temp; temp=*d; *d=mb[d[7]]; d[7]=ma[d[6]]; d[6]=mb[d[1]]; d[1]=ma[temp]; temp=e[1]; e[1]=e[4]; e[4]=e[11]; e[11]=e[5]; e[5]=temp; temp=f[1];f[1]=f[4]^1;f[4]=f[11]^1;f[11]=f[5]^1;f[5]=temp^1; if(rbkstr1[1]=='+'||rbkstr1[1]==49) rbkstr1+=2; else rbkstr1++; } } else if(*rbkstr1=='R') { if(rbkstr1[1]=='2') { temp=*c; *c=c[4]; c[4]=temp; temp=c[3]; c[3]=c[7]; c[7]=temp; temp=*d; *d=d[4]; d[4]=temp; temp=d[3]; d[3]=d[7]; d[7]=temp; temp=*e; *e=e[8]; e[8]=temp; temp=e[4]; e[4]=e[7]; e[7]=temp; temp=*f; *f=f[8]; f[8]=temp; temp=f[4]; f[4]=f[7]; f[7]=temp; rbkstr1+=2; } else if(rbkstr1[1]==39||rbkstr1[1]=='3'||rbkstr1[1]==40) { temp=*c; *c=c[7]; c[7]=c[4]; c[4]=c[3]; c[3]=temp; temp=*d; *d=ma[d[7]]; d[7]=mb[d[4]]; d[4]=ma[d[3]]; d[3]=mb[temp]; temp=*e; *e=e[4]; e[4]=e[8]; e[8]=e[7]; e[7]=temp; temp=*f; *f=f[4]; f[4]=f[8]; f[8]=f[7]; f[7]=temp; rbkstr1+=2; } else if(rbkstr1[1]!='0') { temp=*c; *c=c[3]; c[3]=c[4]; c[4]=c[7]; c[7]=temp; temp=*d; *d=ma[d[3]]; d[3]=mb[d[4]]; d[4]=ma[d[7]]; d[7]=mb[temp]; temp=*e; *e=e[7]; e[7]=e[8]; e[8]=e[4]; e[4]=temp; temp=*f; *f=f[7]; f[7]=f[8]; f[8]=f[4]; f[4]=temp; if(rbkstr1[1]=='+'||rbkstr1[1]==49) rbkstr1+=2; else rbkstr1++; } } else if(*rbkstr1=='L') { if(rbkstr1[1]=='2') { temp=c[1]; c[1]=c[5]; c[5]=temp; temp=c[2]; c[2]=c[6]; c[6]=temp; temp=d[1]; d[1]=d[5]; d[5]=temp; temp=d[2]; d[2]=d[6]; d[6]=temp; temp=e[2];e[2]=e[10];e[10]=temp; temp=e[5]; e[5]=e[6]; e[6]=temp; temp=f[2];f[2]=f[10];f[10]=temp; temp=f[5]; f[5]=f[6]; f[6]=temp; rbkstr1+=2; } else if(rbkstr1[1]==39||rbkstr1[1]=='3'||rbkstr1[1]==40) { temp=c[1]; c[1]=c[2]; c[2]=c[5]; c[5]=c[6]; c[6]=temp; temp=d[1];d[1]=mb[d[2]];d[2]=ma[d[5]];d[5]=mb[d[6]];d[6]=ma[temp]; temp=e[2]; e[2]=e[6];e[6]=e[10];e[10]=e[5]; e[5]=temp; temp=f[2]; f[2]=f[6];f[6]=f[10];f[10]=f[5]; f[5]=temp; rbkstr1+=2; } else if(rbkstr1[1]!='0') { temp=c[1]; c[1]=c[6]; c[6]=c[5]; c[5]=c[2]; c[2]=temp; temp=d[1];d[1]=mb[d[6]];d[6]=ma[d[5]];d[5]=mb[d[2]];d[2]=ma[temp]; temp=e[2]; e[2]=e[5];e[5]=e[10];e[10]=e[6]; e[6]=temp; temp=f[2]; f[2]=f[5];f[5]=f[10];f[10]=f[6]; f[6]=temp; if(rbkstr1[1]=='+'||rbkstr1[1]==49) rbkstr1+=2; else rbkstr1++; } } else if(*rbkstr1=='(') { rbkstr1++; if(*rbkstr1<64) { while(*rbkstr1!=10) rbkstr1++; break; } } else rbkstr1++; } if(*(++rbkstr1)==10) rbkstr1++; if(*C_B8==*c_B8&&*D_B8==*d_B8&&*E_B8==*e_B8&&*E_B4==*e_B4&&*F_B8==*f_B8&& *F_B4==*f_B4) count++; else { count_fail++; count_total = count + count_fail; if((count_total%10)==1) printf("%dst row discrepency:\n",count_total); else if((count_total%10)==2) printf("%dnd row discrepency:\n",count_total); else printf("%dth row discrepency:\n",count_total); rbkstr0-=2; while(*rbkstr0!=10) rbkstr0--; do{ printf("%c",*(++rbkstr0)); }while(*rbkstr0!=10); rbkstr0++; printf("%d,%d,%d,%d,%d,%d,%d,%d",*C,C[1],C[2],C[3],C[4],C[5],C[6],C[7]); printf("\n%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",*E,E[1],E[2],E[3], E[4],E[5],E[6],E[7],E[8],E[9],E[10],E[11]); printf("%d,%d,%d,%d,%d,%d,%d,%d",*D,D[1],D[2],D[3],D[4],D[5],D[6],D[7]); printf("\n%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\nvs\n",*F,F[1],F[2],F[3], F[4],F[5],F[6],F[7],F[8],F[9],F[10],F[11]); rbkstr1-=2; while(*rbkstr1!=10) rbkstr1--; do{ printf("%c",*(++rbkstr1)); }while(*rbkstr1!=10); rbkstr1++; printf("%d,%d,%d,%d,%d,%d,%d,%d",*c,c[1],c[2],c[3],c[4],c[5],c[6],c[7]); printf("\n%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",*e,e[1],e[2],e[3], e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11]); printf("%d,%d,%d,%d,%d,%d,%d,%d",*d,d[1],d[2],d[3],d[4],d[5],d[6],d[7]); printf("\n%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n\n",*f,f[1],f[2],f[3], f[4],f[5],f[6],f[7],f[8],f[9],f[10],f[11]); } } while(*distrece==0) { if(--distrece==distreco) break; } if(count_fail) { if(count) printf("%d rows verified, %d rows failed.\n",count,count_fail); else printf("All %d rows failed.\n",count_fail); } else printf("All %d rows verified.\n",count); if(distrece==distreco) { if(*distrece) printf("%llu states are distance 0.\n", (unsigned long long)*distrece); else printf("No table of distances to report (none recorded).\n"); } else { distrece++; printf("\ndistance number of states\n"); for(uint8_t i=0;distrecp!=distrece; distrecp++,i++) printf("%2d %llu\n",i,(unsigned long long)*distrecp); } printf("%f seconds since start of main().\n", ((float)(clock()-t))/CLOCKS_PER_SEC); return 0; }