Это задание состоит из двух независимых блокирующих частей.
Выполните 23 упражнения по Git с сервера pb-fall2019.yeputons.net
(исходно упражнения взяты отсюда)
и получите вердикт SUCCESS
от команды git verify
в каждом упражнении.
Вам требуется открыть Pull Request в ветку master
этого репозитория (*-tasks
)
из своего форка, из ветки с названием task02-git-solution
.
В этом pull request файл largest_heads_run.py
должен быть
отрефакторен так, чтобы совпадать с largest_heads_run_solution.py
.
При этом история коммитов в PR должна быть "чистой": отдельные атомарные коммиты с понятными названиями.
- В качестве имени автора коммита должны быть указаны ваши официальные полные имя и фамилия (в таком порядке) кириллицей.
Например:
Егор Суворов
- Email значения не имеет.
- Транслит не разрешается.
- Отчество (при наличии) указывать не надо.
- Дополнительные символы и ники не разрешаются.
- Если вы уже начали делать не с тем именем, по возможности переделайте упражнения с правильным именем.
- Во всех коммитах имя должно быть указано ровно одним способом.
В противном случае система не сможет начислить вам баллы за решение упражнений и нам придётся разбирать каждого самостоятельно.
Вам выдан код в файле largest_heads_run.py
, который изучает
подкидывание честной монетки FLIPS = 100
раз.
Он подкидывает монетку, находит самую длинную подряд идущую цепочку из орлов,
и выводит на экран среднюю длину максимальной цепочки.
Всего выполняется ITERS = 1000
попыток подкинуть
монетку FLIPS = 100
раз.
Вам требуется внести в код несколько пересекающихся изменений:
- Не обновлять
s
в самом внутреннем цикле, а сделать это один раз в конце внешнего цикла. - Вместо генерации броска монетки внутри цикла, сгенерировать все броски монетки сначала
в список
flips
(при помощи list comprehension), а дальше сделать циклfor flip in flips:
. - После этих изменений можно вынести внутренний цикл в отдельную независимую функцию. После этого отдельным коммитом можно было бы добавить к ней тесты, но этого не требуется.
- Внутри функции упростить пересчёт
max_run
при помощи функцииmax
. - Поменять местами внутри внешнего цикла
for
порядок измененийtotal
иs
, чтобы он полностью совпал сlargest_heads_run_solution.py
.
- Все эти изменения логически различны и должны идти в отдельных коммитах. Официальное решение занимает как раз пять коммитов.
- Каждое описание коммита должно коротко описывать, что происходит в коммите.
- Язык описания коммита - лучше английский, но можно и русский.
- Пользуйтесь рекомендациями для составления хорошего сообщения о коммите.
Преподаватели в некоторых группах могут требовать сделать "разумную попытку" к определённому сроку. Под этим понимается:
- Первые пять упражнений полностью выполнены (
master
,commit-one-file
,commit-one-file-staged
,ignore-them
,chase-branch
).
А также в открытом pull request:
- Название имеет строго следующий вид:
Task02-git, GroupXX, Фамилия Имя
, например:Task02-git, Group01, Суворов Егор
.- В частности, не допускаются сокращения, перестановка слов, отсутствие запятой, пробелов, лишние пробелы, неверный регистр, написание имени транслитом.
- В сумме Pull Request изменяет только файл
largest_heads_run.py
. - Файл
largest_heads_run.py
побайтово совпадает сlargest_heads_run_solution.py
. - Вывод скрипта побайтово совпадает с выводом исходной версии.
Если хотя бы одно из следующих требований не выполняется, вы можете получить не более 30% баллов за задание:
- Попытка является "разумной" (смотри выше).
А также в открытом pull request:
- Отсутствуют merge conflicts.
- Каждый коммит изменяет только
largest_heads_run.py
. - В каждом коммите вывод скрипта побайтово совпадает с выводом исходной версии.
- В каждом коммите выполняются стандартные требования к Python:
- Команда
flake8 --max-line-length=100
(с установленнымиpep8-naming
иflake8-quotes
) не выдаёт ошибок ни в одном из файлов. - Команда
pylint --max-line-length=100 --disable=invalid-name,missing-docstring,global-statement,too-many-lines,R --enable=simplifiable-if-statement,redefined-variable-type
не выдаёт ошибок ни в одном из файлов. Это требование можно ослабить, если вы предоставите практику пример, где это команда выдаёт неразумную, на ваш взгляд, рекомендацию. - Команда
mypy --ignore-missing-imports
не выдаёт ошибок ни в одном из файлов. - В качестве shebang в Python используется
#!/usr/bin/env python3
. - В неисполняемых файлах shebang отсутствует.
- Команда
Если вы сдаёте с нарушением процесса (например, неверное название Pull Request или имя автора коммита), то ваша посылка может быть не проверена, пока вы не исправите формат.
Если возникают любые проблемы со сдачей домашек — пишите преподавателю! Мы не хотим, чтобы вы тратили на процесс много времени.
- Проверка упражнений производится полностью автоматически командой
git verify
(появляется вgit
после выполнения инструкций с сайта), которая отсылает ваш репозиторий на сайт. - Имя автора коммита должно в точности соответствовать заданию.
- Не требуется отправлять письмо, если вы успешно запушили решение.
- Количество неуспешных попыток сдачи не учитывается.
- Время пуша на оригинальный сервер (вместо нашего) не учитывается.
Первая попытка:
- Создайте fork этого репозитория.
- В своём fork создайте ветку
task02-git-solution
на основе последнего коммита из веткиmaster
. - В ветке
task02-git-solution
создайте чистую историю, выполняющую задание. - Создайте Pull Request в ветку
master
этого репозитория с нужным заголовком из веткиtask02-git-solution
вашего репозитория. - Убедитесь, что
@yeputons-bot
добавил к вашему PR метки, соответствующие номеру задания, номеру группы, а такжеneeds-grading
и назначил review на вашего преподавателя.
Последующие попытки:
- Не помечайте комментарии преподавателя как
Resolved
, если об этом нет явной договорённости. - Перепишите историю коммитов в своей ветке
task02-git-solution
. Например, при помощи командgit rebase -i
иgit push --force
. В других заданиях переписывать историю не потребуется, потребуется дописывать новые коммиты. - При желании ответьте на замечания преподавателя индивидуально.
- Оставьте в PR отдельное сообщение, начинающееся со строчки
@yeputons-bot, исправлено.
- Убедитесь, что
@yeputons-bot
добавил к вашему PR меткуneeds-grading
и назначил review на вашего преподавателя.
Задание выдано 15.11.2019 (пятница).
Срок сдачи — 22.11.2019 (пятница) 22:59 по Москве.
Временем отправки решения при учёте дедлайна считается время пуша на наш проверяющий сервер по времени сервера. Время коммита не учитывается (в отличие от времени пуша).
В некоторых группах к сроку сдачи требуется лишь сделать посылку, а доделывать можно потом без последствий; в некоторых может требоваться исправить все замечания до срока сдачи. Уточняйте правила у своего преподавателя.
Задание оценивается в 10 баллов, из них 6 вы получаете за упражнения, 4 за чистую историю.
- Каждое упражнение оценивается независимо от остальных в 6/23 балла.
- В чистой истории вы получаете 2 балла за выполнение всех блокирующих условий и ещё от 0 до 2 баллов оценивают качество деления на коммиты и сообщений коммитов.
В каждой группе независимо устанавливаются баллы за посылки, сделанные после срока сдачи, за частичное выполнение задания, за выполненную первую итерацию без второй. Уточняйте правила у своего преподавателя.