Translating A Pattern of Data Into Equation, and ultimately code

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

Thanks again if you decide to attempt this...

Zach

In article <425973C0.2080007@mktec.com>,

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

I think the table got a bit shifted so I shifted it back...

What's the application for this or is it just a brain teaser?

Just a few ideas:

For character 'a' it looks like the 'formula' would be something like:
  if(position.odd?)
    return position - 1
  else
    return position + 1
  end

(BTW: it also looks like the numbers in column 1 follow this same
pattern)

For character 'b' it's a bit stranger, recreating that row of the table:

      1 2 3 4 5 6 (7) (8)
----------------------------------------------------
b 2 |3 0 1 6 7 4 5 10

       (1+2) (2-2) (3-2) (4+2) (5+2) (6-2) (7-2) (8+2)
  
I'm guessing the 7 and 8 columns will follow the same pattern.

Also, I'd look into the idea that maybe these are modulo-n counters (?)
However, if I look at the row numbers I can see that they directly map
onto columns as well, look at row 'c' and column 3:

       1 2 3 4 5 6 (etc......)

···

Zach Dennis <zdennis@mktec.com> wrote:
----------------------------------------------------
                       2
                       1
c 3 |2 1 0 7 6 5
                       7
                       6
                       5

Phil

OK I see how you turn "zach" into 027 003 000 012.

But not more. Is this table filled with random/real-life data or is
there some rule I don't get? What is it exactly that you want an
equation for?

Do you really want an equation or just an expression?

FYI, "x**2 + 2" is an expression, "x**2 + 2 = 13" is an equation (ie.,
equations are predicative, like "I go fishing tomorrow", expressions are
descriptive, like "the picture on the wall".

Csaba

···

On 2005-04-10, Zach Dennis <zdennis@mktec.com> wrote:

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

First, I transposed the table since the text editor works best across lines not
columns :wink: 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

···

On Apr 10, 2005 8:45 PM, Zach Dennis <zdennis@mktec.com> wrote:

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

           -----------------------------------
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 :wink:

Kind regards,
Ed
--
Encontrá a "Tu psicópata favorito" http://tuxmaniac.blogspot.com

Zach Dennis wrote:

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,

You might want to look into

http://planetmath.org/encyclopedia/BerlekampMasseyAlgorithm.html

Gotit! Try letter xor column :slight_smile:

martin

···

Zach Dennis <zdennis@mktec.com> wrote:

        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

Phil Tomson wrote:

I think the table got a bit shifted so I shifted it back...

What's the application for this or is it just a brain teaser?

WebSTAR, is a Web/Email/Ftp/etc... server that runs on OSX. The Ftp portion hasn't been updated in several years, and the password is encrypted for each user. Users have to be added/removed via a GUI right now, so I am writing a command line ruby program to add and remove accounts from the user data file. I have everything except for the password encryption part done. I struggled with trying to decipher it myself, and was hoping someone better in this area of math be able to help me out. My command line utility will be open source and donated to everyone and especially the WebSTAR community.

Also, I'd look into the idea that maybe these are modulo-n counters (?)

This was what I was looking into, but I couldn't find one that would consistently work for multiple rows/columns. I am/was thinking that there would be a expression that could be used across the board.

However, if I look at the row numbers I can see that they directly map onto columns as well, look at row 'c' and column 3:

       1 2 3 4 5 6 (etc......)
----------------------------------------------------
                       2
                       1
c 3 |2 1 0 7 6 5
                       7
                       6
                       5

Thanks thus far Phil. If you have any other ideas, please feel free to post em.

Zach

Csaba Henk wrote:

OK I see how you turn "zach" into 027 003 000 012.

But not more. Is this table filled with random/real-life data or is
there some rule I don't get? What is it exactly that you want an
equation for?

It is real life data pulled straight from a data file. See previous response to Phil Thomson's post for what the data file is used for.

When passwords are stored the characters are stored based on their position in the password. I was hoping there would be an expression that could be used to create the table.

Do you really want an equation or just an expression?

FYI, "x**2 + 2" is an expression, "x**2 + 2 = 13" is an equation (ie.,
equations are predicative, like "I go fishing tomorrow", expressions are
descriptive, like "the picture on the wall".

I would like an expression that can be used to recreate the table i posted before, if i have my understanding right of expression and equation. I'd like to say:
   row - col * (col-1)

so i could fill in the row/col variables and recreate my table...Thanks for posting Csaba. Any other insight would be very appreciated.

Zach

Note that if you read down the columns, this gives you each number in
binary, using - for 1 and + for 0

martin

···

Edgardo Hames <ehames@gmail.com> wrote:

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

That's sort of cool! Congrats!

I don't think there would be a concise expression for this table. I
mean, there is no two-variable polynomial which would describe this
table.

Proof: assume there is p(x,y) s.t. the i-th element of the j-th row can
be obtained as p(i,j). Then fix j=1. Thus you get a polynomial q(x) as
well. Take the delta of it: d(x) = q(x) - q(x-1). That's a polynomial
again, and we know its values at positive integers: d(n) = 1 if n is
even and d(n) = -1 if n is odd. As you'd write in ruby, d(n).abs <= 1.
But that's a contradiction, as polynomials tend to either plus or minus
infinity at infinity.

So the best formalization is writing an algorithm which calculates table
values based on the description Edgardo gave.

Csaba

···

On 2005-04-11, Edgardo Hames <ehames@gmail.com> wrote:

On Apr 10, 2005 8:45 PM, Zach Dennis <zdennis@mktec.com> wrote:
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

Gotit! Try letter xor column :slight_smile:

Wow, very good! I could not figure this out myself. Here is the very simple formula:

def encode(letter, column)
   (letter-?a + 1)^column
end

encode(?z, 1)
encode(?a, 2)
encode(?c, 3)
encode(?h, 4)

gives the correct result.

martinus

Martin,

You are the man! And I'm not statying awake until 2 am anymore :slight_smile:

Cheers,
Ed

···

On Apr 11, 2005 10:34 AM, Martin DeMello <martindemello@yahoo.com> wrote:

Zach Dennis <zdennis@mktec.com> wrote:
>
> 1 2 3 4 5 6 (etc......)
> ----------------------------------------------------
> a 1 | 0 3 2 5 4 7
> b 2 | 3 0 1 6 7 4

Gotit! Try letter xor column :slight_smile:

--
Encontrá a "Tu psicópata favorito" http://tuxmaniac.blogspot.com

Martin DeMello wrote:

Gotit! Try letter xor column :slight_smile:

Awesome!! Thank you very very very much Martin!!!!

Zach

Edgardo Hames wrote:

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 :wink: 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 :wink:

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.,

Zach

···

On Apr 10, 2005 8:45 PM, Zach Dennis <zdennis@mktec.com> wrote:

>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......)
>----------------------------------------------------

   - 0 |1 2 3 4 5 6 <<<<<<< ADDED

>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

I've added the missing row, which should make the pattern clearer.

The table value is just the binary XOR of the column number and the
character number.

The following Ruby program recreates the table:

(1..26).each do |char|
  printf("%2d |", char)
  (1..6).each do |col|
    printf("%4d", col ^ char)
  end
  print "\n"
end

Regards,

Brian.

···

On Mon, Apr 11, 2005 at 10:29:39AM +0900, Phil Tomson wrote:

Martin Ankerl wrote:

Wow, very good! I could not figure this out myself. Here is the very simple formula:

def encode(letter, column)
  (letter-?a + 1)^column
end

Golf, anyone? This "encodes" the full string:

s.gsub(/./){|c|((c[0]-?`)^($`.size+1)).chr}

···

--
Glenn Parker | glenn.parker-AT-comcast.net | <http://www.tetrafoil.com/&gt;

Welcome :slight_smile: It was Edgardo Hames's post that gave me the clue.

martin

···

Zach Dennis <zdennis@mktec.com> wrote:

Martin DeMello wrote:

> Gotit! Try letter xor column :slight_smile:

Awesome!! Thank you very very very much Martin!!!!

returns a string of \000 here

irb(main):003:0> s = "abc"
=> "abc"
irb(main):004:0> s.gsub(/./){|c|((c[0]-?`)^($`.size+1)).chr}
=> "\000\000\000"
irb(main):005:0> VERSION
=> "1.8.2"

martin

···

Glenn Parker <glenn.parker@comcast.net> wrote:

Golf, anyone? This "encodes" the full string:

s.gsub(/./){|c|((c[0]-?`)^($`.size+1)).chr}

Martin DeMello wrote:

s.gsub(/./){|c|((c[0]-?`)^($`.size+1)).chr}

returns a string of \000 here

irb(main):003:0> s = "abc"
=> "abc"
irb(main):004:0> s.gsub(/./){|c|((c[0]-?`)^($`.size+1)).chr}
=> "\000\000\000"

Well, that's pretty funny, but it's also correct. This particular encoding, operating on the alphabet, i.e. "abcdefg..." produces all zeros. Think about it.

···

--
Glenn Parker | glenn.parker-AT-comcast.net | <http://www.tetrafoil.com/&gt;

LOL! Okay, I feel silly now :slight_smile:

martin

···

Glenn Parker <glenn.parker@comcast.net> wrote:

>
> irb(main):003:0> s = "abc"
> => "abc"
> irb(main):004:0> s.gsub(/./){|c|((c[0]-?`)^($`.size+1)).chr}
> => "\000\000\000"

Well, that's pretty funny, but it's also correct. This particular
encoding, operating on the alphabet, i.e. "abcdefg..." produces all
zeros. Think about it.