ट्रैक
/
F#
F#
/
अभ्यास
/
अनलिन की घुसपैठ
अनलिन की घुसपैठ

अनलिन की घुसपैठ

सीखने का अभ्यास

परिचय

बूलियन

F# में बूलियन को bool टाइप से दर्शाया जाता है। इस टाइप की वैल्यू या तो true हो सकती है या false।

F# तीन बूलियन ऑपरेटर सपोर्ट करता है: not (नॉट), && (एंड), और || (ऑर)।

निर्देश

इस अभ्यास में आप एक नए RPG गेम के लिए क्वेस्ट का लॉजिक बनाएँगे, जिसे आपका कोई मित्र बना रहा है। गेम की मुख्य पात्र Annalyn है, जो एक बहादुर लड़की है और उसके पास एक निडर और निष्ठावान पालतू कुत्ता है। लेकिन दुर्भाग्य से एक विपत्ति आ जाती है। जंगल में बेरियाँ ढूँढ़ते समय उसके सबसे अच्छे मित्र का अपहरण कर लिया जाता है। Annalyn उसे ढूँढ़कर आज़ाद कराने की कोशिश करेगी। वह चाहे तो इस क्वेस्ट में अपने कुत्ते को साथ ले जा सकती है।

अपने मित्र के पदचिह्नों का पीछा करते हुए कुछ समय बाद उसे वह शिविर मिल जाता है जहाँ उसका मित्र बंदी है। वहाँ पता चलता है कि अपहरणकर्ता दो हैं: एक शक्तिशाली नाइट और एक चालाक धनुर्धर।

अपहरणकर्ताओं का पता लगने के बाद Annalyn सोचती है कि वह नीचे दिए गए किन कामों को कर सकती है:

  • तेज़ हमला: तेज़ हमला तभी किया जा सकता है जब नाइट सो रहा हो, क्योंकि उसे अपना कवच पहनने में समय लगता है, इसलिए वह असुरक्षित होगा।
  • जासूसी: समूह पर जासूसी तभी की जा सकती है जब उनमें से कम से कम एक जागा हो। वरना जासूसी करना समय की बर्बादी है।
  • बंदी को संकेत देना: बंदी को पक्षियों की आवाज़ों से संकेत तभी दिया जा सकता है जब बंदी जागा हो और धनुर्धर सो रहा हो, क्योंकि धनुर्धर पक्षियों की आवाज़ से संकेत देना सीखे हुए होते हैं, इसलिए वे संदेश को बीच में ही पकड़ सकते हैं।
  • बंदी को आज़ाद करना: Annalyn बंदी को आज़ाद करने के लिए चुपके से शिविर में घुसने की कोशिश कर सकती है। यह करना जोखिम भरा है और यह दो तरीकों में से किसी एक से ही सफल हो सकता है:
    • अगर Annalyn के साथ उसका पालतू कुत्ता है, तो वह बंदी को तभी बचा सकती है जब धनुर्धर सो रहा हो। नाइट कुत्ते से डरता है और धनुर्धर के तैयार होने से पहले ही Annalyn और बंदी भाग जाएँगे।
    • अगर Annalyn के पास कुत्ता नहीं है, तो उसे और बंदी को बहुत चुपके से काम करना होगा! Annalyn बंदी को तभी आज़ाद कर सकती है जब बंदी जागा हो और नाइट तथा धनुर्धर दोनों सो रहे हों। लेकिन अगर बंदी सो रहा हो, तो उसे बचाया नहीं जा सकता: Annalyn के अचानक सामने आ जाने से बंदी चौंक जाएगा और नाइट तथा धनुर्धर दोनों की नींद खुल जाएगी।

आपके पास चार काम हैं। आपको यह तय करने का लॉजिक बनाना है कि ऊपर बताए गए काम किए जा सकते हैं या नहीं। यह इस पर निर्भर करता है कि जंगल में मिले तीनों पात्रों की स्थिति क्या है और Annalyn का पालतू कुत्ता साथ है या नहीं।

1. जाँचिए कि तेज़ हमला किया जा सकता है या नहीं

canFastAttack फंक्शन बनाइए, जो एक बूलियन वैल्यू लेता है जो बताती है कि नाइट जागा हुआ है या नहीं। नाइट की स्थिति के आधार पर अगर तेज़ हमला किया जा सकता है, तो यह फंक्शन true लौटाता है। वरना false लौटाता है:

let knightIsAwake = true
canFastAttack(knightIsAwake)
// => false

2. जाँचिए कि समूह पर जासूसी की जा सकती है या नहीं

canSpy फंक्शन बनाइए, जो तीन बूलियन वैल्यू लेता है। ये क्रम से बताती हैं कि नाइट, धनुर्धर और बंदी जागे हुए हैं या नहीं। तीनों पात्रों की स्थिति के आधार पर अगर समूह पर जासूसी की जा सकती है, तो यह फंक्शन true लौटाता है। वरना false लौटाता है:

let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake)
// => true

3. जाँचिए कि बंदी को संकेत दिया जा सकता है या नहीं

canSignalPrisoner फंक्शन बनाइए, जो दो बूलियन वैल्यू लेता है। ये क्रम से बताती हैं कि धनुर्धर और बंदी जागे हुए हैं या नहीं। इन दोनों पात्रों की स्थिति के आधार पर अगर बंदी को संकेत दिया जा सकता है, तो यह फंक्शन true लौटाता है। वरना false लौटाता है:

let archerIsAwake = false
let prisonerIsAwake = true
canSignalPrisoner(archerIsAwake, prisonerIsAwake)
// => true

4. जाँचिए कि बंदी को आज़ाद किया जा सकता है या नहीं

canFreePrisoner फंक्शन बनाइए, जो चार बूलियन वैल्यू लेता है। पहले तीन पैरामीटर क्रम से बताते हैं कि नाइट, धनुर्धर और बंदी जागे हुए हैं या नहीं। अंतिम पैरामीटर बताता है कि Annalyn का पालतू कुत्ता साथ है या नहीं। तीनों पात्रों की स्थिति और यह कि Annalyn का पालतू कुत्ता साथ है या नहीं, इनके आधार पर अगर बंदी को आज़ाद किया जा सकता है, तो यह फंक्शन true लौटाता है। वरना यह false लौटाता है:

let knightIsAwake = false
let archerIsAwake = true
let prisonerIsAwake = false
let petDogIsPresent = false
canFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent)
// => false
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
F# Exercism

अनलिन की घुसपैठ शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और F# को 18 कॉन्सेप्ट148 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।