---
# System prepended metadata

title: python_test_tasks review for anton_gusev

---

# python_test_tasks review for anton_gusev
комментарии/рекомендации к решению
- code_review
  - добавление .dockerignore - это правильное решение
  - `*.py`
    - исправления корректны, единственно, при написании кода лучше использовать более читаемые названия переменных и импортируемых модулей
  - `Dockerfile`
    - использование slim, это правильно, так же можно было сослаться на более оптимизированный вариант образа на alpine-based
    - в новом варианте файла нет необходимости в update и после него не было upgrade и не было удаления кэша, рекомендации - можно было удалить эту строчку, а так же надо не забывать про лишние файлы, которые могут создаться каждой командой и записаны в docker-образ. именно для этого обычно используют &&
        ```Docker
        RUN apt-get -qq -y update && \
            apt-get -qq -y upgrade && \
            apt-get -qq -y install cowsay && \
            apt-get -y autoclean && \
            apt-get -y autoremove && \
            rm -rf /var/lib/apt-get/lists/* && \
            ln -s /usr/games/cowsay /usr/bin/cowsay
        ```
    - использование ADD совершенно правильное действие
    - правильное понимание кеширования директив Dockerfile
  - `requirements.txt`
    - верное удаление numpy
    - pandas - надо было зафиксировать версию `pandas==***`
- tessellation
  - результирующий `score=0.8197977767555527`
    - `np.mean(scores)=0.8197977767555527`
    - `np.std(scores)=0.08440198855845359`
    - `len(scores)=10000`
  - для улучшения score можно почитать статью [How good is the Warnsdorff’s knight’s tour heuristic?](https://arxiv.org/pdf/0803.4321.pdf)
  - в тоже время все переменные и функции хорошо названы, читаемость кода высокая, можно еще было добавить комментариев для функций, см. [рекомендации](https://google.github.io/styleguide/pyguide.html#383-functions-and-methods)
  - не используются тайпинги для аргументов функции
  - можно было бы попробовать использовать numpy для упрощения и ускорения некоторых операций с матрицами см. примеры в `test_solution.py`
- общее
  - сразу добавить все файлы/директории связанные с настройкой IDE или специфичными только для одного разработчика данным в .gitignore, такие как `.idea`
