У меня есть программа, которая сканирует большое количество n на n матриц для поворотов и зеркальных изображений. Выходными данными является линейный массив, который представляет собой выровненную нижнюю треугольную матрицу с нулями и единицами, зависящими от того, являются ли соответствующие матрицы вращениями / зеркалами друг друга.
Учитывая 6 матриц для проверки, программа проверяет только «необходимые» матрицы и не проверяет их дважды. Если это вращение / зеркало, оно устанавливает этот элемент в единицу. Пример показан ниже.
0 1 2 3 4
1 0
2 0 1
3 1 0 0
4 1 0 0 1
5 1 0 0 1 1
Вывод будет выглядеть так:
[0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1]
Глядя на это, мы видим, что есть две уникальные матрицы (0 и 1). Остальные дубликаты (3, 4, 5 дубликаты 0; 2 дубликат 1).
Как я могу найти 1) количество уникальных матриц из этого линейного выхода и 2) новый набор только с уникальными матрицами, отсортированными по самым низким индексам.