Clojure में बूलियन को true या false से दर्शाया जाता है।
प्रेडिकेट फंक्शन (वे फंक्शन जो बूलियन लौटाते हैं) आम तौर पर प्रश्न चिह्न (?) पर खत्म होते हैं, लेकिन यह सिर्फ एक परंपरा है।
कोर लाइब्रेरी में not, and और or जैसे लॉजिकल ऑपरेटरों के लिए फंक्शन शामिल हैं।
इस अभ्यास में आप एक नए RPG गेम का क्वेस्ट लॉजिक लिखेंगे, जिसे आपका एक दोस्त बना रहा है। इस गेम की मुख्य पात्र Annalyn है, जो एक बहादुर लड़की है और जिसके साथ उसका दिलेर और वफादार पालतू कुत्ता रहता है। दुर्भाग्य से एक विपत्ति आ पड़ती है: जंगल में जामुन ढूँढते समय उसकी सबसे अच्छी दोस्त का अपहरण कर लिया जाता है। Annalyn उसे ढूँढकर बचाने की कोशिश करेगी, और चाहे तो इस खोज में अपने कुत्ते को भी साथ ले जाएगी।
कुछ समय तक पदचिह्नों का पीछा करने के बाद Annalyn को वह शिविर मिल जाता है जहाँ उसकी दोस्त कैद है। पता चलता है कि अपहरणकर्ता दो हैं: एक शक्तिशाली नाइट और एक चालाक तीरंदाज़।
अपहरणकर्ताओं का पता लगने के बाद Annalyn सोचती है कि वह नीचे बताई गई किन कार्रवाइयों को कर सकती है:
आपको चार काम करने हैं: जंगल में उन तीन पात्रों की स्थिति और Annalyn का पालतू कुत्ता साथ है या नहीं, इसके आधार पर यह तय करने का तर्क लिखना कि ऊपर बताई गई कार्रवाइयाँ की जा सकती हैं या नहीं।
can-fast-attack? फंक्शन बनाइए, जो एक बूलियन वैल्यू लेता है। यह वैल्यू बताती है कि नाइट जागा हुआ है या नहीं। नाइट की स्थिति के आधार पर तेज़ हमला किया जा सकता है तो यह फंक्शन true लौटाता है, वरना false लौटाता है:
(def knight-awake? true)
(can-fast-attack? knight-awake?)
;;=> false
can-spy? फंक्शन बनाइए, जो तीन बूलियन वैल्यू लेता है। ये वैल्यू क्रमशः बताती हैं कि नाइट, तीरंदाज़ और कैदी जागे हुए हैं या नहीं। तीनों पात्रों की स्थिति के आधार पर समूह पर जासूसी की जा सकती है तो यह फंक्शन true लौटाता है, वरना false लौटाता है:
(def knight-awake? false)
(def archer-awake? true)
(def prisoner-awake? false)
(can-spy? knight-awake? archer-awake? prisoner-awake?)
;;=> true
can-signal-prisoner? फंक्शन बनाइए, जो दो बूलियन वैल्यू लेता है। ये वैल्यू क्रमशः बताती हैं कि तीरंदाज़ और कैदी जागे हुए हैं या नहीं। दोनों पात्रों की स्थिति के आधार पर कैदी को संकेत दिया जा सकता है तो यह फंक्शन true लौटाता है, वरना false लौटाता है:
(def archer-awake? false)
(def prisoner-awake? true)
(can-signal-prisoner? archer-awake? prisoner-awake?)
;;=> true
can-free-prisoner? फंक्शन बनाइए, जो चार बूलियन वैल्यू लेता है। पहले तीन पैरामीटर क्रमशः बताते हैं कि नाइट, तीरंदाज़ और कैदी जागे हुए हैं या नहीं। अंतिम पैरामीटर बताता है कि Annalyn का पालतू कुत्ता साथ है या नहीं। तीनों पात्रों की स्थिति और Annalyn के पालतू कुत्ते की मौजूदगी के आधार पर कैदी को आज़ाद किया जा सकता है तो यह फंक्शन true लौटाता है, वरना false लौटाता है:
(def knight-awake? false)
(def archer-awake? true)
(def prisoner-awake? false)
(def dog-present? false)
(can-free-prisoner? knight-awake? archer-awake? prisoner-awake? dog-present?)
;;=> false
Exercism पर साइन अप कीजिए और Clojure को 12 कॉन्सेप्ट105 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।