Треки
/
Go
Go
/
Вправи
/
Спостерігач за птахами
Спостерігач за птахами

Спостерігач за птахами

Навчальна вправа

Вступ

Загальний синтаксис

Цикл for - одна з найпоширеніших інструкцій для багаторазового виконання якоїсь логіки. У Go він складається з ключового слова for, заголовка та блоку коду, який містить тіло циклу, укладене у фігурні дужки. Заголовок складається з трьох компонентів, розділених крапками з комою ;: init, умова та post.

for init; condition; post {
  // loop body - code that is executed repeatedly as long as the condition is true
}
  • Компонент init містить код, який виконується лише один раз, перед початком циклу.
  • Компонент умова має бути виразом, який обчислюється в булеве значення (англ. Boolean) і визначає, коли цикл має зупинитися. Код усередині циклу буде виконуватися, доки ця умова дає правду. Щойно цей вираз дасть неправду, жодна наступна ітерація циклу не виконається.
  • Компонент post містить код, який виконується наприкінці кожної ітерації.

Зауваження: На відміну від інших мов, три компоненти заголовка не оточені круглими дужками (()). Насправді, такі дужки призведуть до помилки компіляції. Однак фігурні дужки ({ }) навколо тіла циклу потрібні завжди.

Цикли for: приклад

Компонент init зазвичай створює змінну-лічильник, компонент умова перевіряє, чи продовжувати цикл чи зупинити його, а компонент post зазвичай збільшує лічильник наприкінці кожного повторення.

for i := 1; i < 10; i++ {
  fmt.Println(i)
}

Цей цикл виведе числа від 1 до 9 (включно з 9). Крок часто задають інструкцією інкременту або декременту, як показано в прикладі вище.

Вказівки

Ми завзяті спостерігачі за птахами й ведемо облік того, скільки птахів завітало до нашого саду. Зазвичай ми ведемо лічбу птахів у записнику, але, щоб зручніше працювати з даними, ми оцифрували підрахунки птахів за останні тижні.

1. Визначте загальну кількість птахів, яких ми нарахували на цей момент

Почнімо аналізувати дані із загального огляду. Зʼясуймо, скільки птахів ми нарахували загалом відтоді, як почали вести свої записи.

Реалізуйте функцію TotalBirdCount, яка приймає зріз int, що містить кількість птахів за кожен день. Вона повинна повернути загальну кількість птахів, яких ми нарахували.

birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34

2. Обчисліть кількість птахів, що завітали, за конкретний тиждень

Тепер, коли в нас є загальне уявлення про підрахунки птахів, хочеться зробити докладніший аналіз.

Реалізуйте функцію BirdsInWeek, яка приймає зріз підрахунків птахів за днями та номер тижня.

Вона повертає загальну кількість птахів, яких ми нарахували за цей конкретний тиждень. Можна припускати, що тижні завжди обліковані повністю.

birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12

3. Виправте помилку в підрахунку

Ми зрозуміли, що весь час, поки ми намагалися вести облік птахів, один птах ховався в далекому куточку саду.

Ми зʼясували, що цей птах завжди проводив у нашому саду кожен другий день.

Ми не знаємо точно, де він був у проміжках між цими днями, але точно не в нашому саду.

Інтуїція спостерігача за птахами також підказує, що цей птах був у нашому саду першого дня, який ми записали.

З огляду на цю нову інформацію напишіть функцію FixBirdCountLog, яка приймає як аргумент зріз підрахунків птахів за днями та повертає цей зріз після виправлення помилки в підрахунку.

birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Go Exercism

Час розпочати Спостерігач за птахами?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.