Hi to all of you guys here…
A friend of my husband gave him:
1). A paper with a table of 350 rows x 284 columns, which each cell contains of a single number from 0 to 9. This table didn’t typed yet into .xls file. It will be like table on sheet 5 of file Enigma-2.xls if it has. Since here I can’t attach .xls file, I put it at Mediafire.com (a file hosting service) name Enigma-2.xls:
http://www.mediafire.com/?sharekey=03226d231784e437d1014a7a667fa2b4e04e75f6e8ebb871

2). A file name Enigma.xls like on sheet 1,2,3,4 of file Enigma-2.xls. He has remapped the table of 350 rows x 284 columns on that paper with:

Column -> number of table (column 1->Table 1, column 2->Table 2, column 3->Table 3,...,column 284->Table 284).
Cell Entries Index, 0 thru 9 in Column -> 10 Rows per new table (Rows 0,1,2,...9).
Row -> Ascending list of cell entries where the row index exists in the original table whose column corresponds to this translated tables index.

But he remapped the original table for 40 rows only. We were so lazy to type the original table manually to .xls file, so I want to convert it as I did on sheet 5 file Enigma-2.xls, but it didn’t work..?
Can somebody help me about this?

Now I’ve remapped it manually again per rows of that original table as on sheet 6 of file Enigma-2.xls with:

Rows -> number of table (row 1->Table 1, row 2->Table 2, row 3->Table 3,...,row 40->Table 40).
Cell Entries Index, 0 thru 9 in Row -> 10 Rows per new table (Rows 0,1,2,...9).
Row -> Ascending list of cell entries where the column index exists in the original table whose row corresponds to this translated tables index

Tables 1,5,9,13,17 / 41,45,49,53,57 / 21,25,29,33,37 / 61,65,69,73,77 on sheet 1 file Enigma-2. xls made us believe this infinite tables have some patterns of permutations that could be found to extend it for the next larger numbers 41,42,43,and so on, as I gave the blank tables on sheet 6 to be filled in…
Hope my English is good enough for explaining this.
Thx.

Dani AI

Generated

The thread describes a fixed 350x284 digit matrix and a remapping that turns each original row/column into a 10-row “translation table.” reports visible repeating structure across several of those small tables and wants a formula to extend the pattern past row 350; asked for clarification. The Java program posted earlier uses random placement, which cannot reliably reproduce a deterministic permutation — that is why it did not match the supplied tables.

A reliable approach:

  • Get the matrix into a machine-readable CSV (one digit per cell). Automation (phone photo + a simple OCR/cleanup pass) will save many hours of typing.
  • Define the translation unambiguously: for each source axis (row or column) produce an ordered sequence by collecting original indices grouped by digit (0..9) and concatenating the groups in digit order. Each translated table then becomes a permutation of the original index set.
  • Compute the permutation that maps table N to table N+1. Represent it as an array p where p[i] = j means the element at position i in table N appears at position j in table N+1. Decompose p into cycles and look for a repeating permutation or small-cycle structure. If the permutation family repeats with period k, you can apply the cycle action to extend tables beyond index 350.

Example Python workflow (read CSV, build sequences, compute permutation cycles):

import csv

def load_matrix(path):
    with open(path) as f:
        return [row for row in csv.reader(f)]

def seq_from_column(mat, col):
    groups = {str(d): [] for d in range(10)}
    for i, row in enumerate(mat):
        groups[row[col]].append(i)
    seq = []
    for d in map(str, range(10)):
        seq.extend(groups[d])
    return seq

def perm_between(a, b):
    pos = {v:i for i,v in enumerate(b)}
    return [pos[v] for v in a]

def cycles(perm):
    used = [False]*len(perm); out=[]
    for i in range(len(perm)):
        if not used[i]:
            cur=[]; j=i
            while not used[j]:
                used[j]=True; cur.append(j); j=perm[j]
            out.append(cur)
    return out

Troubleshooting tips: verify each translated sequence is a true permutation of the same index set; check for small-cycle composition or a simple modular shift (easy to detect). If patterns depend on the source index (not just a single permutation), compute per-index functions (for example a shift that varies with table number). Deterministic analysis of permutations and cycle structure is the correct path; randomness will not recover a specific mapping.

Recommended Answers

All 3 Replies

Huh?

This is not clear.

Dear MidiMagic,
Supposed now I give you a table with 350 rows x 284 columns, which each cell contains of a single number from 0 to 9. By finding its patterns, I need your help to extend that table to fill the cells for the rows 351,352,353,etc.
Then what would you do?
If you need to see that table, my friend also had put it on other forum, but it was only 350 rows x 20 columns. We were so lazy to type it for the rest of other columns. It’s supposed to be like on sheet 5 file Enigma-2.xls if it has.
By seeing that table, it was very difficult for us to see the patterns. That’s why my friend remapped that table per-COLUMNS as he did on sheet 1,2,3,4 of file Enigma-2.xls with:
Column -> number of table (column 1->Table 1, column 2->Table 2, column 3->Table 3,...,column 284->Table 284).
Cell Entries Index, 0 thru 9 in Column -> 10 Rows per new table (Rows 0,1,2,...9).
Row -> Ascending list of cell entries where the row index exists in the original table whose column corresponds to this translated tables index.

By doing this, he found the patterns as he wrote on his opinion on sheet 0 of file Enigma-2.xls beneath NOMENCLATURE OF THE TABLES.

Then I remapped that table again per-ROWS as I did it on sheet 6 of file Enigma-2.xls with:
Row -> number of table (row 1->Table 1, row 2->Table 2, row 3->Table 3,...,row 40->Table 40).
Cell Entries Index, 0 thru 9 in Row -> 10 Rows per new table (Rows 0,1,2,...9).
Row -> Ascending list of cell entries where the column index exists in the original table whose row corresponds to this translated tables index

I can see its patterns as I wrote as the Note: on below of sheet 6.
But the big problem is we don’t know how to scramble numbers to result like that.
I need help to extend the blank tables 41,42,43,etc as I gave on sheet 6 of file Enigma-2.xls. It will be the same as you extend the original table for the rows 351,352,353,etc.
Now can you understand the whole problems? If you do, perhaps you can help me to re-write again this thread in English, so everybody else can understand it. I’ll be great thank to you, because our English isn’t too excellent for it.
Thx MidiMagic, for your attentions.

Someone has made a program in Java like this:

import java.util.*;
public class Table {
static Scanner console = new Scanner(System.in);
public static void main (String[] args)
{

String list = "010509131741454953572125293337616569737702030406070810111214" +
"151618192022232426272830313234353638394042434446474850515254" +
"5556585960626364666768707172747576787980818283848586878889909192";
String number;
int counter = 0;
int randomNumber = 0;
int rowPlacement = 0;


Vector row_0 = new Vector();
Vector row_1 = new Vector();
Vector row_2 = new Vector();
Vector row_3 = new Vector();
Vector row_4 = new Vector();
Vector row_5 = new Vector();
Vector row_6 = new Vector();
Vector row_7 = new Vector();
Vector row_8 = new Vector();
Vector row_9 = new Vector();

for (counter=0; counter<184; counter = counter + 2)
{
number = list.substring(counter, counter + 2);

//-------------------------------------------------------------------
if (counter == 10 || counter == 20 || counter == 30 || counter >= 40)
{
rowPlacement = 0;
}
//-------------------------------------------------------------------
do
{
randomNumber = (int) ( 10 * Math.random() );
}
while (rowPlacement > randomNumber);
//-------------------------------------------------------------------

if (randomNumber == 0)
{
row_0.addElement(number);
rowPlacement = 0;
}

else if (randomNumber == 1)
{
row_1.addElement(number);
rowPlacement = 1;
}

else if (randomNumber == 2)
{
row_2.addElement(number);
rowPlacement = 2;
}

else if (randomNumber == 3)
{
row_3.addElement(number);
rowPlacement = 3;
}

else if (randomNumber == 4)
{
row_4.addElement(number);
rowPlacement = 4;
}

else if (randomNumber == 5)
{
row_5.addElement(number);
rowPlacement = 5;
}

else if (randomNumber == 6)
{
row_6.addElement(number);
rowPlacement = 6;
}

else if (randomNumber == 7)
{
row_7.addElement(number);
rowPlacement = 7;
}

else if (randomNumber == 8)
{
row_8.addElement(number);
rowPlacement = 8;
}

else if (randomNumber == 9)
{
row_9.addElement(number);
rowPlacement = 9;
}

}
System.out.println(row_0);
System.out.println(row_1);
System.out.println(row_2);
System.out.println(row_3);
System.out.println(row_4);
System.out.println(row_5);
System.out.println(row_6);
System.out.println(row_7);
System.out.println(row_8);
System.out.println(row_9);
}
}

But it didn't work correctly yet in order to result tables like I put at Mediafire.com (a file hosting service) name Enigma.xls:
http://www.mediafire.com/?sharekey=12a93ace84ea3ab56b21be4093fab7ace04e75f6e8ebb871
:)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.