One day I started playing with sudoku. I wanted to make big ones. I found
that using orthogonal latin squares makes it wicked easy. Full of patterns,
but I also figured out how to break those patterns in the final sudoku.
There was one idea on creating larger orthos that had occurred to me way
back then. I played with it a bit, but I couldn't quite see it. The idea
being to start with smaller orthos and making them bigger a little bit
at a time. Back then, I would have been happy just to be able to make
bigger latin squares a little bit at a time.
Imagine taking a latin square of size 3x3 and turning it into a 4x4.
Imagine being able to do the same thing with corresponding ortho.
That is the basic idea.
But I couldn't see it, even for a regular latin square. It has been on
the back burner for a few years.
And then came this morning... right before my alarm went off. I was in a
half-and-half state and running all sorts of transversals through my
brain. And then I saw it! And then my alarm went off! Egads, no!
I walk to work and on the way I was running through it some more looking
for little things. Everything looked good in my brain. And I thought
about it some more while I was at work. While on break I drew a little
doodle and it does work for latin squares. What about corresponding
orthos? Well, that would have to wait a little bit after I played with
just latin squares.
I finally get home and fired up Geany. Normally graphic paper to start,
but low-tech supplies woefully low. Text editor of choice it is. For
latin squares, still looks good.
Time to play a little bit to see if I can do the same with an ortho and
keep things ortho.
First try was an epic fail. I did the Zen thing on the epic fail for a
little minute and said, "Fuck it." The next thing that I tried absolutely
floored me. Seriously, me, stunned at what I was looking at.
Okay, time for the basic idea and technique. And it starts with orthos
of size 3x3:
code:
0 1 2 0 1 2
2 0 1 1 2 0
1 2 0 2 0 1
That is as small as you can get. To get the transversals, going to use one
to mask the other:
code:
. . 2 . . 2
. 0 . . 2 .
1 . . 2 . .
0 . . 0 . .
. . 1 . . 0
. 2 . . 0 .
. 1 . . 1 .
2 . . 1 . .
. . 0 . . 1
Let's take the first one, upper-left and operate to expand it to a 4x4.
code:
. . 2 0 1 2 .
. 0 . 2 0 1 .
1 . . 1 2 0 .
. . . .
Can you see it? That transversal and the square that it came from but
expanded to 4x4 on the right and bottom?
So, in the first line at the top, going to shoot a 2 to the right and to
the bottom. Then change the original 2 position to a 3.
code:
. . 2 0 1 3 2
. 0 . 2 0 1 .
1 . . 1 2 0 .
. . 2 .
Please tell me you can see that because we are going to do the same thing
0 in the next line and finally 1 in the last line.
Now 0:
code:
. . 2 0 1 3 2
. 0 . 2 3 1 0
1 . . 1 2 0 .
. 0 2 .
And finally 1 in the last line:
code:
. . 2 0 1 3 2
. 0 . 2 3 1 0
1 . . 3 2 0 1
1 0 2 .
And the last thing to do is put a 3 in the bottom-right corner for this:
code:
0 1 3 2
2 3 1 0
3 2 0 1
1 0 2 3
And we now have a latin square of 4x4. Not only that, but it is a permed
version of XOR 4x4 (the fact that it is XOR is the very first thing that
I had noticed).
If you have the right transversal, you can made a bigger latin square.
Said proper transversal seems to come from the ortho. So, is it possible
make the ortho bigger as well?
My first attempt on that was epic fail. It was a pattern that I had seen
many times before that didn't suit my purpose.
And that's when I said, "Fuck it," and just randomly tried something
just to see what would pop-out the other end.
From that one square, I took the three transversals, these guys:
code:
0 1 2 . . 2 0 . . . 1 .
2 0 1 . 0 . . . 1 2 . .
1 2 0 1 . . . 2 . . . 0
(Same as above but horizonetal instead of vertical.)
And I did the same right/bottom/replace thing. And something completely
amazing came out of the other end.
Check these bad boys out:
code:
0 3 2 1 3 1 2 0 0 1 3 2
1 2 3 0 1 3 0 2 3 2 0 1
3 0 1 2 2 0 3 1 2 3 1 0
2 1 0 3 0 2 1 3 1 0 2 3
Not only is each a valid latin square, but they are all mutually orthogonal
latin squares (MOLS). Pick any two and they are orthogonal.
Here is the basic relationship that holds true using 0's in the first one
as the mask:
code:
0 . . . 3 . . . 0 . . .
. . . 0 . . . 2 . . . 1
. 0 . . . 0 . . . 3 . .
. . 0 . . . 1 . . . 2 .
Seriously? WTF?! I did *not* see that coming. Somehow I had managed to
take orthos of size 3x3 and turn them into 3 MOLS of size 4x4. My mind
absolutely boogles at that.
But that is my first go and it has been less that 24 hours. I have
absolutely zero idea is this will lead anywhere or if it is a one-trick
pony. Either way I am very happy and excited about this little nugget
(even if it is a nugget with no mother lode).
Woot!
(Edited by warjournal on 03-16-2021 15:51)