I have the following table of data, and I am looking to create an
equation to recreate the table. If anyone finds this sort of thing fun,
or has a online resource or a good book that helps explaining these
types of math concepts, please take a stab at it or post any info that
might aide me in my discovery! I've been trying the past several hours
and this sort of thing isn't my strong suit...and i'm stuck!
I am first looking to understand how-to make the pattern of data into a
actual math equation...then from there I'd like to write ruby code for
the equation.
Here is the sample data in a table:
- rows represent a different character (as labeled)
- columns represent the position of the character
(examples represent data in decimal notation, not octal/hex)
example: "aaaa" would become 000 003 002 005
example: "zach" would become 027 003 000 012
1 2 3 4 5 6 (etc......)
----------------------------------------------------
a 1 | 0 3 2 5 4 7
b 2 | 3 0 1 6 7 4
c 3 | 2 1 0 7 6 5
d 4 | 5 6 7 0 1 2
e 5 | 4 7 6 1 0 3
f 6 | 7 4 5 2 3 0
g 7 | 6 5 4 3 2 1
h 8 | 9 10 11 12 13 14
i 9 | 8 11 10 13 12 15
j 10 | 11 8 9 14 15 12
k 11 | 10 9 8 15 14 13
l 12 | 13 14 15 8 9 10
m 13 | 12 15 14 9 8 11
n 14 | 15 12 13 10 11 8
o 15 | 14 13 12 11 10 9
p 16 | 17 18 19 20 21 22
q 17 | 16 19 18 21 20 23
r 18 | 19 16 17 22 23 20
s 19 | 18 17 16 23 22 21
t 20 | 21 22 23 16 17 18
u 21 | 20 23 22 17 16 19
v 22 | 23 20 21 18 19 16
w 23 | 22 21 20 19 18 17
x 24 | 25 26 27 28 29 30
y 25 | 24 27 26 29 28 31
z 26 | 27 24 25 30 31 28
First, I transposed the table since the text editor works best across lines not
columns
I looked at the deltas between the columns and the natural sequence
of numbers and I found an interesting pattern. I will attempt to give you an
explanation of what I came up with, and I hope it's in any way helpful.
For columns numbered with a power of two (1, 2, 4, 8, 16, ...) the deltas are
the power of two alternating its sign +/-.
It's rather difficult to explain, so please, take a look at the following table:
Input 1 2 3 4 5 6 7 8 9 10 11 12
-----------------------------------
Col 1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1
Col 2 +2 -2 -2 +2 +2 -2 -2 +2 -2 -2 +2 +2
Col 4 +4 +4 +4 -4 -4 -4 -4 +4 +4 +4 +4 -4
Col 8 +8 +8 +8 +8 +8 +8 +8 -8 -8 -8 -8 -8
The sign is positive until you reach the given power of two, then it changes to
negative for that power of two times and will keep changing back and forth (it
may help you trying to complete some other values on my table, since I don't
know whether I make myself clear).
The values for the deltas on the other columns is a combination of these
previous columns (just like any number can be expressed as a sum of some powers
of two) For example, on column 3, the delta equals the delta on col 1 plus the
delta on col 2. Take a look:
Col 1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1
Col 2 +2 -2 -2 +2 +2 -2 -2 +2 -2 -2 +2 +2
-----------------------------------------------
Col 3 +1 -1 -3 +3 +1 -1 -3 +3 -3 -1 +1 +3
Column 5 can be calculated based on col 1 + col 4 (5 = 0101)
Col 1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1
Col 4 +4 +4 +4 -4 -4 -4 -4 +4 +4 +4 +4 -4
-----------------------------------------------
Col 5 +3 +5 +3 -3 -5 -3 -5 +5 +3 +5 +3 -3
Column 6 can be calculated based on col 2 + col 4 (6 = 0110)
Col 2 +2 -2 -2 +2 +2 -2 -2 +2 -2 -2 +2 +2
Col 4 +4 +4 +4 -4 -4 -4 -4 +4 +4 +4 +4 -4
-----------------------------------------------
Col 6 +6 +2 +2 -2 -2 -6 -6 +6 +2 +2 +6 -2
Column 7 can be calculated based on col 1 + col 2 + col 4 (7 = 0111)
Col 1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1
Col 2 +2 -2 -2 +2 +2 -2 -2 +2 -2 -2 +2 +2
Col 4 +4 +4 +4 -4 -4 -4 -4 +4 +4 +4 +4 -4
-----------------------------------------------
Col 7 +5 +3 +1 -1 -3 -5 -7 +7 +1 +3 +5 -1
Column 9 is no exception. Take column 1 and 8 and add them (9 = 1001)
Col 1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1 -1 +1
Col 8 +8 +8 +8 +8 +8 +8 +8 -8 -8 -8 -8 -8
-----------------------------------------------
Col 9 +7 +9 +7 +9 +7 +9 +7 -7 -9 -7 -9 -7
I guess you can write a formula for the table based on this
explanation (which I hope was clear enough). If you need further
assistance, I'll be keeping an eye on this thread. I think it was an
interesting problem, very well suited for a Ruby Quiz 
Edgardo...
Thank you for your reply. The patterns found in this table is really weird. I found 2 patterns myself, and then you found a completely different one. Now that I know that it's an xor that is causing this, I will be able to recognize these types of patterns in the future. Thanks for your post and for your explanation. If I come up with any other pattern/algorithmic type of problems I will be sure to send it to James Edward Gray for a Ruby Quiz.,