debugging set, confirm

This commit is contained in:
2024-07-13 16:29:58 -05:00
parent a14ed46edf
commit e4268959b3
8 changed files with 204 additions and 157 deletions

View File

@@ -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)