क्योंकि हम गूढ़ भाषा गोल्फ के लिए पर्याप्त नहीं मिल सकता है, हम कर सकते हैं?
/// - स्पष्ट स्लैश- पेरल s///
प्रसिद्धि के रेगेक्स-रिप्लेसमेंट फ़ंक्शन के आधार पर एक मजेदार छोटी भाषा । इसमें केवल दो विशेष वर्ण हैं, स्लैश /
और बैकस्लैश \
। आप इस पर एक पूरा लेख esolangs विकी पर पा सकते हैं , लेकिन मैं नीचे दिए गए भाषा के विवरण के साथ-साथ कुछ उदाहरणों को पुन: पेश करूंगा।
संक्षेप में, यह /pattern/repl/rest
कार्यक्रम में पहचान करके और प्रतिस्थापन को यथासंभव अधिक से अधिक बनाने का काम करता है। कोई भी वर्ण विशेष को छोड़कर नहीं हैं /
और \
: /
कार्यक्रम में पैटर्न और प्रतिस्थापन का सीमांकन करते हैं, जबकि \
आप अपने कोड में शाब्दिक /
या \
वर्ण सम्मिलित करने की अनुमति देते हैं । विशेष रूप से, ये नियमित अभिव्यक्ति नहीं हैं, बस सादे स्ट्रिंग प्रतिस्थापन हैं।
आपकी चुनौती /// भाषा के लिए दुभाषिया का उत्पादन करना है, या तो एसटीडीआईएन पढ़ने वाले एक कार्यक्रम या स्ट्रिंग तर्क लेने वाले फ़ंक्शन के रूप में संभव के रूप में कुछ वर्णों में।
आप स्वयं /// को छोड़कर किसी भी भाषा का उपयोग कर सकते हैं। आप व्याख्या /// की व्याख्या करने वाले किसी भी पुस्तकालय का उपयोग नहीं कर सकते हैं; हालाँकि, आप regexes, regex पुस्तकालयों, या स्ट्रिंग-मिलान पुस्तकालयों का उपयोग कर सकते हैं।
क्रियान्वयन
चार राज्य हैं, प्रिंट , पैटर्न , प्रतिस्थापन और प्रतिस्थापन । प्रतिस्थापन को छोड़कर हर राज्य में :
- यदि कार्यक्रम खाली है, तो निष्पादन रुक जाता है।
- एल्स, यदि पहला चरित्र है
\
, तो अगले चरित्र के साथ कुछ करें (यदि वर्तमान में) और प्रोग्राम से दोनों को हटा दें। - एल्स, यदि पहला चरित्र है
/
, तो इसे हटा दें, और अगले राज्य में बदल दें। - एल्स, पहले किरदार के साथ कुछ करें और इसे प्रोग्राम से हटा दें।
- दोहराएँ।
के माध्यम से चक्र कहा गया प्रिंट , पैटर्न , प्रतिस्थापन , और प्रतिस्थापन के क्रम में।
- में प्रिंट मोड, साधन उत्पादन चरित्र 'कुछ करना'।
- में पैटर्न मोड, साधन वर्तमान पैटर्न के चरित्र जोड़ें 'कुछ करना'।
- में प्रतिस्थापन मोड, साधन वर्तमान रिप्लेसमेंट के लिए चरित्र जोड़ें 'कुछ करना'।
में प्रतिस्थापन मोड, आप नियमों का एक अलग सेट का पालन करें। कार्यक्रम में वर्तमान प्रतिस्थापन के साथ वर्तमान पैटर्न की पहली घटना को बार-बार स्थानापन्न करें, जब तक कि कोई और प्रतिस्थापन संभव न हो। उस बिंदु पर, पैटर्न और प्रतिस्थापन को साफ़ करें और प्रिंट मोड पर लौटें ।
कार्यक्रम में /foo/foobar/foo foo foo
, निम्नलिखित होता है:
/foo/foobar/foo foo foo
foo foo foo
foobar foo foo
foobarbar foo foo
foobarbarbar foo foo
...
यह हमेशा के लिए बंद हो जाता है और प्रतिस्थापन मोड से बाहर नहीं निकलता है। इसी तरह, यदि पैटर्न खाली है, तो कार्यक्रम की शुरुआत में खाली स्ट्रिंग की पहली घटना — हमेशा मेल खाती है, इसलिए प्रतिस्थापन मोड हमेशा के लिए बंद हो जाता है, कभी रुक नहीं पाता।
उदाहरण
no
आउटपुट: no
।
/ world! world!/Hello,/ world! world! world!
आउटपुट: Hello, world!
।
/foo/Hello, world!//B\/\\R/foo/B/\R
आउटपुट: Hello, world!
।
a/ab/bbaa/abb
आउटपुट: a
। कार्यक्रम रुकता नहीं है।
//
आउटपुट: कोई नहीं।
///
आउटपुट: कोई नहीं। कार्यक्रम रुकता नहीं है।
/\\/good/\/
आउटपुट: good
।
विकी पर एक क्वीन भी है जिसे आप आज़मा सकते हैं।
\
चरित्र किसी भी ऐसे चरित्र से बच जाता है /
, जो उसका अनुसरण करता है, जिसमें बाद में सामान्य रूप से इस्तेमाल किया जा सकता है। हालांकि यह ज्यादा नहीं दिखता है, लेकिन यह /// ट्यूरिंग-पूर्ण बनाता है ।
///
आईडीई में इस जानकारी का उपयोग करेंगे जो मैं बना रहा हूं!
/-/World//--/Hello//--W/--, w/---!
क्या प्यार करने लायक नहीं? (अंत से डैश को हटाने का प्रयास करें)