Home > Back-end >  Random Sorting Formula
Random Sorting Formula

Time:05-03

I have a list that is made of 3’s, 6’s, and 9’s in a random order. They are then “in order” added to by 3, then 6, then 9 in a new list. The old list is never used again. Can someone help me find a formula to get the original list back?

Original_list = [3,3,6,9,6,6,3,9]

Time = [3,6,9,3,6,9,3,6]

New_list = [6,9,6,3,3,6,6,6]

New list is in random order however time is not. Old list adds to Time. I have tried making my own formulas for solving but I can’t seem to figure out how to integrate Time. Thanks!

CodePudding user response:

You in your example we can see addition work like this:

3   3 = 6
3   6 = 9
6   6 = 3
6   9 = 6
9   3 = 3
9   6 = 6

It is not hard to gues the other 3 entries in the addition table.

So to get from the "new" list back to the "original" list, all we have to do is apply subtraction:

6 - 3 = 3
9 - 6 = 3
3 - 6 = 6
6 - 9 = 6
3 - 3 = 9
6 - 6 = 9

and so on.

CodePudding user response:

Direct transformation might be described by formula

3   (A[i]   3 * i) % 9

where i is index in the list

and backward one:

3   (C[i]   3 -  3 * i) % 9

Python code to check:

A = [3,3,6,9,6,6,3,9]
C = [6,9,6,3,3,6,6,6]

CC = [3   (A[i]   3 * i)%9 for i in range(len(A))]
print(C)
print(CC)

AA = [3   (C[i]   3 -  3 * i)%9 for i in range(len(A))]
print(A)
print(AA)

[6, 9, 6, 3, 3, 6, 6, 6]
[6, 9, 6, 3, 3, 6, 6, 6]

[3, 3, 6, 9, 6, 6, 3, 9] #original
[3, 3, 6, 9, 6, 6, 3, 9] #result
  • Related