довільні T[], тобі потрібно їх склеїти в кінцевий T[] який матиме виключно унікальні значення T[] з перших двох без дублікатів
ну дістінктом з компарером по sequence equals ._.
Сработает?
а нашо тобі ліст масивів тоді о_О
У меня игра Nonogram
я то думаю що там якась дуже важлива задача де потрібні масиви а воно он як
Я не знаю чому не має працювати. Хіба воно компарер вложеного ерея неправильно буде читати
сіквенс іквалс не підходить для цього кейсу
а, ну так воно його по хешу перевірить і не спрацює мабуть
Ну тут тестити треба
А чекай там треба щоб тіки елементи окремого ерея були унікальні чи всі вложені елементи всіх ереїв були унікальні в листі?
class SequenceComparer<TElement> : IEqualityComparer<TElement[]> { public bool Equals(TElement[]? a, TElement[]? b) { if (a == null && b == null) return true; else if (a == null || b == null) return false; else { return GetHashCode(a) == GetHashCode(b); } } public int GetHashCode([DisallowNull] TElement[] array) { var hash = new HashCode(); for (var elementI = 0; elementI < array.Length; ++elementI) { hash.Add(array[elementI]); } return hash.ToHashCode(); } } ось SequenceComparer дуже сумно що якогось такого нема в BCL
до речі зрозумів про що ти, але це теж не працюватиме хоча задум правильний)
так я кинув що працює хД
а дістінкт працює тільки хешкодами)
https://github.com/dotnet/runtime/blob/main/src/libraries/System.Linq/src/System/Linq/Distinct.cs#L89 DistinctIterator побудований на хешсеті, який використовує хешкод для вибору бакету а потім виконує порівняння на справжній equals
Обсуждают сегодня