Mam listę. Chciałbym wziąć ostatnią wartość z każdego przebiegu podobnych elementów.Jak wybrać ostatnią wartość z każdego uruchomienia podobnych elementów?
Co mam na myśli? Pozwolę sobie podać prosty przykład. Biorąc pod uwagę listę słów
[ 'golf', 'hip', 'hop', 'hotelu', 'trawa', 'świata', 'wee']
a funkcja podobieństwa 'począwszy od tej samej litery', funkcja zwróci krótszą listę
[ 'golf', 'Hotel', 'trawa', 'wee']
Dlaczego? Oryginalna lista zawiera 1-bieg słów G, 3-biegowe słowa H, 1-etap słów G i 2-ciąg słów W. Funkcja zwraca ostatnie słowo z każdego przebiegu.
Jak mogę to zrobić?
Hipotetyczny C# składni (w rzeczywistości pracuję z obiektami klienta, ale chciałem podzielić się czymś można uruchomić i przetestować samemu)
> var words = new List<string>{"golf", "hip", "hop", "hotel", "grass", "world", "wee"};
> words.LastDistinct(x => x[0])
["golf", "hotel", "grass", "wee"]
Edit: Próbowałem .GroupBy(x => x[0]).Select(g => g.Last())
ale że daje ['trawa', 'hotel', 'wee'], który jest nie czego chcę. Przeczytaj uważnie przykład.
Edytuj. Inny przykład.
[ 'jabłka', 'armie', 'czarny', 'piwo', 'Bastion', 'kot', 'koszyk', 'móc', 'sztuka', 'Kora']
Tutaj znajduje się 5 tras (run związku A, w odległości bieg B, bieg z C, w odległości nowy bieg towarzyszącej, nowy przebiegu B). Ostatnie słowo z każdego biegu będzie:
[ „wojsko”, „bastion”, „koszyk”, „sztuka”, „Kora”]
Ważne jest, aby zrozumieć, że każdy bieg jest niezależny. Nie mieszaj biegu A na początku z biegiem A na końcu.
co jest specyficzne wyjście trzeba? – dbw
Więc nie chcesz grupować tylko według pierwszej litery, ale także kolejnych słów? –
Spodziewam się zobaczyć '['hotel', 'grass', 'wee']' bez 'golfa' –