From: Zach Dennis Date: 2005-04-12T03:12:12+09:00 Subject: Re: Translating A Pattern of Data Into Equation, and ultimately code Edgardo Hames wrote: > On Apr 10, 2005 8:45 PM, 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, >>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., Zach