День 17 — задания
Практика прошла по ходу чтения — в блоках «Попробуйте сейчас». Здесь итог: всё, что сверит course check 17. Если какой-то пункт пропустили, вернитесь к странице, которая указана рядом. Список страниц:
course toc 171. Пять предсказаний — страницы 1–4
Сделать: сдать ответы на пять вопросов «что выведет».
course answer day17.q1 ОТВЕТ
course answer day17.q2 ОТВЕТ
course answer day17.q3 ОТВЕТ
course answer day17.q4 ОТВЕТ
course answer day17.q5 ОТВЕТВместо ОТВЕТ — три числа через пробел, как их печатает Println. Можно отправить заново — засчитывается последний.
Готово, когда: пункты q1–q5 в course check 17 зелёные.
2. Починка truck — страница 4
Сделать: в ~/gocourse/day17/truck/truck.go функция firstTruck собирает первую машину в своём массиве, и весь заказ после вызова остаётся прежним. Правка — не больше четырёх строк, main.go не меняется.
cd ~/gocourse/day17/truck
cat TASK.txt
diff ~/.course/orig/day17/truck/truck.go truck.goГотово, когда: пункты truck и trucksmall зелёные. Проверка прогонит программу на нескольких вводах — часть скрыта — и сама вызовет firstTruck, чтобы сверить заказ до и после.
3. Справка по slices — страница 5
Сделать: посмотреть справку по функциям пакета.
go doc slices.SortГотово, когда: пункт t_doc зелёный.
4. Отчёт report — страница 5
Сделать: дописать ~/gocourse/day17/report/main.go: ниже порога — по возрастанию, наибольший остаток, все ячейки в порядке ввода, пустой ввод — Ячеек нет.
cd ~/gocourse/day17/report
cat TASK.txtГотово, когда: пункт report зелёный. Скрытые вводы — в разном порядке, с повторами, ровно на пороге и пустой.
5. Тест keep — страница 6
Сделать: написать в каталоге ~/gocourse/day17/keep файл nonempty_test.go — тест, который проверяет и результат nonEmpty, и что входной срез после вызова прежний. nonempty.go не меняйте.
cd ~/gocourse/day17/keep
cat TASK.txt
go test -v .Готово, когда: пункты keep и keepres зелёные: тест проходит на функции, падает на версии, которая портит вход, и на версии, которая ставит ноль в ячейку ровно в порог.
6. Трассировка trace — страница 7
Сделать: заменить все ? в ~/gocourse/day17/trace/table.txt значениями по правилам 27–29, без запуска.
cd ~/gocourse/day17/trace
cat table.txtГотово, когда: пункт trace зелёный.
7. Порядок в коде — страница 7
Сделать: код truck, report и keep отформатирован, go vet молчит.
cd ~/gocourse/day17
gofmt -l .
go vet ./...Готово, когда: пункт code_fmt зелёный. Пока truck и report нетронуты, а в keep нет теста с настоящей проверкой, он красный — даром его не получить.
8. Коммиты — страница 7
Сделать: не меньше четырёх непустых коммитов в ~/gocourse/day17; в последнем — тест keep, починенный truck.go и дописанный отчёт.
cd ~/gocourse/day17
git status -s
git log --onelineГотово, когда: пункт git зелёный.
9. Словарик ошибок — страница 7
Сделать: в ~/errors.md — минимум 34 строки вида «текст ошибки — что значило». Между ошибкой и разбором — тире с пробелами вокруг.
Готово, когда: пункт errors зелёный.
10. Звёздочка
В зачёт не входит, course check 17 эти задания не смотрит.
- В
reportнапечатайте ещё строкуГде меньше всего: N— номер ячейки (с единицы) с наименьшим остатком, черезslices.Minиslices.Index. - Напишите функцию
lastN(stock []int, n int) []int— последниеnостатков в своём массиве — и тест к ней, который ловит порчу входа. - Сделайте опыт из
course extra 17: подсрез с тремя числамиs[a:b:c]и дваappendот одной базы.
Готово, когда: для второго пункта тест падает, если убрать копию в lastN.
Порог: 12 пунктов из 15. После зачёта — контрольные вопросы: course quiz 17.