Как найти уникальные записи в массиве - PullRequest
0 голосов
/ 29 мая 2019

У меня есть программа, которая сканирует большое количество 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) новый набор только с уникальными матрицами, отсортированными по самым низким индексам.

1 Ответ

0 голосов
/ 25 июня 2019

Решение намного проще, чем я ожидал.Можно найти количество уникальных записей, просматривая все столбцы и отмечая, какие записи являются дубликатами.Если достигнут конец столбца, счетчик увеличивается.Все отмеченные столбцы пропускаются все вместе.В конце проверяется последняя запись и счетчик увеличивается на единицу.

...