F# में बूलियन को bool टाइप से दर्शाया जाता है। इस टाइप की वैल्यू या तो true हो सकती है या false।
F# तीन बूलियन ऑपरेटर सपोर्ट करता है: not (नॉट), && (एंड), और || (ऑर)।
इस अभ्यास में आप एक नए RPG गेम के लिए क्वेस्ट का लॉजिक बनाएँगे, जिसे आपका कोई मित्र बना रहा है। गेम की मुख्य पात्र Annalyn है, जो एक बहादुर लड़की है और उसके पास एक निडर और निष्ठावान पालतू कुत्ता है। लेकिन दुर्भाग्य से एक विपत्ति आ जाती है। जंगल में बेरियाँ ढूँढ़ते समय उसके सबसे अच्छे मित्र का अपहरण कर लिया जाता है। Annalyn उसे ढूँढ़कर आज़ाद कराने की कोशिश करेगी। वह चाहे तो इस क्वेस्ट में अपने कुत्ते को साथ ले जा सकती है।
अपने मित्र के पदचिह्नों का पीछा करते हुए कुछ समय बाद उसे वह शिविर मिल जाता है जहाँ उसका मित्र बंदी है। वहाँ पता चलता है कि अपहरणकर्ता दो हैं: एक शक्तिशाली नाइट और एक चालाक धनुर्धर।
अपहरणकर्ताओं का पता लगने के बाद Annalyn सोचती है कि वह नीचे दिए गए किन कामों को कर सकती है:
आपके पास चार काम हैं। आपको यह तय करने का लॉजिक बनाना है कि ऊपर बताए गए काम किए जा सकते हैं या नहीं। यह इस पर निर्भर करता है कि जंगल में मिले तीनों पात्रों की स्थिति क्या है और Annalyn का पालतू कुत्ता साथ है या नहीं।
canFastAttack फंक्शन बनाइए, जो एक बूलियन वैल्यू लेता है जो बताती है कि नाइट जागा हुआ है या नहीं। नाइट की स्थिति के आधार पर अगर तेज़ हमला किया जा सकता है, तो यह फंक्शन 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 फंक्शन बनाइए, जो चार बूलियन वैल्यू लेता है। पहले तीन पैरामीटर क्रम से बताते हैं कि नाइट, धनुर्धर और बंदी जागे हुए हैं या नहीं। अंतिम पैरामीटर बताता है कि Annalyn का पालतू कुत्ता साथ है या नहीं। तीनों पात्रों की स्थिति और यह कि Annalyn का पालतू कुत्ता साथ है या नहीं, इनके आधार पर अगर बंदी को आज़ाद किया जा सकता है, तो यह फंक्शन true लौटाता है। वरना यह false लौटाता है:
let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
Exercism पर साइन अप कीजिए और F# को 18 कॉन्सेप्ट148 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।