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

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

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

परिचय

बूलियन

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

Java तीन बूलियन ऑपरेटरों का समर्थन करता है:

  • ! (नॉट): बूलियन को उलट देता है।
  • && (ऐंड): दो बूलियन लेता है और अगर दोनों true हैं तो true लौटाता है।
  • || (ऑर): अगर दोनों बूलियन में से कोई एक true है तो true लौटाता है।

उदाहरण

!true // => false
!false // => true
true && false // => false
true && true // => true
false || false // => false
false || true // => true

निर्देश

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

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

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

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

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

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

(static) AnnalynsInfiltration.canFastAttack() मेथड बनाइए, जो एक बूलियन वैल्यू लेता है जो बताती है कि नाइट जाग रहा है या नहीं। यह मेथड तब true लौटाता है जब नाइट की स्थिति के आधार पर तेज़ हमला किया जा सकता हो। वरना यह false लौटाता है:

boolean knightIsAwake = true;
AnnalynsInfiltration.canFastAttack(knightIsAwake);
// => false

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

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

boolean knightIsAwake = false;
boolean archerIsAwake = true;
boolean prisonerIsAwake = false;
AnnalynsInfiltration.canSpy(knightIsAwake, archerIsAwake, prisonerIsAwake);
// => true

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

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

boolean archerIsAwake = false;
boolean prisonerIsAwake = true;
AnnalynsInfiltration.canSignalPrisoner(archerIsAwake, prisonerIsAwake);
// => true

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

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

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

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

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