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