implement generate login interface and login

This commit is contained in:
2024-07-15 13:01:28 -05:00
parent a080f945fa
commit 897b981098
9 changed files with 220 additions and 77 deletions

View File

@@ -1,5 +1,6 @@
import secrets
def secure_fisher_yates_shuffle(arr: list) -> list:
n = len(arr)
for i in range(n - 1, 0, -1):
@@ -9,21 +10,8 @@ def secure_fisher_yates_shuffle(arr: list) -> list:
def generate_random_nonrepeating_list(list_len: int, min_val: int = 0, max_val: int = 2 ** 16) -> list[int]:
assert(max_val-min_val >= list_len)
return secure_fisher_yates_shuffle(list(range(min_val, max_val))[:list_len])
def generate_random_nonrepeating_matrix(rows: int, cols: int, min_val: int = 0, max_val: int = 2 ** 16) -> list[list[int]]:
values = generate_random_nonrepeating_list(rows*cols, min_val, max_val)
matrix = []
idx = 0
for _ in range(cols):
row = []
for _ in range(rows):
row.append(values[idx])
idx += 1
matrix.append(row)
return matrix
assert (max_val - min_val >= list_len)
return secure_fisher_yates_shuffle(list(range(min_val, max_val)))[:list_len]
def xor_lists(l1: list[int], l2: list[int]):
@@ -31,14 +19,13 @@ 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[int]:
return secure_fisher_yates_shuffle([i for i in range(height * width)])
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)]
return [lst[i:i + cols] for i in range(0, len(lst), cols)]
def int_array_to_bytes(int_arr: list[int], byte_size: int = 2) -> bytes:
return b"".join([numb.to_bytes(byte_size, byteorder='big') for numb in int_arr])