(эту задачу надо сдавать в EJudge, но основные свойства решения там пока проверить нельзя) Написать функцию bubble(sequence: Sortable) -> Sortable, которая сортирует эелменты изменяемой последовательности и возвращает её в отсортированном виде, и type alias Sortable, задающий
- изменяемую последовательность,
- элементы которой поддерживают операцию сравнения.
В результате приведённый пример должен проходить mypy --strict, компилироваться mypyc и выполняться из полученной библиотеки, а любая закомментированная строка из примера — вызывать ошибку проверки/компиляции.
1 from typing import cast
2
3 c = [60, 66, 67, 64, 65, 68, 60, 63, 63, 67, 66, 66, 67, 64, 66, 68, 61, 67, 64, 65]
4 for s in ( bubble(cast(Sortable, c)),
5 bubble(list(map(float, c))),
6 bubble(list(map(str, c))),
7 bubble(list(map(list, map(str, c))))):
8 print(*s)
9 # bubble(list(map(complex, c)))
10 # bubble(tuple(map(float, c)))
60 60 61 63 63 64 64 64 65 65 66 66 66 66 67 67 67 67 68 68 60.0 60.0 61.0 63.0 63.0 64.0 64.0 64.0 65.0 65.0 66.0 66.0 66.0 66.0 67.0 67.0 67.0 67.0 68.0 68.0 60 60 61 63 63 64 64 64 65 65 66 66 66 66 67 67 67 67 68 68 ['6', '0'] ['6', '0'] ['6', '1'] ['6', '3'] ['6', '3'] ['6', '4'] ['6', '4'] ['6', '4'] ['6', '5'] ['6', '5'] ['6', '6'] ['6', '6'] ['6', '6'] ['6', '6'] ['6', '7'] ['6', '7'] ['6', '7'] ['6', '7'] ['6', '8'] ['6', '8']
Спойлер: