Треки
/
Julia
Julia
/
Вправи
/
Інфільтрація Анналін
Інфільтрація Анналін

Інфільтрація Анналін

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

Вступ

Булеві значення (англ. Boolean) в Julia

Значення «правда» і «неправда» представлені типом Bool. Він містить лише два значення: true та false.

julia> true
true

julia> false
false

Булеві оператори

У Julia є три булеві оператори.

&& позначає логічне «і». Він набуває значення true, якщо вирази з обох боків && дорівнюють true.

julia> true && true
true

julia> true && false
false

|| позначає логічне «або». Він набуває значення true, якщо вираз з будь-якого боку || дорівнює true.

julia> true || true
true

julia> false || true
true

! позначає логічне заперечення. Він міняє місцями значення true і false.

julia> !true
false

julia> !false
true

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

julia> (true || false) && (false && true)
false

Вказівки

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

Зрештою Анналін знаходить табір, де тримають її подругу, і зʼясовується, що викрадачів двоє: могутній лицар і хитрий лучник.

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

1. Перевірка, чи показувати варіант «Швидка атака»

Якщо лицар спить, Анналін зможе швидко атакувати табір, перш ніж він як слід прокинеться і встигне вдягнути обладунки.

Реалізуйте функцію з назвою can_do_fast_attack, яка приймає булеве значення (англ. Boolean) і вказує, чи лицар не спить. Функція повертає true, якщо дія «Швидка атака» доступна залежно від стану персонажа. Інакше повертає false:

julia> knight_awake = true

julia> can_do_fast_attack(knight_awake)
false

2. Перевірка, чи показувати варіант «Шпигун»

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

Реалізуйте функцію з назвою can_spy, яка приймає три булеві значення: вони вказують, чи не сплять лицар, лучник і полонянка відповідно. Функція повертає true, якщо дія «Шпигун» доступна залежно від стану персонажів. Інакше повертає false:

# Output suppressed from the next 3 lines
julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false

julia> can_spy(knight_awake, archer_awake, prisoner_awake)
true

3. Перевірка, чи показувати варіант «Подати сигнал полонянці»

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

Реалізуйте функцію з назвою can_signal_prisoner, яка приймає два булеві значення: вони вказують, чи не сплять лучник і полонянка відповідно. Функція повертає true, якщо дія «Подати сигнал полонянці» доступна залежно від стану персонажів. Інакше повертає false:

julia> archer_awake = false
julia> prisoner_awake = true

julia> can_signal_prisoner(archer_awake, prisoner_awake)
true

4. Перевірка, чи показувати варіант «Звільнити полонянку»

Анналін може спробувати непомітно пробратися до табору, щоб визволити подругу. Це ризикована справа, і вдатися вона може лише одним із двох способів:

  • Якщо Анналін бере із собою пса, вона може врятувати полонянку, коли лучник спить. Лицар боїться пса, а лучник не встигне підготуватися, перш ніж Анналін і подруга втечуть.

  • Якщо ж Анналін без пса, то їй і полонянці доведеться бути дуже обережними! Анналін може визволити полонянку, якщо та не спить, а лицар і лучник обоє сплять. Але якщо полонянка спить, урятувати її не вдасться: вона злякається раптової появи Анналін і розбудить лицаря та лучника.

Реалізуйте функцію з назвою can_free_prisoner, яка приймає чотири булеві значення. Перші три параметри вказують, чи не сплять лицар, лучник і полонянка відповідно. Останній параметр вказує, чи є поряд пес Анналін. Функція повертає true, якщо дія «Звільнити полонянку» доступна залежно від стану персонажів. Інакше повертає false:

julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false
julia> dog_present = false

julia> can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present)
false
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Julia Exercism

Час розпочати Інфільтрація Анналін?

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