debugging set, confirm
This commit is contained in:
53
src/utils.py
53
src/utils.py
@@ -1,6 +1,5 @@
|
||||
import secrets
|
||||
|
||||
|
||||
def secure_fisher_yates_shuffle(arr: list) -> list:
|
||||
n = len(arr)
|
||||
for i in range(n - 1, 0, -1):
|
||||
@@ -32,52 +31,14 @@ def xor_lists(l1: list[int], l2: list[int]):
|
||||
return [l2[i] ^ l1[i] for i in range(len(l1))]
|
||||
|
||||
|
||||
def generate_random_index_interface(height: int, width: int) -> list[list[int]]:
|
||||
interface = []
|
||||
idx = 0
|
||||
for i in range(height):
|
||||
key = []
|
||||
for j in range(width):
|
||||
key.append(idx)
|
||||
idx += 1
|
||||
key = secure_fisher_yates_shuffle(key)
|
||||
interface.append(key)
|
||||
return interface
|
||||
def generate_random_index_interface(height: int, width: int) -> list[int]:
|
||||
return secure_fisher_yates_shuffle([i for i in range(height * width)])
|
||||
|
||||
|
||||
def generate_serialized_index_interface(height: int, width: int) -> list[list[int]]:
|
||||
interface = []
|
||||
idx = 0
|
||||
for i in range(height):
|
||||
key = []
|
||||
for j in range(width):
|
||||
key.append(idx)
|
||||
idx += 1
|
||||
interface.append(key)
|
||||
return interface
|
||||
def matrix_to_list(mat: list[list[int]]) -> list[int]:
|
||||
return [val for row in mat for val in row]
|
||||
|
||||
def list_to_matrix(lst: list[int], cols: int) -> list[list[int]]:
|
||||
return [lst[i:i+cols] for i in range(0, len(lst), cols)]
|
||||
|
||||
|
||||
def interface_transpose(interface: list[list[int]]) -> list[list[int]]:
|
||||
return [list(row) for row in zip(*interface)]
|
||||
|
||||
|
||||
def shuffle_interface(self):
|
||||
pass
|
||||
|
||||
|
||||
def disperse_interface(user_interface: list[list[int]]):
|
||||
shuffled_keys = secure_fisher_yates_shuffle(user_interface)
|
||||
dispersed_interface = random_attribute_rotation(shuffled_keys)
|
||||
return dispersed_interface
|
||||
|
||||
|
||||
def random_attribute_rotation(user_interface: list[list[int]]) -> list[list[int]]:
|
||||
numb_attr = len(user_interface[0])
|
||||
numb_keys = len(user_interface)
|
||||
attr_rotation = secure_fisher_yates_shuffle(list(range(numb_keys)))[:numb_attr]
|
||||
transposed_user_interface = interface_transpose(user_interface)
|
||||
assert (len(attr_rotation) == len(transposed_user_interface))
|
||||
for idx, attr_set in enumerate(transposed_user_interface):
|
||||
rotation = attr_rotation[idx]
|
||||
transposed_user_interface[idx] = attr_set[rotation:] + attr_set[:rotation]
|
||||
return interface_transpose(transposed_user_interface)
|
||||
|
||||
Reference in New Issue
Block a user