Todo List 80/100
Здравейте, колеги
Някой може ли да помогне, защо не ми минава единия тест в Judge?
Това е условието на задачата:
You will receive a todo-notes until you get the command "End". The notes will be in the format: "{importance}-
{value}". Return the list of todo-notes sorted by importance. The maximum importance will be 10.
Input |
Output |
2-Walk the dog 1-Drink coffee 6-Dinner 5-Work End |
['Drink coffee', 'Walk the dog', 'Work', 'Dinner'] |
Ето и кода:
command = input() notes = [0] * 10 while command != "End": tokens = command.split("-") index = int(tokens[0]) element = tokens[1] notes.insert(index, element) command = input() result = [] for note in notes: if note != 0: result.append(note) print(result)
Благодаря
Причината, поради която е нужен вложен лист, е че вероятно при един от тестовете на Judge има повече от един task-a с еднакъв приоритет. По начина с един лист и функция insert() веднага щом получим втори task, с приоритет, който вече сме получавали, губим първия.
Пример:
3 - Walk the dog
3 - Feed the cat
End
Разглеждаме следното парче код:
Лесно виждаме, че след първото изпълнение елементът с индекс 2 ще бъде променен на 'Walk the dog'. След второто изпълнение елементът с индекс 2 ще бъде променен на 'Feed the cat', като така губим предишния таск. Затова това решение получава 80/100.
Проблемът идва точно при повече от един task с еднакъв приоритет.
По време на while цикъла Insert не замества, а поставя всеки следващ елемент с еднакъв индекс пред предходния. Judge явно ги очаква в реда, в който са подадени в конзолата. Тоест ако имаме:
2-Walk
2-Run
3-Dinner
End
с горния код ще получим резултат ['Run', 'Walk', 'Dinner'], а judge очаква ['Walk', 'Run', 'Dinner']