names: ["x", "today"];
var datasets = [
{argv:[{started: 176, deadline: 180, finished: 180}, 184], out: "DONE"},
{argv:[{started: 120, deadline: 150, finished: -1}, 147], out: "PROGRESS"},
{argv:[{started: 176, deadline: 180, finished: -1}, 184], out: "LATE"},
{argv:[{started: 130, deadline: 150, finished: -1}, 148], out: "3_DAYS"},
{argv:[{started: 130, deadline: 166, finished: 170}, 190], out: "DONE_LATE"},
{argv:[{started: 130, deadline: 150, finished: -1}, 149], out: "3_DAYS"},
{argv:[{started: 130, deadline: 150, finished: -1}, 150], out: "3_DAYS"},
]
var remapInput = `
from collections import namedtuple
Task = namedtuple('Task', ['started', 'deadline', 'finished'])
def remap(d, today):
return Task(d['started'], d['deadline'], d['finished']), today
`
var remapPreview = (x, today) => `from collections import namedtuple
Task = namedtuple('Task', ['started', 'deadline', 'finished'])
started = ${x.started}
deadline = ${x.deadline}
finished = ${x.finished}
today = ${today}
main(Task(started, deadline, finished), today)
`
Funkce dostane úkol a dnešní datum a má ohodnotit, v jakém stavu zpracování ten úkol je.
Úkol je nějaká hodnota x
se třemi vlastnostmi:
x.started
je číslo dne, kdy se na úkolu začalo pracovat,x.deadline
je číslo dne, kdy má být (měl být) úkol dokončený,x.finished
je buďto číslo dne, kdy byl úkol dokončený, anebo -1
, pokud ještě dokončený není.Dnešní datum je číslo dne. Čísla dnů jsou libovolná nezáporná čísla, vyjadřují prostě počet dnů od nějakého pevně určeného data.
Program má vrátit jednu z následujících hodnot:
"DONE"
, když byl úkol dokončený včas;"LATE"
, když úkol není dokončený a už je po deadline
(následující den nebo později);"PROGRESS"
, když úkol ještě není dokončený a zbývá dost času;"3_DAYS"
, když zbývají dva dny, jeden den anebo už dneska je deadline
;"DONE_LATE"
, když je dokončený, ale bylo to po termínu (aspoň následující den po deadline
).def main(x, today):
if x.finished >= 0:
if x.started < today: # tahle podmínka platí vždycky, takže není moc užitečná
return "DONE"
return "GLITCH_IN_THE_MATRIX"
return "PROGRESS"
Rady:
if
a možná zanořených ve dvou vrstvách;<
, >
. Porovnání menší nebo rovno, větší nebo rovno je <=
, >=
. Porovnání na rovnost je ==
, tedy dvě rovnítka za sebou;return
. V programu můžete mít příkazů return
víc než jeden, ale spustit se může vždycky jen jeden z nich;"DONE"
správný výstup, tak "Done"
určitě správně není.