I am trying to program an algorithm that scrambles and "unscrambles" integer numbers.
I need two functions forward
and backward
backward(number)
: return a "random" number between0
and9
forward(number)
: return the input tobackward
that returnsnumber
I managed to solve the problem like this:
from random import randint
class Scrambler:
def __init__(self):
self.mapping = [i for i in range(10)]
# scramble mapping
for i in range(1000):
r1 = randint(0, len(self.mapping) - 1)
r2 = randint(0, len(self.mapping) - 1)
temp = self.mapping[r1]
self.mapping[r1] = self.mapping[r2]
self.mapping[r2] = temp
def backward(self, num):
return self.mapping[num]
def forward(self, num):
return self.mapping.index(num)
if __name__ == '__main__':
s = Scrambler()
print(s.mapping)
for i in range(len(s.mapping)):
print(i, s.forward(i), s.backward(i), s.forward(s.backward(i)), s.backward(s.forward(i)))
Is there a way to do this without using the mapping list? Can i calculate the return value of the functions forward
and backward
?
The "randomness" of the numbers does not need to be perfect.
Aucun commentaire:
Enregistrer un commentaire