Наткнулся я тут на репозиторий algorithms с реализациями на python кучи алгоритмов. И, если честно, лучше бы не натыкался: хоть звёздочек много, но внутри просто ужасный код. Никогда так не пишите.

Некоторые проблемы этого кода:

  • In place замены. Такое надо делать редко. Обычно - не надо.
  • Функция должна возвращать реузльтат, а не print’ить его.
  • Функция, которая ничего не возвращает, не тестируемая.
  • Однобуквенные переменные.
  • Какое-то адище в форматировании, как протест flake8.
  • Выполнение каких-то действий (типа тесты) в корне модуля, а не как надо в нормальном коде.
  • Отсутствие тестов, perfomance и прочего.
  • Слабое использование collections и itertools.

Вообще, вот вам от меня базовый чеклист для проверки тестового задания (можете свой проект проверить):

  • git
  • тесты (если есть travis или tox - ещё плюс)
  • perfomance
  • комментарии
  • docstrings
  • документация (в самом простом случае README, но readthedocs - плюс сверху)
  • requirements (setup и прочее - тоже плюс сверху)
  • Pythonic-код. Тут субъективно, но если видите for i in range(len(x)), то можете сразу ставить минус.
  • Ещё можно добавить за всякие штуки типа Dockerfile, если что-то такое есть в проекте.

Если кандидат не делает слишком много чего из перечисленного, он ещё не умеет писать хороший код. А если умеет, но не счёл нужным делать это для тестового задания — значит, не хочет писать хороший код, что ничуть не лучше.