Dana jest lista liczb całkowitych:
000, 001, 002,
000, 002, 005,
002, 007, 005,
005, 007, 011,
005, 011, 014,
011, 016, 014,
018, 005, 014,
018, 014, 023,
023, 014, 026,
027, 028, 029,
027, 029, 000,
029, 034, 000,
036, 027, 000,
036, 000, 041,
041, 000, 044,
014, 046, 047,
014, 047, 027,
047, 052, 027,
026, 014, 027,
026, 027, 059,
059, 027, 036,
044, 000, 005,
044, 005, 068,
068, 005, 018,
072, 073, 074,
073, 076, 074,
073, 079, 076,
081, 082, 083,
081, 083, 086,
086, 083, 089,
086, 089, 092,
092, 089, 073,
092, 073, 098,
089, 100, 073,
102, 103, 104,
102, 104, 107,
108, 109, 110,
110, 109, 113,
110, 113, 102,
082, 118, 083,
082, 121, 104,
121, 107, 104,
082, 104, 118,
129, 082, 131,
131, 082, 134,
134, 082, 137,
098, 073, 140,
140, 073, 072,
140, 072, 146,
146, 072, 109,
146, 109, 108,
153, 002, 001,
153, 007, 002,
153, 011, 007,
153, 016, 011,
153, 047, 046,
153, 052, 047,
153, 029, 028,
153, 034, 029,
177, 072, 074,
177, 074, 076,
177, 076, 079,
177, 100, 089,
177, 089, 083,
177, 083, 118,
177, 118, 104,
177, 104, 103,
177, 113, 109,
177, 109, 072,
207, 018, 023,
207, 023, 026,
207, 026, 059,
207, 059, 036,
207, 036, 041,
207, 041, 044,
207, 044, 068,
207, 068, 018,
231, 081, 086,
231, 086, 092,
231, 092, 098,
231, 098, 140,
231, 140, 146,
231, 146, 108,
231, 108, 110,
231, 110, 102,
231, 102, 107,
231, 107, 121,
231, 129, 131,
231, 131, 134,
231, 134, 137,
Każde kolejne 3 liczby stanowią jeden byt. Nie można ich rozdzielać.
Chcę podzielić trójki liczb na grupy.
W każdej grupie trójki mają wspólną cechę - co najmniej jedna liczba ma taką samą wartość w dwóch trójkach.
Można by rzec, że trójki liczb tworzą grafy połączeń.
Czyli np. 044, 000, 005
(1), 207, 041, 044
(2), 005, 011, 014
(3), 014, 046, 047
(4) powinny należeć do tej samej grupy.
Dlatego, że (1) i (2) zawierają 044
, (1) i (3) zawierają 005
, (3) i (4) zawierają 014
.
Poleci ktoś jakiś algorytm na to, żeby listę trójek podzielić na grupy według kryteriów?
Jakby co, język docelowy: C#.