गोल्फ मुझे एक OOP!
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के दो महत्वपूर्ण घटक वंशानुक्रम और रचना हैं। साथ में, वे समस्याओं को हल करने के लिए सरल लेकिन शक्तिशाली वर्ग पदानुक्रम बनाने की अनुमति देते हैं। आपका काम एक वर्ग पदानुक्रम के बारे में बयानों की एक श्रृंखला को पार्स करना है, और पदानुक्रम के बारे में सवालों के जवाब देना है।
इनपुट
एक वर्ग पदानुक्रम के बारे में कथनों और प्रश्नों की एक श्रृंखला, एक फ़ाइल या मानक इनपुट से पढ़ा जाता है, जो भी आपकी भाषा के लिए सबसे अच्छा है। यदि आप फ़ाइल विकल्प का उपयोग करते हैं, तो फ़ाइलनाम आपके कोड (फ़ंक्शन तर्क या कमांड लाइन तर्क, जो भी आप चुनते हैं) के लिए पहले तर्क के रूप में पारित किया जाएगा। प्रारूप इस प्रकार है:
<statement> : <name> is a <name>. | <name> has a <name>.
<question> : Is <name> a <name>? | Does <name> have a <name>?
<name> : a-z | A-Z | sequence of alphanumerics or underscores, starting with a letter
इनपुट हमेशा बयान होगा, फिर सवाल। सभी वर्ग नाम एक बड़े अक्षर अंग्रेजी अक्षर ( A-Z
) के साथ शुरू होंगे, और सभी सदस्य नाम एक निचले अक्षर अंग्रेजी अक्षर ( a-z
) के साथ शुरू होंगे । सभी नाम केस-संवेदी हैं - ABC123
समान वर्ग नहीं है Abc123
।
कोई चक्रीय विरासत नहीं होगी - अगर B
विरासत में मिली है A
, तो विरासत में A
नहीं मिलेगी B
या किसी भी B
बच्चे से नहीं होगी ।
केवल श्रेणी के नाम एक पदानुक्रम का एक हिस्सा होंगे - जैसे कि कथन foo is a bar.
या document has a name.
घटित नहीं होंगे।
उत्पादन
सत्य या गलत मूल्यों की एक श्रृंखला, प्रश्नों के उत्तर के रूप में, मानक आउटपुट के लिए या आपके फ़ंक्शन के रिटर्न मान के रूप में लिखा गया है। यदि आपके पास किसी प्रश्न का उत्तर देने के लिए पर्याप्त जानकारी नहीं है (उदाहरण के लिए ऐसे प्रश्न, जिनमें वे नाम शामिल हैं जिन्हें आपने विवरणों में नहीं देखा है), तो एक गलत मान के साथ उत्तर दें।
परीक्षण के मामलों
मामला एक:
इनपुट:
B is a A.
C is a B.
A has a foo.
Does B have a foo?
Is C a A?
Is D a A?
आउटपुट:
True
True
False
केस 2:
इनपुट:
Cop is a Person.
Criminal is a Person.
Sheriff is a Cop.
Crooked_Cop is a Cop.
Crooked_Cop is a Criminal.
BankRobber is a Criminal.
Cop has a badge.
Criminal has a criminal_record.
Person has a name.
Is Crooked_Cop a Person?
Does Criminal have a name?
Is Crooked_Cop a BankRobber?
Does Person have a potato?
Is Cop a Cop?
आउटपुट:
True
True
False
False
True
नियम
- आप एक समारोह या एक कार्यक्रम के साथ जवाब दे सकते हैं
- मानक खामियों को मना किया जाता है
- यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा सही उत्तर है
- जीतने वाला जवाब एक सप्ताह में चुना जाएगा
सौभाग्य, और OOP आपके साथ हो सकता है!
लीडरबोर्ड
इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से लीडरबोर्ड उत्पन्न करता है) ए प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।
यह सुनिश्चित करने के लिए कि आपका उत्तर दिखाई देता है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:
## Language Name, N bytes
N
आपके प्रस्तुत करने का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:
## Ruby, <s>104</s> <s>101</s> 96 bytes
यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक अंक अंतिम संख्या है:
## Perl, 43 + 2 (-p flag) = 45 bytes
आप भाषा के नाम को एक लिंक भी बना सकते हैं जो बाद में स्निपेट में दिखाई देगा:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
Criminal is a Person
। Person has a name
।
Does Criminal have a name?
बराबर कैसे हैTrue
? क्या सभी वस्तुओं का एक नाम है?