Bei einer Liste von Bewertungen (nicht negative Ganzzahlen), die vom größten zum kleinsten vorsortiert sind:
[ 10, 10, 6, 6, 4, 0]
Weisen Sie jeder Punktzahl einen ganzzahligen Rang zu, beginnend mit 1 und aufsteigend, sodass gleiche Punktzahlen den gleichen Rang haben (dh sie sind gebunden):
[ 1, 1, 3, 3, 5, 6 ]
Bei Unentschieden werden die Ränge "übersprungen", z. B. da die erste und die zweitgrößte Punktzahl (10 und 10) unentschieden sind, haben beide Rang 1 und Rang 2 wird "übersprungen", also die drittgrößte Punktzahl ( 6) hat Rang 3.
Geben Sie eine Liste nicht absteigender Ränge aus, die den Eingabewerten entsprechen.
Beispiele
In: 10 10 6 6 4 0
Out: 1 1 3 3 5 6
In: 10 9 8
Out: 1 2 3
In: 0 0 0
Out: 1 1 1
In: 16 15 15 12 11 11 10 9 9 9 8 2 2 2 0
Out: 1 2 2 4 5 5 7 8 8 8 11 12 12 12 15
Eingang
Angenommen, alle Punkte liegen zwischen 0 und einschließlich 1.000, und die Eingabe enthält nicht mehr als 500 Punkte. Die Eingabe kann in einem beliebigen Format erfolgen, das für die Sprache Ihrer Wahl geeignet ist (einschließlich, aber nicht beschränkt auf STDIN, Argumente für eine Funktion, ein Array, das bereits in einer Variablen gespeichert ist usw.).
Ausgabe
Rückgabe oder Speicher in einer Variablen die resultierende geordnete Liste von Reihen, oder schreiben Sie es auf STDOUT in eine menschenlesbare Art und Weise (zB 1 2 3
, [1,2,3]
, 1\n2\n3\n
, und { 1, 2, 3 }
sind alle in Ordnung, 123
ist nicht aus Mangel an Trennzeichen). Die Eingabewerte können zusammen mit den entsprechenden Ausgaberängen gespeichert / gedruckt werden, dies ist jedoch nicht erforderlich.
Beschränkungen
Sie können jede Standardbibliothek verwenden, die Ihre Sprache bietet. Es gelten Standardlücken.
Gewinnbedingungen
Dies ist Code-Golf , also gewinnt das kleinste Programm (in Bytes). Bei einem Unentschieden gewinnt die Antwort mit den meisten Stimmen.
Anmerkungen
Dies basiert auf einer Ruby-Frage zu SO , die einige interessante Antworten hervorgebracht hat, darunter eine sehr kurze. Ich ermutige Sie, Ihre eigenen Lösungen zu finden, bevor Sie sich dort umsehen.