Zaawansowane sortowanie

0

Cześć.

Potrzebuję napisać program który przypisuje miejsca na podstawie wyników konkursu. Mam z tym kilka problemów.
Wyniki poszczególnych uczestników definiuję jako:

	tablica =  [
	["staszek", 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 1, 2],
	["rysiek", 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 1, 2],
	["marek", 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 2],
          ....
	],

Z każdej konkurencji można dostać 0, 1 lub 2 punkty. Na początek sumuje się wyniki co nie jest żadnym problemem. O pierwsze trzy miejsca jest dogrywka (gdy ta sama liczba punktów). Na przykład wyniki: 51, 51, 50, 50. Jest walka o miejsca 1 do 4. Następne miejsca (w tej samej sytuacji) rozstrzyga się inaczej. Wtedy porównuje się wynik pierwszej konkurencji a jeśli jest taki sam to kolejnej i kolejnej.

Zastanawiam się jak się wziąć za pisanie pisanie programu który przyporządkuje uczestnikowi miejsce lub dogrywkę.
Co do countback'u to można dla każdego uczestnika pomnożyć każdą konkurencje przez kolejną potęgę 0.1 A potem uporządkować. Ale pewnie istnieje bardziej wydajne rozwiązanie. Większy problem stanowi dla mnie stworzenie funkcji która przyporządkuje odpowiednim uczestnikom dogrywkę.
Pomożecie :-) ?

0

adams0 napisz dwa sortowania. Jedno takie które wyloni najlepszych a drugie to nie tyle co sortowanie (bo dane sa juz posortowane) co Comaprer wiec po prostu porownujesz obiekty ze soba który wygrał

0

Moim zdaniem trochę średnio przyjazna jest twoja obecna struktura danych. Nie chcesz jej może zmienić? Jeśli nie masz wpływu na obecną strukturę to spróbuj zmapować (za pomocą map - jeśli nowszy JS lub zwyczajnie for'em) te dane na jakiś obiekt typu Osoba z właściwościami name i points[].

Później będziesz mógł napisać własną metodę sortującą, która będzie bazować np. na metodzie sumPoints() - zwracającej sumę punktów. Dzięki temu będziesz miał to posortowane właśnie w taki sposób jaki chcesz i na przyszłość struktura będzie przyjaźniejsza ;)

0

Wybrałem taką formę ponieważ mimo że ta twoja jest ewidentnie bardziej naturalna to mam z nią ten problem że jest trudniej robić po niej pętle i się do niej odwoływać. Łatwiej zrobić pętle od 1-50 niż od Abramowicz do Zabiegalski ;-). A najistotniejsza jest tu kolejność a nie nazwa. Ale jestem otwarty na sugestie :D.

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