फ्रैक्ट्रान
फ्रैक्ट्रान ट्यूरिंग-पूर्ण गूढ़ प्रोग्रामिंग भाषा है, जिसका आविष्कार गणितज्ञ जॉन हॉर्टन कॉनवे ने किया था। फ्रैक्ट्रान प्रोग्राम सकारात्मक भिन्न (गणित) का प्रारंभिक पूर्णांक निविष्ट N के साथ अनुक्रम है। प्रोग्राम निम्नानुसार पूर्णांक 'N' को अद्यतन करके चलाया जाता है।
- पहले भिन्न F के लिए सूची में जिसके लिए NF पूर्णांक है, N को NF से बदलें।
- इस नियम को तब तक करते रहे, जब तक कि सूची में कोई भी भिन्न N से गुणा करने पर पूर्णांक नहीं बनाता, फिर रुक जाता है।
कोनवे 1987 निम्नलिखित फ्रैक्ट्रान प्रोग्राम देता है, जिसे प्राइमगेम कहा जाता है, जो क्रमिक अभाज्य संख्याएँ पाता है।
- 2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, . . .
2 के बाद, इस क्रम में 2 की निम्नलिखित घातांक हैं।
फ्रैक्ट्रान प्रोग्राम को समझना
फ्रैक्ट्रान प्रोग्राम को प्रकार की रजिस्टर मशीन के रूप में देखा जा सकता है, जहाँ रजिस्टरों को तर्क n में प्रमुख घातांक में संग्रहीत किया जाता है।
गोडेल संख्या का उपयोग करते हुए, सकारात्मक पूर्णांक n स्वेच्छया से बड़े सकारात्मक पूर्णांक चर की स्वेच्छा संख्या को सांकेतिक शब्दों में बदल सकता है।[note 1] प्रत्येक चर का मान पूर्णांक के पूर्णांक गुणनखंड में अभाज्य संख्या के घातांक के रूप में सांकेतिक किया गया है। उदाहरण के लिए, पूर्णांक
फ्रैक्ट्रान प्रोग्राम सकारात्मक भिन्नों की क्रमबद्ध सूची है। प्रत्येक भिन्न निर्देश का प्रतिनिधित्व करता है जो अधिक चर का परीक्षण करता है। जो इसके भाजक के प्रमुख कारकों द्वारा दर्शाया जाता है। उदाहरण के लिए,
- हर बार निर्देश निष्पादित किया जाता है, परीक्षण किए गए चर भी कम हो जाते हैं।
- चर को निर्देश में घटाया और बढ़ाया नहीं जा सकता हैं। अन्यथा उस निर्देश का प्रतिनिधित्व करने वाला भिन्न अपने निम्नतम शब्दों में नहीं होगा। इसलिए प्रत्येक फ्रैक्ट्रान निर्देश चर का उपभोग करता है क्योंकि यह उनका परीक्षण करता है।
- यदि चर 0 है, तो फ्रैक्ट्रान निर्देश के लिए सीधे परीक्षण करना संभव नहीं है। चूंकि, अप्रत्यक्ष परीक्षण को व्यतिक्रम निर्देश बनाकर लागू किया जा सकता है जो किसी विशेष चर का परीक्षण करने वाले अन्य निर्देशों के बाद रखा जाता है।
सरल प्रोग्राम बनाना
जोड़
सबसे सरल फ्रैक्ट्रान प्रोग्राम एकल निर्देश है जैसे
| फ्रैक्ट्रान निर्देश |
परिस्थिति | क्रिया |
|---|---|---|
| v2 > 0 | v2 में से 1 घटाएं
v3 में 1 जोड़ें | |
| v2 = 0 | रुकना |
प्रपत्र के प्रारंभिक निविष्ट को देखते हुए , यह प्रोग्राम अनुक्रम की गणना करेगा , , आदि, अंततः, के बाद तक चरण, 2 का कोई कारक नहीं रहता है और उत्पाद के साथ अब कोई पूर्णांक नहीं देता है। मशीन तब के अंतिम आउटपुट के साथ बंद हो जाती है . इसलिए यह दो पूर्णांकों को साथ जोड़ता है।
गुणा
हम योजक के माध्यम से लूप करके गुणक बना सकते हैं। ऐसा करने के लिए हमें अपने कलन विधि में स्थिति (कंप्यूटर विज्ञान) प्रस्तुत करने की आवश्यकता है। यह कलन विधि संख्या लेगा और उत्पादन है।
| वर्तमान स्थिति | परिस्थिति | क्रिया | आगे की स्थिति |
|---|---|---|---|
| A | v7 > 0 | v7 में से 1 घटाएं
v3 में 1 जोड़ें |
A |
| v7 = 0 and v2 > 0 |
v2 में से 1 घटाएं | B | |
| v7 = 0 and v2 = 0 and v3 > 0 |
v3 में से 1 घटाएं | A | |
| v7 = 0 and v2 = 0 and v3 = 0 |
रुकना | ||
| B | v3 > 0 | v3 में से 1 घटाएं
v5 में 1 जोड़ें v7 में 1 जोड़ें |
B |
| v3 = 0 | कोई नहीं | A |
स्थिति B लूप है जो v3 को v5 में जोड़ता है और v3 को v7 में भी ले जाता है, और स्थिति A बाहरी नियंत्रण लूप है जो लूप को स्थिति B v2 बार दोहराता है। स्थिति B में लूप पूरा होने के बाद स्थिति A भी v7 से v3 के मान को पुनर्स्थापित करता है।
हम स्थिति संकेतकों के रूप में नए चरों का उपयोग करके स्थितियों को लागू कर सकते हैं। स्थिति B के लिए स्थिति संकेतक v11 और v13 होंगे। ध्यान दें कि हमें लूप के लिए दो स्थिति नियंत्रण संकेतकों की आवश्यकता होती है। प्राथमिक ध्वज (v11) और द्वितीयक ध्वज (v13)। क्योंकि जब भी परीक्षण किया जाता है, तो प्रत्येक संकेतक का उपभोग किया जाता है। हमें वर्तमान स्थिति में जारी रखने के लिए द्वितीयक संकेतक की आवश्यकता होती है। इस द्वितीयक संकेतक को अगले निर्देश में प्राथमिक संकेतक पर वापस बदलना किया जाता है और लूप जारी रहता है।
गुणन कलन विधि तालिका में फ्रैक्ट्रान स्थिति संकेतक और निर्देश जोड़ना, हमारे पास है।
| फ्रैक्ट्रान निर्देश |
वर्तमान स्थिति | राज्य
संकेतक |
परिस्थिति | क्रिया | आगे की स्थिति |
|---|---|---|---|---|---|
| A | कोई नहीं | v7 > 0 | v7 में से 1 घटाएं
v3 में 1 जोड़ें |
A | |
| v7 = 0 and v2 > 0 |
स्थितियोंv2 में से 1 घटाएं | B | |||
| v7 = 0 and v2 = 0 and v3 > 0 |
v3 में से 1 घटाएं | A | |||
| v7 = 0 and v2 = 0 and v3 = 0 |
रुकना | ||||
| B | v11, v13 | v3 > 0 | v3 में से 1 घटाएं
v5 में 1 जोड़ें v7 में 1 जोड़ें |
B | |
| v3 = 0 | कोई नहीं | A |
जब हम फ्रैक्ट्रान निर्देश लिखते हैं, तो हमें स्थिति A निर्देश को अंतिम में रखना चाहिए, क्योंकि स्थिति A में कोई स्थिति संकेतक नहीं है यदि कोई स्थिति संकेतक स्थिर नहीं है तो यह व्यतिक्रम स्थिति है। जिससे फ्रैक्ट्रान प्रोग्राम के रूप में गुणक बन जाता है।