import random

unshuffled_array = [1, 2, 3, 4, 5]

def shuffle_array_v1(arr):
    output = []
    count_of_items_in_arr = len(arr)
    while count_of_items_in_arr:
        random_index = random.randint(0, count_of_items_in_arr - 1)
        item = arr[random_index]
        del arr[random_index]
        output.append(item)
        count_of_items_in_arr = len(arr)
    return output

shuffled_array_v1 = shuffle_array_v1(unshuffled_array)
print(shuffled_array_v1)

def shuffle_array_v2(arr):
    for idx, item in enumerate(arr):
        random_index = random.randint(idx, len(arr) - 1)
        arr[random_index], arr[idx] = arr[idx], arr[random_index]
    return arr

shuffled_array_v2 = shuffle_array_v2(unshuffled_array)
print(shuffled_array_v2)

def get_permutations(arr):
    return []

def shuffle_fairness(fn):
    test_array = [0,1,2]
    permutations = get_permutations(test_array)
    shuffled_array = fn(test_array)
    print(shuffled_array)
    permutations_hash = {
        "[0,1,2]": 0,
        "[2,1,0]": 0,
    }
    return 0

shuffle_fairness(shuffle_array_v1)
shuffle_fairness(shuffle_array_v2)