День 18 · задания

День 18 — задания

Практика прошла по ходу чтения — в блоках «Попробуйте сейчас». Здесь итог: всё, что сверит course check 18. Если какой-то пункт пропустили, вернитесь к странице, которая указана рядом. Список страниц:

▶ Выполните
course toc 18

1. Четыре предсказания — страницы 1, 2, 3, 5

Сделать: сдать ответы на четыре вопроса «что выведет».

▶ Выполните · выделенное замените своим
course answer day18.q1 ЧИСЛО ЧИСЛО ЧИСЛО
course answer day18.q2 ЗНАЧЕНИЕ ЗНАЧЕНИЕ ЗНАЧЕНИЕ ЗНАЧЕНИЕ
course answer day18.q3 ЧИСЛО ЧИСЛО
course answer day18.q4 ЧИСЛО ЧИСЛО

Значения — через пробел, в том порядке, в каком их печатает программа. Можно отправить заново — засчитывается последний ответ.

Готово, когда: пункты q1, q2, q3, q4 зелёные.

2. Справка по связке — страница 4

Сделать: прочитать справку по обеим частям связки.

▶ Выполните
go doc maps.Keys
go doc slices.Sorted

Готово, когда: пункт t_doc зелёный.

3. Починка fix2 — страница 2

Сделать: программа в ~/gocourse/day18/fix2 печатает артикул с остатком 0 как остаток 0 шт., а «нет в каталоге» — только для артикула, которого в map нет. Правка — одна-две строки.

▶ Выполните
cd ~/gocourse/day18/fix2
go run . < example.txt
diff ~/.course/orig/day18/fix2/main.go main.go

Готово, когда: пункт fix2 зелёный. Проверка подаёт и другие артикулы каталога; правка больше двух строк не принимается.

4. Программа tally — страница 4

Сделать: программу подсчёта коробок по артикулам. Условие и свои артикулы:

▶ Выполните
cd ~/gocourse/day18/tally
cat TASK.txt
go run . < example.txt

Подсчёт — в самой map (counts[sku]++), печать — по возрастанию артикула.

Готово, когда: пункт tally зелёный. Проверка подаёт на вход другие артикулы в другом порядке, пустые строки и пустой ввод. Программа, которая считает не в map, или с печатью прямо из range зачёта не получает.

5. Функция totals, печать и тест — страницы 4 и 5

Сделать: в ~/gocourse/day18/group — функцию totals в totals.go, печать итогов в конце main.go и тест totals_test.go.

▶ Выполните
cd ~/gocourse/day18/group
cat TASK.txt
go run . < example.txt
go test .

Готово, когда: пункты group, grouptest и groupzero зелёные. group прогоняет программу на скрытых вводах и отдельно проверяет саму функцию totals. grouptest и groupzero подменяют totals.go двумя неверными версиями — одна перезаписывает количество, другая теряет артикул с нулём — и требуют, чтобы ваш тест на каждой упал, а на другой правильной записи функции прошёл.

6. Починка fix1 — страница 5

Сделать: программа в ~/gocourse/day18/fix1 перестаёт падать с паникой. Правка — одна-две строки.

▶ Выполните
cd ~/gocourse/day18/fix1
go run . < example.txt
diff ~/.course/orig/day18/fix1/main.go main.go

Готово, когда: пункт fix1 зелёный.

7. Таблица trace — страница 6

Сделать: заменить все ? в ~/gocourse/day18/trace/table.txt по правилам 30–32. program.go не менять.

▶ Выполните
cd ~/gocourse/day18/trace
cat program.go
cat table.txt

Готово, когда: пункт trace зелёный.

8. Формат и vet — страницы 4 и 5

Сделать: привести в порядок код заданий.

▶ Выполните
cd ~/gocourse/day18
gofmt -l tally group fix1 fix2
go vet ./tally ./group ./fix1 ./fix2

Если gofmt -l печатает имена файлов — gofmt -w с теми же каталогами или Ctrl+S в VS Code.

Готово, когда: пункт code_fmt зелёный. Пока нет ни программы tally с записью в map, ни своего теста в group, он красный: на нетронутых заготовках проверять нечего.

9. Коммиты — страницы 1–6

Сделать: репозиторий заводится на первой странице, дальше коммит в конце каждого задания — не меньше четырёх коммитов с изменениями в ~/gocourse/day18.

▶ Выполните
cd ~/gocourse/day18
git status -s
git add .
git commit -m "что сделали"
git log --oneline

Готово, когда: пункт git зелёный: коммитов с изменениями не меньше четырёх, в последнем tally/main.go и group/totals.go отличаются от заготовок и есть тест в group.

10. Словарик ошибок — страница 6

Сделать: в ~/errors.md — минимум 36 строк вида «текст ошибки — что значило». Между ошибкой и разбором — тире с пробелами вокруг.

Готово, когда: пункт errors зелёный.

11. Звёздочка

В зачёт не входит, course check 18 эти задания не смотрит.

Готово, когда: программа из первого пункта печатает одно и то же на трёх запусках подряд, а тест из второго падает, если в функции заменить !ok на stock[sku] == 0.


Порог: 12 пунктов из 15. После зачёта — контрольные вопросы: course quiz 18.