पूर्णता / दोष
वाह, यह मजेदार था।
पूर्णता / अपूर्णता तभी पूर्ण होती है जब अनंत परिपूर्ण संख्याएँ हों। अगर वहाँ हैं, यह पूर्णता कहा जाता है, और अगर वहाँ नहीं कर रहे हैं, यह Imperfection कहा जाता है। जब तक यह रहस्य सुलझ नहीं जाता, तब तक यह दोनों नाम रखता है।
एक पूर्ण संख्या एक संख्या है जिसका भाजक संख्या के योग है, इसलिए छह एक पूर्ण संख्या है क्योंकि 1+2+3=6
।
पूर्णता / अपूर्णता के निम्नलिखित कार्य हैं:
पूर्णता / Imperfection एक शून्य-अनुक्रमित स्टैक के साथ स्टैक-आधारित है।
आदेश:
p(x, y)
: yth स्थिति में स्टैक पर x को धकेलता है।
z(x, y)
: x को yth स्थिति में स्टैक पर धकेलता है, जो पहले yth स्थिति में था, उससे छुटकारा पा लेता है
r(x)
: स्टैक से xth आइटम निकालता है
k(x)
: स्टैक पर xth आइटम लौटाता है
a(x, y)
: x और y जोड़ता है। जब स्ट्रिंग्स के साथ उपयोग किया जाता है, तो यह उन्हें एक साथ क्रम xy में डालता है।
s(x, y)
: x से y को घटाता है। तार के साथ, अंतिम len (y) को x से हटाता है
m(x, y)
: एक्स और वाई को गुणा करता है। यदि स्ट्रिंग्स के साथ उपयोग किया जाता है, तो एक्स गुणा लीन वाई गुणा करें।
d(x, y)
: x को y से विभाजित करता है
o(x)
: प्रिंट x
i(x, y)
: यदि x सत्य का मूल्यांकन करता है, तो यह फ़ंक्शन y को निष्पादित करता है
n()
: वह काउंटर लौटाता है जिस पर कोड ब्लॉक कहा जाता है।
q()
: स्टैक की लंबाई लौटाता है
t()
: उपयोगकर्ता का निवेश
e(x, y)
: यदि x एक पूर्णांक है, यदि x और y का मान समान है, तो यह रिटर्न 1 होता है। यदि y एक स्ट्रिंग है तो इसे y की लंबाई मिलती है। यदि x एक स्ट्रिंग है, तो यह y को एक स्ट्रिंग में परिवर्तित करता है और जाँचता है कि क्या वे समान हैं, और यदि वे हैं, तो रिटर्न 1। अन्यथा रिटर्न 0।
l(x, y)
: यदि x, y से बड़ा है, तो यह 1 लौटाता है। यदि कोई स्ट्रिंग है, तो वह स्ट्रिंग की लंबाई का उपयोग करता है।
b()
: कार्यक्रम को रोकता है।
c(x, y)
: x चलाता है, तो y।
एक पायथन के बराबर पाने के लिए and
, दो मूल्यों को एक साथ गुणा करें। के लिए or
, मान जोड़ने, और के लिए not
, मूल्य घटाना से 1. यह तभी मूल्य 1 या 0, जो अपने आप में संख्या से विभाजित करके प्राप्त किया जा सकता है काम करता है।
डेटा प्रकार: पूर्णांक और तार। स्ट्रिंग्स द्वारा निरूपित किया जाता है ''
, और सभी गैर-पूर्णांक संख्याओं को गोल किया जाता है।
वाक्य - विन्यास:
कोड में दस {}
एस के अंदर नेस्टेड फ़ंक्शन होते हैं । उदाहरण के लिए, एक प्रोग्राम जो इनपुट के लिए मिलेगा और उन्हें जोड़ा गया प्रिंट होगा {o(a(t(), t()))}
:। कार्यक्रम की पृष्ठभूमि में एक काउंटर है जो 0 से शुरू होता है और हर बार 1 द्वारा प्रगति करता है जो एक कोड ब्लॉक को निष्पादित करता है। पहला कोड ब्लॉक पर 0
और इतने पर चलता है । एक बार दस कोड ब्लॉक निष्पादित होने के बाद, छठी बार हर बार निष्पादित किया जाता है जब काउंटर एक आदर्श संख्या तक पहुंचता है। कार्य करने के लिए आपको सभी दस कोड ब्लॉक करने की आवश्यकता नहीं है, लेकिन यदि आप एक लूप बनाना चाहते हैं तो आपको 7 की आवश्यकता होगी। यह समझने के लिए कि यह भाषा कैसे काम करती है, निम्न प्रोग्राम को चलाएं, जो काउंटर को हर बार काउंटर को एक परिपूर्ण संख्या तक पहुंचने पर प्रिंट करता है {}{}{}{}{}{}{o(n())}
:।
दुभाषिया यहां पाया जा सकता है: repl.it/GL7S/37 । या तो 1 का चयन करें और अपने कोड को टर्मिनल में टाइप करें, या code.perfect
टैब में अपना कोड पेस्ट करें और जब आप चलाएं तो 2 का चयन करें। जब आप इसे आज़माएंगे तो यह समझ में आएगा।
ट्यूरिंग पूर्णता का प्रमाण / ट्यूरिंग पूर्णता की कमी।
के अनुसार इस सॉफ्टवेयर इंजीनियरिंग ढेर विनिमय लेख , एक ट्यूरिंग पूरा कूद के सशर्त पुनरावृत्ति का एक रूप है, और पढ़ने के लिए या स्मृति लिखने के लिए एक तरह से करने के लिए सक्षम होना चाहिए। यह स्टैक के रूप में मेमोरी को पढ़ / लिख सकता है, और यह इस तथ्य के कारण लूप कर सकता है कि 6 वें कोड ब्लॉक को हर बार काउंटर सही संख्या तक पहुंचने पर निष्पादित किया जाता है। यदि अनंत संख्या में पूर्ण संख्याएं हैं, तो यह अनिश्चित काल तक लूप कर सकता है और ट्यूरिंग पूर्ण है, और अन्यथा यह नहीं है।
इनपुट के रूप में 5 बिट्स, 1 या 0 लेने वाले स्व बिटवाइज़ साइक्लिक टैग दुभाषिया:
{p(t(),0)}{(p(t(),0)}{p(t(),0)}{p(t(),0)}{p(t(),0)}{p(0,0)}{c(i(e(k(s(q(),k(0))),0),c(r(q()),i(l(k(0),0),z(s(k(0),1),0)))),i(e(k(s(q(),k(0))),1),c(z(a(k(0),1),0),i(e(k(q()),1),p(k(s(q(),k(0))),1)))))}
इसे इनपुट के रूप में किसी भी नंबर पर ले जाने के लिए विस्तारित किया जा सकता है। यह अनंत इनपुट ले सकता है, लेकिन केवल तभी जब अनंत पूर्ण संख्याएं हों!