Kilpailussa osallistujat lähettävät tehtäviin ratkaisuja. Tehtävät on numeroitu 1,2,3,\dots ja jokaisesta tehtävästä voi saada 0–100 pistettä.
Jos osallistuja lähettää samaan tehtävään useita ratkaisuja, tehtävän lopullinen pistemäärä on suurin yksittäisen ratkaisun pistemäärä. Osallistujan kokonaispistemäärä saadaan laskemalla yhteen kunkin tehtävän pistemäärä.
Tehtäväsi on muodostaa kilpailun tuloslista, joka sisältää osallistujien nimet ja pistemäärät. Osallistujat on järjestetty pistemäärän mukaan suurimmasta pienimpään. Jos kahdella osallistujalla on sama pistemäärä, tämän pistemäärän aiemmin saavuttanut osallistuja katsotaan paremmaksi. Jos kahdella osallistujalla ei ole lainkaan pisteitä, heidät tulee järjestää aakkosjärjestykseen.
Toteuta tiedostoon contest.py
luokka Contest
, jossa on seuraavat metodit:
__init__
: muodostaa olionadd_submission
: käsittelee osallistujan lähettämän ratkaisuncreate_scoreboard
: muodostaa kilpailun tuloslistan
Seuraava esimerkki näyttää tarkemmin, miten luokan tulee toimia.
class Contest: def __init__(self, names, task_count): # TODO def add_submission(self, name, task, score): # TODO def create_scoreboard(self): # TODO if __name__ == "__main__": names = ["anna", "pekka", "kalle", "tiina", "eeva"] contest = Contest(names, 3) contest.add_submission("tiina", 2, 30) contest.add_submission("pekka", 1, 40) contest.add_submission("tiina", 1, 20) contest.add_submission("pekka", 1, 50) contest.add_submission("pekka", 2, 0) contest.add_submission("eeva", 3, 100) contest.add_submission("anna", 1, 0) contest.add_submission("eeva", 3, 80) contest.add_submission("tiina", 2, 30) scoreboard = contest.create_scoreboard() print(scoreboard) # [('eeva', 100), ('tiina', 50), ('pekka', 50), ('anna', 0), ('kalle', 0)]
Tiina on ennen Pekkaa tuloslistalla, koska hän saavutti pistemäärän 50 aiemmin. Anna on ennen Kallea tuloslistalla, koska kummallakin on 0 pistettä ja Annen nimi on aiemmin aakkosjärjestyksessä.