problem z list <int[]>

0

Witam mam taki problem, nie wiem jak sprawdzic, przeszukać tabele za pomocą 'contains', 'BinarySearch'
lub w inny sposob by mi zwrocilo index tabeli. Oto jak wygląda moja tabela:

List<int[]> tabela = new List<int[]>();
...
...
...
int[] dana = { 1,2,3,4 };
tabela.Add(dana);
...
...
...
i pod dodaniu kilku takich roznych lini - niech tabela ma 4 linie A,B,C,D :
0 1 2 3 <--- offset

A| 1,2,3,4
B| 1,1,1,1
C| 3,3,3,3
D| 5,5,3,2

i chodzi oto by tą tabele przeszukac czy w niej nie znajduje sie wartość pod wskazanym offsetem i zeby zwrocilo mi pod jakim index'em A...D , probowalem robic to tak

int index = tabela.BinarySearch(szukana_wartosc);

ale to tylko dziala dla tabeli pojedynczej , nie wiema jak to ustawic by przeszukal dla mojej tabeli.
probowalem roznych sposobow ale nie wiem a chodzi mi wlasnie o szybki sposob i bez robienia pętli. Jak ktos wiem to niech mi podpowie bo juz nie mam silly na to....

0

Uzyj wersji BinarySearch(T, IComparer), gdzie drugi obiekt implementuje interfejs IComparer i pozwala Ci okreslic kiedy 2 obiekty sa takie same. Choc w tym wypadku musialbys podawac w pierwszym parametrze tablice int, bo taki jest typ szablonowy. Mozesz podawac tablice jednoelementowa a w obiekcie IComparer zdefiniowac rownosc wtedy kiedy tablice maja czesc wspolna (a wlasciwie jak element szukanej zawiera sie w drugiej).

0

no tak , ale jak to wpisac ... probowalem i mi podaje ze nie jest kompatybilne z [] , czy jakos tak ...

0

Jak to teraz wyglada?

0
int pozycja = tabela.FindIndex((int[] tab) => tab[offset] == szuakana_wartosc);

jedna przejrzysta linijka, C# jest po prostu wspaniały :) ...

0

Dzieki, ... instrukcja dobra... a jak np. zrobic za pomocą jednej instrukcji by przeszukala tabele w poszukiwaniu warosci z funkcją math.min lub math.max w odpowiednim indeksie ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1