R J Cano on Wed, 19 Jul 2023 00:20:02 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
2023-Draft_0.0.19 |
Hi, in my humble opinion, this transformation currently is NOT yet known (documented) by Mathematicians, and it looks potentially useful for the kind of problem with matrices involved in / underlying to games of the same type than Sudoku, Shidoku, Latin, and Latin-Greek squares (more precisely their generation and analysis), ... For instance, it allows to implement one unique routine for checking / validating Sudoku-type puzzles of any size, when they are represented as row-major vectors. By applying it, small boxes can be treat as simple rows. For the most simple case (when y=x), it is also found that the transformation is reduced to swapping the middle coefficients in a Quartic Polynomial... - - - - - - - - - - - - Acknowledgement for the PARI-GP development staff, since without their contribution efforts and excellence, probably the ease of computer aided experimentation required in order to realize this, would not have been possible. Merci folks :-) - - - - - - - - - - - - - - Cheers, P.S.: GP source as is inside attachment file, below and until the end of the present message... /* R. J. Cano <bacanocano@gmail.com>; Tue, 18 Jul 2023 21:48:12 +0000 ;; Let us introduce the "Inner transposition" of matrices: G[ A[i,j], B[k,L] ] =(def.) F[ A[i,k], B[j,L] ] */ rowmaj_before_an_innertranspos(y,x)={ vector( y*x, i, i ) } rowmaj_innertranspos_formal(y,x)={ my(Nllvec:vec=[]:vec); my( z=gcd(y,x) ); if(z==1, return(Nllvec) ); my( s0=if(ispseudoprime(z),[z],divisors(z)), s ); s=if(#s0==1,s0,Vecrev(s0[2..(#s0-1)])); if(Nllvec==s, return(Nllvec) ); my( rmi=vector(#s) , t, u, w, q, v=vector(y*x,i,i), a=vector(y*x) ); for(m=1,#s, q=0; a*=0; t=y/s[m]; u=s[m]; w=x/s[m]; forvec(k=[ [1,t], [1,u], [1,u], [1,w] ], a[q++]= k[3] - k[2] ,0); rmi[m]= [ [t,u,w], v+(x-w)*a ]; ); rmi } rowmaj_innertranspos_simplified(y,x)={ my(Nllvec:vec=[]:vec); my( z=gcd(y,x) ); if(z==1, return(Nllvec) ); my( s0=if(ispseudoprime(z),[z],divisors(z)), s ); s=if(#s0==1,s0,Vecrev(s0[2..(#s0-1)])); if(Nllvec==s, return(Nllvec) ); my( rmi=vector(#s) , t, u, w ); for(m=1,#s, t=y/s[m]; u=s[m]; w=x/s[m]; my( f=concat(Vec(matrix(u,u,i,j,i-j)))~ ); f=concat( vector(#f,h1,vector(w,h2,f[h1]) ) ); f=concat( vector(t,h3,f) ); f*=(x-w); for(k=1,#f,f[k]+=k); rmi[m]=[ [t,u,w], f ] ); rmi } /* kkeuthieyo? (Ce fini?) */
/* R. J. Cano <bacanocano@gmail.com>; Tue, 18 Jul 2023 21:48:12 +0000 ;; Let us introduce the "Inner transposition" of matrices: G[ A[i,j], B[k,L] ] =(def.) F[ A[i,k], B[j,L] ] */ rowmaj_before_an_innertranspos(y,x)={ vector( y*x, i, i ) } rowmaj_innertranspos_formal(y,x)={ my(Nllvec:vec=[]:vec); my( z=gcd(y,x) ); if(z==1, return(Nllvec) ); my( s0=if(ispseudoprime(z),[z],divisors(z)), s ); s=if(#s0==1,s0,Vecrev(s0[2..(#s0-1)])); if(Nllvec==s, return(Nllvec) ); my( rmi=vector(#s) , t, u, w, q, v=vector(y*x,i,i), a=vector(y*x) ); for(m=1,#s, q=0; a*=0; t=y/s[m]; u=s[m]; w=x/s[m]; forvec(k=[ [1,t], [1,u], [1,u], [1,w] ], a[q++]= k[3] - k[2] ,0); rmi[m]= [ [t,u,w], v+(x-w)*a ]; ); rmi } rowmaj_innertranspos_simplified(y,x)={ my(Nllvec:vec=[]:vec); my( z=gcd(y,x) ); if(z==1, return(Nllvec) ); my( s0=if(ispseudoprime(z),[z],divisors(z)), s ); s=if(#s0==1,s0,Vecrev(s0[2..(#s0-1)])); if(Nllvec==s, return(Nllvec) ); my( rmi=vector(#s) , t, u, w ); for(m=1,#s, t=y/s[m]; u=s[m]; w=x/s[m]; my( f=concat(Vec(matrix(u,u,i,j,i-j)))~ ); f=concat( vector(#f,h1,vector(w,h2,f[h1]) ) ); f=concat( vector(t,h3,f) ); f*=(x-w); for(k=1,#f,f[k]+=k); rmi[m]=[ [t,u,w], f ] ); rmi } /* kkeuthieyo? (Ce fini?) */