Shev
Best “Speedy” Solution
Это всё прикольно, конечно, пока этот же код не понадобится в другой программе на другом языке программирования. Там первым делом надо будет написать Counter(), потому что его нигде нет, кроме питона, потом написать стабильную сортировку, которая гарантированно не переставляет элементы, которая мало где реализована. И вот тут-то окажется, что этот Python-код совершенно не пригоден для его перевода на другой язык - на Go, на Rust, на Java и на многие другие - и придётся писать код как раз такой, который выше написан и реализуем на любом языке (за исключением итератора, который не везде такой удобный, как в питоне, и придётся его доделать). Так что это соревнование теоретиков.
О чём речь идёт: вот YouTube изначально реализовывался на питоне, а потом Google заказала язык Go и после его релиза стала переписывать продукты свои с Python на Go. И вот что лучше, если один человек перепишет питоновский код на Go, потому что надо только переводить то, что уже готово и надёжно отлажено, или если десять человек заново напишут весь код на Go, потому что с питона он не переводится?
Shev
Best “Creative” Solution
Это вообще квадратную сложность имеет. Что .count(), что .index() квадратно использовать там, где можно применить однопроходный алгоритм с линейной сложностью, - уровень школоты, не писавшей ничего, естественно. Какой итератор он собрался так сортировать? На десять элементов? А миллионный вообще повиснет и будет очень долго выполнять миллион count'ов и ещё миллион index'ов. То, что у итераторов нет методов .count() и .index(), - это вообще другой вопрос, да и были бы они, всё равно туфта получилась бы.
Да и видно, что он не в курсе про отладчик, который не видит имена у функций, если они через лямбды присваиваются. Хотел по-умному сделать, да только уши торчат в каждой букве.
Shev
а я бы допилил итератор
Да не, вот эту умную функцию внутри функции ты стопудов бы оставил, ведь она выглядит так умно. А то, что она не тестируется юнит-тестами, ты бы тоже ещё не знал.