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

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

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

परिचय

बूलियन

bool टाइप (बूलियन का छोटा रूप) की केवल दो वैल्यू होती हैं: true और false. कोड में true और false को छोटे या बड़े अक्षरों में लिखने से कोई फर्क नहीं पड़ता।

<?php

$value_is_true = true;
$value_is_false = false;

बूलियन वैल्यू अक्सर किसी ऑपरेटर के परिणाम के रूप में लॉजिकल एक्सप्रेशन में आती हैं और फिर कंट्रोल स्ट्रक्चर में इस्तेमाल होती हैं।

लॉजिकल ऑपरेटर

ऐसे कई लॉजिकल ऑपरेटर हैं:

  • !$a: अगर $a की वैल्यू true नहीं है तो true लौटाता है
  • $a && $b: अगर $a और $b दोनों true हैं तो true लौटाता है
  • $a || $b: अगर $a या $b में से कोई एक true है तो true लौटाता है
Caution

and और or नाम के भी ऑपरेटर हैं, और ये क्रमशः && और || के पूरक हैं। इनका व्यवहार && और || जैसा नहीं है और ये ऐसे परिणाम दे सकते हैं जिनकी उम्मीद नहीं होती, इसलिए इनका इस्तेमाल करने की सलाह नहीं दी जाती।

निर्देश

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

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

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

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

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

1. जाँचिए कि 'तेज़ हमला' कार्रवाई संभव है या नहीं

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

<?php
$is_knight_awake = true;

$infiltration = new AnnalynsInfiltration();
$infiltration->canFastAttack($is_knight_awake);
// => false

2. जाँचिए कि 'जासूसी' कार्रवाई संभव है या नहीं

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

<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;

$infiltration = new AnnalynsInfiltration();
$infiltration->canSpy($is_knight_awake, $is_archer_awake, $is_prisoner_awake);
// => true

3. जाँचिए कि 'कैदी को संकेत देना' कार्रवाई संभव है या नहीं

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

<?php
$is_archer_awake = false;
$is_prisoner_awake = true;

$infiltration = new AnnalynsInfiltration();
$infiltration->canSignal($is_archer_awake, $is_prisoner_awake);
// => true

4. जाँचिए कि 'कैदी को आज़ाद करना' कार्रवाई संभव है या नहीं

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

<?php
$is_knight_awake = false;
$is_archer_awake = true;
$is_prisoner_awake = false;
$is_dog_present = false;

$infiltration = new AnnalynsInfiltration();
$infiltration->canLiberate(
    $is_knight_awake,
    $is_archer_awake,
    $is_prisoner_awake,
    $is_dog_present
);
// => false
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
PHP Exercism

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

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