Shuffle матрицы
Дана матрица X*Y
ее элементы частично заполнены некими значениями
Надо переставить значение из рандомной n-ной строки в m-ную этого же столбца на свободное место (если место занято, то итерацию повторить с другой строкой),
а из m-ной строки другого рандомного столбца (кроме того столбца, куда перетащили) переставить в n-ную строку выбранного столбца (если место занято, то повторить с другим столбцом m-ной строки).
Кол-во итераций задается вручную.
По горизонтали матрица разделена на воображаемые три группы разной размерности (по сумме столбцов дающих X)
Например, X=20; группа1: 5, группа2: 9, группа3: 6
Необходимо перетащить значение из одного столбца в другой столбец (и обратно) аналогично как со строками, но соблюдая индекс группы.
То есть можем перетащить еденицу из группы1[4] в группу2[4] или группу3[4], если там свободно. Но не можем перетащить из группы2[8] в группу1[8], т.к. группа1[8] не существует.
Кол-во итераций задается вручную.
Таким образом, количество элементов в каждом столбце и строке остается таким же, как исходное.
На вход программе подается файл в csv-формате, где в первой строке для каждого столбца задается название группы.