# 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`