Załóżmy, że mam tablicę ary = [0.0, 1.0, 5.0, 1.0, -2.0, 3.5]
i chcę jako wyjściową kolejną tablicę o tym samym rozmiarze zawierającą indeksy ary
w porządku posortowanym według wartości. Innymi słowy, wyjście powinno być [4,0,1,3,5,2]
. Czy jest to skuteczny sposób z Enumerable
lub Array
?Pobierz indeksy dla posortowanej permutacji tablicy w Ruby?
Najbardziej banalne rozwiązanie mogę sobie wyobrazić, jest następująca:.
class Array
def sorted_indices
self.map.with_index{ |v,i| [v,i] }.sort{ |a,b| a[0] <=> b[0] }.map { |v| v[1] }
end
end
ale czuję się jak tam musi być coś prostszego już wbudowane w
Ważne jest, aby pamiętać, że wartości w tablicy nie są wyjątkowe. Żaden indeks nie powinien pojawiać się w tablicy wyników więcej niż jeden raz (innymi słowy, [4,0,1,1,5,2]
nie jest poprawny).
To było szybkie. Dzięki! –
'to_a' można usunąć. :) – Santhosh