A language can sort numbers and strings on its own: it already knows which of two of them comes first. For objects of your own class it doesn't, until the class tells it. Every language has a way for a class to say how two of its objects compare. Once a class has it, the language's own sort can sort a list of those objects, with no comparison written at the call.
Write:
- a class
Student, created byStudent(name, grade), that can compare itself with another student: a student comes first if their grade is higher; when two grades are equal, the name that comes first in alphabetical order (A to Z) comes first; - a method
rank_students(students)in the classSolution, which sorts the students with your language's own sort, using that comparison, and returns their names in that order.
In Python, a class becomes comparable by defining __lt__(self, other): it returns True when self comes before other. a < b calls it, and so do the list's sort() and sorted().
Don't write your own sorting loop. The program also checks your comparison directly: for each two neighbours in the list you return, it asks Student whether the first one comes before the second.
Example 1:
Input: students = [("Ana", 90), ("Bob", 85), ("Cid", 90)]
Output: Ana Cid Bob
Explanation: Ana and Cid have the highest grade, 90. They tie, so their names decide: Ana comes before Cid.
Bob, with 85, comes last.
Example 2:
Input: students = [("Eve", 55), ("Dan", 100), ("Bea", 0), ("Cal", 99)]
Output: Dan Cal Eve Bea
Explanation: All the grades are different, so only the grades decide, from 100 down to 0.
Example 3:
Input: students = [("Max", 88), ("Leo", 88), ("Anna", 88), ("Ann", 88)]
Output: Ann Anna Leo Max
Explanation: Everyone has the same grade, so the list is in alphabetical order.
"Ann" comes before "Anna": when one name is the start of the other, the shorter one comes first.
Constraints:
- There are 1 to 100 students.
0 <= grade <= 100- A name has 2 to 10 letters: a capital letter, then lowercase letters. No two students have the same name.
The language's sort takes O(n log n) comparisons for n students, and each comparison takes constant time.
Free plan: 30 tutor messages. PRO is unlimited.
