एक म्यूरियल जैसी भाषा और कार्यान्वयन बनाएँ


9

मुरियल एक भाषा है जहां केवल पाश करने के लिए जिस तरह से एक Quine बनाने और इसे निष्पादित करने के लिए है। आपका काम इस संपत्ति के साथ अपनी भाषा बनाना और पहले से मौजूद भाषा में इसे लागू करना है।

हम एक मुरियल जैसी भाषा को इस प्रकार परिभाषित करेंगे:

  1. इसकी अपनी भाषा में कोड को निष्पादित करने के लिए एक अंतर्निहित कमांड है, जो म्यूरियल के @आदेश या अजगर के समान है exec
  2. यह ट्यूरिंग पूर्ण है।
  3. यदि आप अंतर्निहित निष्पादन कमांड को हटाते हैं तो यह ट्यूरिंग पूर्ण नहीं है।

मुरील, म्यूरियल की तरह @अपनी अंतर्निहित निष्पादन कमांड के साथ है। स्मर्फ भी म्यूरियल जैसा है (इसका बिल्ट-इन एक्जीक्यूशन कमांड है x)। अजगर है नहीं मुरियल की तरह, यह अभी भी पूरा ट्यूरिंग है के बाद से, अगर आप को दूर exec

आपका काम एक म्यूरियल जैसी प्रोग्रामिंग भाषा बनाना है, और फिर अपनी पसंद की भाषा में इसे लागू करना है। आपका स्कोर कार्यान्वयन की लंबाई है, जिसे आप कम करने की कोशिश कर रहे हैं।

टिप्पणियाँ:

  1. आपके अंतर्निहित निष्पादन को म्यूरियल की तरह कार्य करने की आवश्यकता नहीं है। यह आप पर निर्भर है कि यह बच्चे के कार्यक्रम, त्रुटियों, स्कूपिंग आदि को कैसे समाप्त करता है ...
  2. आप जिस भाषा में कार्यान्वयन लिखते हैं, वह स्वयं म्यूरियल जैसी नहीं हो सकती। (यह ऐसा है जो @एक मान्य प्रविष्टि नहीं है।) यह भी इस पद से पहले अस्तित्व में होना चाहिए।

क्या एक मिरियल जैसी भाषा का बोझ है?
एलेफल्फा

@JerryJeremiah क्या मेरा संपादन इसे स्पष्ट करता है?
PyRulez

@alephalpha उस विकी का कहना है "बिना ^, शेष कार्यक्रम हमेशा आकार में कमी करेगा, अंततः रुक जाएगा।" अगर यह सच है, तो हाँ, अंडरलोड म्यूरियल जैसा है।
PyRulez

यदि आपकी लक्ष्य भाषा में कई evalकमांड हैं तो आप क्या करते हैं ? (उदाहरण पायथन execऔर eval) टीसीएस खोने के लिए उन सभी को हटाने की आवश्यकता है?
कैलक्यूलेटरफैनलाइन

1
@PyRulez मुझे लगता है कि यह कोड-गोल्फ के बजाय लोकप्रियता-प्रतियोगिता होना चाहिए , क्योंकि अन्यथा कार्यान्वयन भाषा का विकल्प इसे गिरगिट चुनौती बना देगा
उरेल

जवाबों:


3

पायथन 3 और "अंडरलोड का न्यूनतम टीसी सबसेट लेकिन पात्रों के साथ बदल गया 2019, उलट गया, और 0शीर्ष पर", 156 बाइट्स के साथ

c=input()
n=1
t=c
s=[]
while c:
 *c,i=c
 if n:
  if"6">i:n+=int(i)-1
  if n:t=[i]+t
  else:s+=[t];t=[]
 elif"2"==i:n=1
 elif"2">i:s+=s[-1:]
 else:c+=s.pop()

इसे ऑनलाइन आज़माएं!

हेडर में स्पष्टीकरण, पाद लेख में टिप्पणी कोड।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.