У F# булеві значення представлені типом bool, який може набувати значень true або false.
F# підтримує три булеві оператори: not (логічне заперечення), && (логічне і) та || (логічне або).
У цій вправі ми будемо реалізовувати логіку квесту для нової рольової гри, яку розробляє друг. Головна героїня гри - Анналін, смілива дівчина з грізним і відданим псом. На жаль, сталося лихо: її найкращу подругу викрали, коли вона шукала в лісі ягоди. Анналін спробує знайти і визволити свою найкращу подругу, за бажанням узявши з собою пса в цю подорож.
Провівши деякий час, ідучи слідом за найкращою подругою, вона знаходить табір, у якому її найкращу подругу увʼязнено. Виявляється, викрадачів двоє: могутній лицар і хитрий лучник.
Знайшовши викрадачів, Анналін обмірковує, які з наступних дій вона може здійснити:
У нас чотири завдання: реалізувати логіку, яка визначає, чи доступні описані дії залежно від стану трьох персонажів, знайдених у лісі, і від того, чи поруч із Анналін її пес.
Реалізуйте функцію canFastAttack, яка приймає булеве значення (англ. Boolean), що вказує, чи не спить лицар. Ця функція повертає true, якщо швидку атаку можна здійснити залежно від стану лицаря. Інакше повертає false:
let knightIsAwake = true
canFastAttack(knightIsAwake)
// => false
Реалізуйте функцію canSpy, яка приймає три булеві значення, що вказують, чи не сплять, відповідно, лицар, лучник і вʼязень. Функція повертає true, якщо за групою можна шпигувати залежно від стану трьох персонажів. Інакше повертає false:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake)
// => true
Реалізуйте функцію canSignalPrisoner, яка приймає два булеві значення, що вказують, чи не сплять, відповідно, лучник і вʼязень. Функція повертає true, якщо вʼязню можна подати сигнал залежно від стану двох персонажів. Інакше повертає false:
let archerIsAwake = false
let prisonerIsAwake = true
canSignalPrisoner(archerIsAwake, prisonerIsAwake)
// => true
Реалізуйте функцію canFreePrisoner, яка приймає чотири булеві значення. Перші три параметри вказують, чи не сплять, відповідно, лицар, лучник і вʼязень. Останній параметр вказує, чи присутній пес Анналін. Функція повертає true, якщо вʼязня можна визволити залежно від стану трьох персонажів і наявності пса Анналін. Інакше вона повертає false:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
Зареєструйтеся на Exercism, щоб вивчати й опановувати F#, а також 18 концепцій148 вправ та справжнє наставництво від людей, і все це безкоштовно.