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

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

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

परिचय

Go में बूलियन को पहले से घोषित बूलियन टाइप bool से दर्शाया जाता है, और इसकी वैल्यू true या false हो सकती है। यह एक परिभाषित टाइप है।

var closed bool    // boolean variable 'closed' implicitly initialized with 'false'
speeding := true   // boolean variable 'speeding' initialized with 'true'
hasError := false  // boolean variable 'hasError' initialized with 'false' 

Go तीन लॉजिकल ऑपरेटर का समर्थन करता है। ये एक्सप्रेशन को जाँचकर बूलियन वैल्यू देते हैं, यानी true या false लौटाते हैं।

ऑपरेटर इसका क्या मतलब है
&& (और) दोनों दावे सही हों, तभी यह सही होता है।
|| (या) कम से कम एक दावा सही हो, तो यह सही होता है।
! (नहीं) यह तभी सही होता है जब दावा गलत हो।

निर्देश

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

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

अपहरणकर्ताओं को ढूँढ लेने के बाद Annalyn सोचती है कि वह नीचे दी गई कार्रवाइयों में से कौन-सी कर सकती है:

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

आपके सामने चार काम हैं: जंगल में मिले तीन किरदारों की स्थिति और Annalyn का पालतू कुत्ता साथ है या नहीं, इनके आधार पर यह तय करने का लॉजिक लिखना कि ऊपर बताई गई कार्रवाइयाँ की जा सकती हैं या नहीं।

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

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

var knightIsAwake = true
fmt.Println(CanFastAttack(knightIsAwake))
// Output: false

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

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

var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
fmt.Println(CanSpy(knightIsAwake, archerIsAwake, prisonerIsAwake))
// Output: true

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

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

var archerIsAwake = false
var prisonerIsAwake = true
fmt.Println(CanSignalPrisoner(archerIsAwake, prisonerIsAwake))
// Output: true

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

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

var knightIsAwake = false
var archerIsAwake = true
var prisonerIsAwake = false
var petDogIsPresent = false
fmt.Println(CanFreePrisoner(knightIsAwake, archerIsAwake, prisonerIsAwake, petDogIsPresent))
// Output: false
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Go Exercism

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

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