Булеві значення (англ. Boolean) у Cairo представлені наперед визначеним булевим типом bool, значеннями якого можуть бути true або false.
let speeding = true; // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false'
Cairo підтримує три логічні оператори, які зводять вирази до булевих значень і повертають true або false.
| Оператор | Що він означає |
|---|---|
&& (логічне і) |
Це правда, якщо обидва твердження правдиві. |
|| (логічне або) |
Це правда, якщо принаймні одне твердження правдиве. |
! (логічне заперечення) |
Це правда, лише якщо твердження неправдиве. |
У цій вправі ми реалізуємо логіку квесту для нової рольової гри, яку розробляє наш друг. Головна героїня гри - Анналін, відважна дівчина з грізним і відданим псом. На жаль, сталася біда: її найкращого друга викрали, коли він шукав у лісі ягоди. Анналін спробує знайти й визволити свого найкращого друга, можливо, взявши із собою в цю подорож пса.
Провівши деякий час, ідучи слідом за найкращим другом, вона знаходить табір, у якому його тримають. Виявляється, викрадачів двоє: могутній лицар і хитрий лучник.
Знайшовши викрадачів, Анналін думає, які з наведених дій вона може вжити:
У нас чотири завдання: реалізувати логіку визначення, чи доступні наведені дії, залежно від стану трьох персонажів, знайдених у лісі, і від того, чи присутній пес Анналін.
Визначте функцію can_fast_attack(), яка приймає булеве значення (англ. Boolean), що вказує, чи не спить лицар.
Ця функція повертає true, якщо швидку атаку можна здійснити залежно від стану лицаря.
Інакше повертає false:
let knight_awake = true;
can_fast_attack(knight_awake); // false
Визначте функцію can_spy(), яка приймає три булеві значення, що вказують, чи не сплять лицар, лучник і вʼязень відповідно.
Функція повертає true, якщо за групою можна стежити, залежно від стану трьох персонажів.
Інакше повертає false:
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true
Визначте функцію can_signal_prisoner(), яка приймає два булеві значення, що вказують, чи не сплять лучник і вʼязень відповідно.
Функція повертає true, якщо вʼязневі можна подати сигнал, залежно від стану двох персонажів.
Інакше повертає false:
let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true
Визначте функцію can_free_prisoner(), яка приймає чотири булеві значення.
Перші три параметри вказують, чи не сплять лицар, лучник і вʼязень відповідно.
Останній параметр вказує, чи присутній пес Анналін.
Функція повертає true, якщо вʼязня можна визволити, залежно від стану трьох персонажів і наявності пса Анналін.
Інакше вона повертає false:
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Зареєструйтеся на Exercism, щоб вивчати й опановувати Cairo, а також 25 концепцій68 вправ та справжнє наставництво від людей, і все це безкоштовно.