फ्रैक्ट्रान: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 45: Line 45:
|-
|-
! फ्रैक्ट्रान<br>निर्देश
! फ्रैक्ट्रान<br>निर्देश
! परि स्थिति
! परिस्थिति
! क्रिया
! क्रिया
|-
|-
Line 57: Line 57:
| रुकना
| रुकना
|}
|}
प्रपत्र के प्रारंभिक इनपुट को देखते हुए <math>2^a 3^b</math>, यह प्रोग्राम अनुक्रम की गणना करेगा <math>2^{a-1} 3^{b+1}</math>, <math>2^{a-2} 3^{b+2}</math>, आदि, अंततः, के बाद तक <math>a</math> चरण, 2 का कोई कारक नहीं रहता है और उत्पाद के साथ <math>\frac{3}{2}</math> अब कोई पूर्णांक नहीं देता है; मशीन तब के अंतिम आउटपुट के साथ बंद हो जाती है <math> 3^{a + b} </math>. इसलिए यह दो पूर्णांकों को साथ जोड़ता है।
प्रपत्र के प्रारंभिक इनपुट को देखते हुए <math>2^a 3^b</math>, यह प्रोग्राम अनुक्रम की गणना करेगा <math>2^{a-1} 3^{b+1}</math>, <math>2^{a-2} 3^{b+2}</math>, आदि, अंततः, के बाद तक <math>a</math> चरण, 2 का कोई कारक नहीं रहता है और उत्पाद के साथ <math>\frac{3}{2}</math> अब कोई पूर्णांक नहीं देता है। मशीन तब के अंतिम आउटपुट के साथ बंद हो जाती है <math> 3^{a + b} </math>. इसलिए यह दो पूर्णांकों को साथ जोड़ता है।


=== गुणा ===
=== गुणा ===
Line 65: Line 65:
|-
|-
! वर्तमान स्थिति  
! वर्तमान स्थिति  
! परि स्थिति
! परिस्थिति
! क्रिया
! क्रिया
! आगे की स्थिति  
! आगे की स्थिति  
Line 99: Line 99:
| align="center" | A
| align="center" | A
|}
|}
स्थिति B लूप है जो v3 को v5 में जोड़ता है और v3 को v7 में भी ले जाता है, और स्थिति Aबाहरी नियंत्रण लूप है जो लूप को स्थिति B v2 बार दोहराता है। स्थिति Bमें लूप पूरा होने के बाद स्थिति Aभी v7 ​​से v3 के मान को पुनर्स्थापित करता है।
स्थिति B लूप है जो v3 को v5 में जोड़ता है और v3 को v7 में भी ले जाता है, और स्थिति A बाहरी नियंत्रण लूप है जो लूप को स्थिति B v2 बार दोहराता है। स्थिति B में लूप पूरा होने के बाद स्थिति A भी v7 ​​से v3 के मान को पुनर्स्थापित करता है।


हम स्थिति संकेतकों के रूप में नए चरों का उपयोग करके राज्यों को लागू कर सकते हैं। स्थिति B के लिए स्थिति संकेतक v11 और v13 होंगे। ध्यान दें कि हमें लूप के लिए दो स्थिति नियंत्रण संकेतकों की आवश्यकता होती है; प्राथमिक ध्वज (v11) और द्वितीयक ध्वज (v13)। क्योंकि जब भी परीक्षण किया जाता है तो प्रत्येक संकेतक का उपभोग किया जाता है, हमें वर्तमान स्थिति में जारी रखने के लिए द्वितीयक संकेतक की आवश्यकता होती है; इस द्वितीयक संकेतक को अगले निर्देश में प्राथमिक संकेतक पर वापस बदलना किया जाता है, और लूप जारी रहता है।
हम स्थिति संकेतकों के रूप में नए चरों का उपयोग करके स्थितियों को लागू कर सकते हैं। स्थिति B के लिए स्थिति संकेतक v11 और v13 होंगे। ध्यान दें कि हमें लूप के लिए दो स्थिति नियंत्रण संकेतकों की आवश्यकता होती है। प्राथमिक ध्वज (v11) और द्वितीयक ध्वज (v13)। क्योंकि जब भी परीक्षण किया जाता है, तो प्रत्येक संकेतक का उपभोग किया जाता है। हमें वर्तमान स्थिति में जारी रखने के लिए द्वितीयक संकेतक की आवश्यकता होती है। इस द्वितीयक संकेतक को अगले निर्देश में प्राथमिक संकेतक पर वापस बदलना किया जाता है और लूप जारी रहता है।


गुणन कलन विधि तालिका में फ्रैक्ट्रान स्थिति संकेतक और निर्देश जोड़ना, हमारे पास है।
गुणन कलन विधि तालिका में फ्रैक्ट्रान स्थिति संकेतक और निर्देश जोड़ना, हमारे पास है।
Line 125: Line 125:
| align="center" | <math>\frac{11}{2}</math>
| align="center" | <math>\frac{11}{2}</math>
| v7 = 0 and<br>v2 > 0
| v7 = 0 and<br>v2 > 0
| Subtract 1 from v2
| स्थितियोंv2 में से 1 घटाएं
| align="center" | B
| align="center" | B
|-
|-
Line 153: Line 153:
| align="center" | A
| align="center" | A
|}
|}
जब हम फ्रैक्ट्रान निर्देश लिखते हैं, तो हमें स्थिति A निर्देश को अंतिम रखना चाहिए, क्योंकि स्थिति A में कोई स्थिति संकेतक नहीं है यदि कोई स्थिति संकेतक स्थिर करना नहीं है तो यह व्यतिक्रम स्थिति है। तो फ्रैक्ट्रान प्रोग्राम के रूप में, गुणक बन जाता है।
जब हम फ्रैक्ट्रान निर्देश लिखते हैं, तो हमें स्थिति A निर्देश को अंतिम में रखना चाहिए, क्योंकि स्थिति A में कोई स्थिति संकेतक नहीं है यदि कोई स्थिति संकेतक स्थिर नहीं है तो यह व्यतिक्रम स्थिति है। जिससे फ्रैक्ट्रान प्रोग्राम के रूप में गुणक बन जाता है।


<math display="block">\left( \frac{455}{33}, \frac{11}{13}, \frac{1}{11}, \frac{3}{7}, \frac{11}{2}, \frac{1}{3} \right)</math>
<math display="block">\left( \frac{455}{33}, \frac{11}{13}, \frac{1}{11}, \frac{3}{7}, \frac{11}{2}, \frac{1}{3} \right)</math>
इनपुट के साथ 2<sup></sup>3<sup>b</sup> यह प्रोग्राम आउटपुट 5 उत्पन्न करता है<sup>अब</सुप>. <ref group=note>A similar multiplier algorithm is described at the [http://www.esolangs.org/wiki/Fractran Esolang FRACTRAN page].</ref>
इनपुट के साथ 2<sup>a</sup>3<sup>b</sup> यह प्रोग्राम आउटपुट 5<sup>''ab''</sup> उत्पन्न करता है<sup>. <ref group="note">A similar multiplier algorithm is described at the [http://www.esolangs.org/wiki/Fractran Esolang FRACTRAN page].</ref>


[[File:FRACTRANmult0.gif|thumb|544px|center|उपरोक्त फ्रैक्ट्रान प्रोग्राम, 3 गुना 2 की गणना (जिससे कि इसका इनपुट है <math>2^3\times 3^2=72</math> और इसका आउटपुट होना चाहिए <math>5^6</math> क्योंकि 3 गुना 2 बराबर 6.]]
[[File:FRACTRANmult0.gif|thumb|544px|center|उपरोक्त फ्रैक्ट्रान प्रोग्राम, 3 गुना 2 की गणना (जिससे कि इसका इनपुट है <math>2^3\times 3^2=72</math> और इसका आउटपुट होना चाहिए <math>5^6</math> क्योंकि 3 गुना 2 बराबर 6.]]


=== घटाव और भाग ===
=== घटाव और भाग ===
इसी तरह, हम फ्रैक्ट्रान घटाव बना सकते हैं, और बार-बार घटाव हमें भागफल और शेष कलन विधि बनाने की अनुमति देता है।
इसी प्रकार, हम फ्रैक्ट्रान घटाव बना सकते हैं और बार-बार घटाव हमें भागफल और शेष कलन विधि बनाने की अनुमति देता है।


{| class="wikitable"
{| class="wikitable"
Line 220: Line 220:


<math display="block">\left( \frac{91}{66}, \frac{11}{13}, \frac{1}{33}, \frac{85}{11}, \frac{57}{119}, \frac{17}{19}, \frac{11}{17}, \frac{1}{3} \right)</math>
<math display="block">\left( \frac{91}{66}, \frac{11}{13}, \frac{1}{33}, \frac{85}{11}, \frac{57}{119}, \frac{17}{19}, \frac{11}{17}, \frac{1}{3} \right)</math>
और इनपुट 2<sup>एन</sup>3<sup>d</sup>11 आउटपुट 5 उत्पन्न करता है<sup>क्ष</sup>7<sup>r</sup> जहां n = qd + r और 0 ≤ r < d।
और इनपुट 2<sup>n</sup>3<sup>d</sup>11 आउटपुट 5<sup>''q''</sup>7<sup>''r''</sup> उत्पन्न करता है, जहां n = qd + r और 0 ≤ r < d।


== कॉनवे का प्रमुख कलन विधि ==
== कॉनवे का प्रमुख कलन विधि ==
उपरोक्त कॉनवे का प्रमुख उत्पादन कलन विधि अनिवार्य रूप से दो लूप के भीतर भागफल और शेष कलन विधि है। प्रपत्र का इनपुट दिया गया <math>2^n 7^m</math> जहाँ 0 ≤ m < n, कलन विधि n+1 को प्रत्येक संख्या से n से 1 तक विभाजित करने का प्रयास करता है, जब तक कि यह सबसे बड़ी संख्या k नहीं पाता जो n+1 का भाजक है। यह फिर 2 लौटाता है<sup>एन+1</sup> 7<sup>k-1</sup> और दोहराता है। कलन विधि द्वारा उत्पन्न स्थिति संख्याओं का अनुक्रम केवल 2 की शक्ति उत्पन्न करता है जब के 1 होता है जिससे कि 7 का घातांक 0 हो), जो केवल तब होता है जब 2 का घातांक प्राइम होता है। हैविल (2007) में कॉनवे के कलन विधि की चरण-दर-चरण व्याख्या पाई जा सकती है।
उपरोक्त कॉनवे का प्रमुख उत्पादन कलन विधि अनिवार्य रूप से दो लूप के भीतर भागफल और शेष कलन विधि है। प्रपत्र का इनपुट दिया गया <math>2^n 7^m</math> जहाँ 0 ≤ m < n, कलन विधि n+1 को प्रत्येक संख्या से n से 1 तक विभाजित करने का प्रयास करता है। जब तक कि यह सबसे बड़ी संख्या k नहीं पाता ,जो n+1 का भाजक है। यह फिर 2 लौटाता है 2<sup>''n''+1</sup> 7<sup>''k''-1</sup> दोहराता है। कलन विधि द्वारा उत्पन्न स्थिति संख्याओं का अनुक्रम केवल 2 की घात उत्पन्न करता है जब K 1 होता है जिससे कि 7 का घातांक 0 हो, जो केवल तब होता है जब 2 का घातांक अभाज्य होता है। हैविल (2007) में कॉनवे के कलन विधि की चरण-दर-चरण व्याख्या पाई जा सकती है।


इस प्रोग्राम के लिए अभाज्य संख्या 2, 3, 5, 7... तक पहुँचने के लिए क्रमशः 19, 69, 281, 710,... चरणों की आवश्यकता है {{OEIS|id=A007547}}.
इस प्रोग्राम के लिए अभाज्य संख्या 2, 3, 5, 7... तक पहुँचने के लिए क्रमशः 19, 69, 281, 710,... चरणों की आवश्यकता है।


कॉनवे के प्रोग्राम का प्रकार भी उपस्थित है,<ref>{{harvnb|Guy|1983|p=26}}; {{harvnb|Conway|1996|p=147}}</ref> जो उपरोक्त संस्करण से दो अंशों से भिन्न है।
कॉनवे के प्रोग्राम का प्रकार भी उपस्थित है,<ref>{{harvnb|Guy|1983|p=26}}; {{harvnb|Conway|1996|p=147}}</ref> जो उपरोक्त संस्करण से दो अंशों से भिन्न है।
<math display="block">\left( \frac{17}{91}, \frac{78}{85}, \frac{19}{51}, \frac{23}{38}, \frac{29}{33}, \frac{77}{29}, \frac{95}{23}, \frac{77}{19}, \frac{1}{17}, \frac{11}{13}, \frac{13}{11}, \frac{15}{14}, \frac{15}{2}, \frac{55}{1} \right)</math>
<math display="block">\left( \frac{17}{91}, \frac{78}{85}, \frac{19}{51}, \frac{23}{38}, \frac{29}{33}, \frac{77}{29}, \frac{95}{23}, \frac{77}{19}, \frac{1}{17}, \frac{11}{13}, \frac{13}{11}, \frac{15}{14}, \frac{15}{2}, \frac{55}{1} \right)</math>
यह संस्करण थोड़ा तेज़ है। 2, 3, 5, 7... तक पहुँचने में इसे 19, 69, 280, 707... कदम लगते हैं {{OEIS|id=A007546}}. इस प्रोग्राम का एकल पुनरावृत्ति, प्रधानता के लिए विशेष संख्या N की जाँच करते हुए, निम्नलिखित चरणों की संख्या लेता है।
यह संस्करण थोड़ा तेज़ है। 2, 3, 5, 7... तक पहुँचने में इसे 19, 69, 280, 707... कदम लगते हैं। इस प्रोग्राम का एकल पुनरावृत्ति, प्रधानता के लिए विशेष संख्या N की जाँच करते हुए, निम्नलिखित चरणों की संख्या लेता है।
<math display="block">N - 1 + (6N+2)(N-b) + 2 \sum\limits^{N-1}_{d=b} \left\lfloor \frac{N}{d} \right\rfloor,</math>
<math display="block">N - 1 + (6N+2)(N-b) + 2 \sum\limits^{N-1}_{d=b} \left\lfloor \frac{N}{d} \right\rfloor,</math>
जहाँ पे <math>b < N</math>N और का सबसे बड़ा पूर्णांक विभाजक है <math>\lfloor x \rfloor</math> [[फर्श समारोह|फ्लोर फंक्शन]] है।<ref>{{harvnb|Guy|1983|p=33}}</ref>
जहाँ <math>b < N</math>, N का सबसे बड़ा पूर्णांक विभाजक है <math>\lfloor x \rfloor</math> [[फर्श समारोह|फ्लोर फंक्शन]] है।<ref>{{harvnb|Guy|1983|p=33}}</ref>1999 में, डेविन किल्मिंस्टर ने छोटे दस-निर्देश प्रोग्राम का प्रदर्शन किया।<ref>{{harvnb|Havil|2007|p=176}}</ref>  
1999 में, डेविन किल्मिंस्टर ने छोटे, दस-निर्देश प्रोग्राम का प्रदर्शन किया।<ref>{{harvnb|Havil|2007|p=176}}</ref>  
<math display="block">\left( \frac{7}{3}, \frac{99}{98}, \frac{13}{49}, \frac{39}{35}, \frac{36}{91}, \frac{10}{143}, \frac{49}{13}, \frac{7}{11}, \frac{1}{2}, \frac{91}{1} \right).</math>
<math display="block">\left( \frac{7}{3}, \frac{99}{98}, \frac{13}{49}, \frac{39}{35}, \frac{36}{91}, \frac{10}{143}, \frac{49}{13}, \frac{7}{11}, \frac{1}{2}, \frac{91}{1} \right).</math>
प्रारंभिक इनपुट n = 10 के लिए 10 की बाद की शक्तियों द्वारा क्रमिक अभाज्य उत्पन्न होते हैं।
प्रारंभिक इनपुट n = 10 के लिए 10 की बाद की घातयों द्वारा क्रमिक अभाज्य उत्पन्न होते हैं।




Line 242: Line 241:


<math display="block">\left( \frac{3 \cdot 11}{2^2 \cdot 5} , \frac{5}{11}, \frac{13}{2 \cdot 5}, \frac{1}{5}, \frac{2}{3}, \frac{2 \cdot 5}{7}, \frac{7}{2} \right)</math>
<math display="block">\left( \frac{3 \cdot 11}{2^2 \cdot 5} , \frac{5}{11}, \frac{13}{2 \cdot 5}, \frac{1}{5}, \frac{2}{3}, \frac{2 \cdot 5}{7}, \frac{7}{2} \right)</math>
A के बाइनरी विस्तार के [[हैमिंग वजन]] H (A) की गणना करता है अर्थात Aके बाइनरी विस्तार में 1 S की संख्या।<ref>John Baez, [http://golem.ph.utexas.edu/category/2006/10/puzzle_4.html Puzzle #4], The ''n''-Category Café</ref> दिया गया इनपुट 2<sup>a</sup>, इसका आउटपुट 13 है<sup>एच()</sup>प्रोग्राम का विश्लेषण इस प्रकार किया जा सकता है।
A के द्विचर विस्तार के [[हैमिंग वजन]] H (A) की गणना करता है अर्थात Aके द्विचर विस्तार में 1 की संख्या।<ref>John Baez, [http://golem.ph.utexas.edu/category/2006/10/puzzle_4.html Puzzle #4], The ''n''-Category Café</ref> दिया गया इनपुट 2<sup>a</sup>, इसका आउटपुट 13<sup>H(''a'')</sup> है। प्रोग्राम का विश्लेषण इस प्रकार किया जा सकता है।


{| class="wikitable"
{| class="wikitable"
Line 249: Line 248:
! वर्तमान स्थिति  
! वर्तमान स्थिति  
! स्थिति संकेतक
! स्थिति संकेतक
! परि स्थिति
! परिस्थिति
! क्रिया
! क्रिया
! आगे की स्थिति
! आगे की स्थिति

Revision as of 12:19, 9 February 2023

फ्रैक्ट्रान ट्यूरिंग-पूर्ण गूढ़ प्रोग्रामिंग भाषा है, जिसका आविष्कार गणितज्ञ जॉन हॉर्टन कॉनवे ने किया था। फ्रैक्ट्रान प्रोग्राम सकारात्मक अंश (गणित) का प्रारंभिक पूर्णांक इनपुट N के साथ अनुक्रम है। प्रोग्राम निम्नानुसार पूर्णांक 'N' को अद्यतन करके चलाया जाता है।

  1. पहले अंश F के लिए सूची में जिसके लिए NF पूर्णांक है, N को NF से बदलें।
  2. इस नियम को तब तक करते रहे, जब तक कि सूची में कोई भी अंश N से गुणा करने पर पूर्णांक नहीं बनाता, फिर रुक जाता है।

कोनवे 1987 निम्नलिखित फ्रैक्ट्रान प्रोग्राम देता है, जिसे मुख्य खेल कहा जाता है, जो क्रमिक अभाज्य संख्याएँ पाता है।

N=2 से प्रारंभ होकर, यह फ्रैक्ट्रान प्रोग्राम पूर्णांकों के निम्नलिखित अनुक्रम उत्पन्न करता है।

  • 2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, . . .

2 के बाद, इस क्रम में 2 की निम्नलिखित घातांक हैं।

जो 2 की प्रधान घातांक हैं।

फ्रैक्ट्रान प्रोग्राम को समझना

फ्रैक्ट्रान प्रोग्राम को प्रकार की रजिस्टर मशीन के रूप में देखा जा सकता है, जहाँ रजिस्टरों को तर्क n में प्रमुख घातांक में संग्रहीत किया जाता है।

गोडेल संख्या का उपयोग करते हुए, सकारात्मक पूर्णांक n स्वेच्छया से बड़े सकारात्मक पूर्णांक चर की स्वेच्छा संख्या को सांकेतिक शब्दों में बदल सकता है।[note 1] प्रत्येक चर का मान पूर्णांक के पूर्णांक गुणनखंड में अभाज्य संख्या के घातांक के रूप में सांकेतिक किया गया है। उदाहरण के लिए, पूर्णांक

रजिस्टर स्थिति का प्रतिनिधित्व करता है,चर जिसे हम v2 कहेंगे जिसका मान 2 है और दो अन्य चर (v3 और v5) का मान 1 है। अन्य सभी चर का मान 0 है।

फ्रैक्ट्रान प्रोग्राम सकारात्मक अंशों की क्रमबद्ध सूची है। प्रत्येक अंश निर्देश का प्रतिनिधित्व करता है जो अधिक चर का परीक्षण करता है। जो इसके भाजक के प्रमुख कारकों द्वारा दर्शाया जाता है। उदाहरण के लिए,

परीक्षण v2 और v5। यदि और , फिर यह v2 से 2 और v5 से 1 घटाता है और 1 को v3 और 1 को v7 में जोड़ता है। उदाहरण के लिए,

चूँकि, फ्रैक्ट्रान प्रोग्राम केवल भिन्नों की सूची है। ये परीक्षण-कमी-वृद्धि निर्देश फ्रैक्ट्रान भाषा में केवल अनुमत निर्देश हैं। इसके अतिरिक्त निम्नलिखित प्रतिबंध लागू होते हैं।

  • हर बार निर्देश निष्पादित किया जाता है, परीक्षण किए गए चर भी कम हो जाते हैं।
  • चर को निर्देश में घटाया और बढ़ाया नहीं जा सकता हैं। अन्यथा उस निर्देश का प्रतिनिधित्व करने वाला अंश अपने निम्नतम शब्दों में नहीं होगा। इसलिए प्रत्येक फ्रैक्ट्रान निर्देश चर का उपभोग करता है क्योंकि यह उनका परीक्षण करता है।
  • यदि चर 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 में कोई स्थिति संकेतक नहीं है यदि कोई स्थिति संकेतक स्थिर नहीं है तो यह व्यतिक्रम स्थिति है। जिससे फ्रैक्ट्रान प्रोग्राम के रूप में गुणक बन जाता है।

इनपुट के साथ 2a3b यह प्रोग्राम आउटपुट 5ab उत्पन्न करता है. [note 2]

उपरोक्त फ्रैक्ट्रान प्रोग्राम, 3 गुना 2 की गणना (जिससे कि इसका इनपुट है और इसका आउटपुट होना चाहिए क्योंकि 3 गुना 2 बराबर 6.

घटाव और भाग

इसी प्रकार, हम फ्रैक्ट्रान घटाव बना सकते हैं और बार-बार घटाव हमें भागफल और शेष कलन विधि बनाने की अनुमति देता है।

फ्रैक्ट्रान
निर्देश
वर्तमान स्थिति स्थिति संकेतक परिस्थिति क्रिया आगे की स्थिति
A v11, v13 v2 > 0 and
v3 > 0
v2 में से 1 घटाएं

v3 में से 1 घटाएं

v7 में 1 जोड़ें

A
v2 = 0 and
v3 > 0
v3 में से 1 घटाएं X
v3 = 0 v5 में 1 जोड़ें B
B v17, v19 v7 > 0 v7 में से 1 घटाएं

v3 में 1 जोड़ें

B
v7 = 0 कोई नहीं A
X v3 > 0 v3 में से 1 घटाएं X
v3 = 0 रुकना

फ्रैक्ट्रान प्रोग्राम को लिखते हुए, हमारे पास।

और इनपुट 2n3d11 आउटपुट 5q7r उत्पन्न करता है, जहां n = qd + r और 0 ≤ r < d।

कॉनवे का प्रमुख कलन विधि

उपरोक्त कॉनवे का प्रमुख उत्पादन कलन विधि अनिवार्य रूप से दो लूप के भीतर भागफल और शेष कलन विधि है। प्रपत्र का इनपुट दिया गया जहाँ 0 ≤ m < n, कलन विधि n+1 को प्रत्येक संख्या से n से 1 तक विभाजित करने का प्रयास करता है। जब तक कि यह सबसे बड़ी संख्या k नहीं पाता ,जो n+1 का भाजक है। यह फिर 2 लौटाता है 2n+1 7k-1 दोहराता है। कलन विधि द्वारा उत्पन्न स्थिति संख्याओं का अनुक्रम केवल 2 की घात उत्पन्न करता है जब K 1 होता है जिससे कि 7 का घातांक 0 हो, जो केवल तब होता है जब 2 का घातांक अभाज्य होता है। हैविल (2007) में कॉनवे के कलन विधि की चरण-दर-चरण व्याख्या पाई जा सकती है।

इस प्रोग्राम के लिए अभाज्य संख्या 2, 3, 5, 7... तक पहुँचने के लिए क्रमशः 19, 69, 281, 710,... चरणों की आवश्यकता है।

कॉनवे के प्रोग्राम का प्रकार भी उपस्थित है,[1] जो उपरोक्त संस्करण से दो अंशों से भिन्न है।

यह संस्करण थोड़ा तेज़ है। 2, 3, 5, 7... तक पहुँचने में इसे 19, 69, 280, 707... कदम लगते हैं। इस प्रोग्राम का एकल पुनरावृत्ति, प्रधानता के लिए विशेष संख्या N की जाँच करते हुए, निम्नलिखित चरणों की संख्या लेता है।
जहाँ , N का सबसे बड़ा पूर्णांक विभाजक है फ्लोर फंक्शन है।[2]1999 में, डेविन किल्मिंस्टर ने छोटे दस-निर्देश प्रोग्राम का प्रदर्शन किया।[3]
प्रारंभिक इनपुट n = 10 के लिए 10 की बाद की घातयों द्वारा क्रमिक अभाज्य उत्पन्न होते हैं।


अन्य उदाहरण

निम्नलिखित फ्रैक्ट्रान प्रोग्राम।

A के द्विचर विस्तार के हैमिंग वजन H (A) की गणना करता है अर्थात Aके द्विचर विस्तार में 1 की संख्या।[4] दिया गया इनपुट 2a, इसका आउटपुट 13H(a) है। प्रोग्राम का विश्लेषण इस प्रकार किया जा सकता है।

फ्रैक्ट्रान
निर्देश
वर्तमान स्थिति स्थिति संकेतक परिस्थिति क्रिया आगे की स्थिति
A v5, v11 v2 > 1 v2 में से 2 घटाएं

v3 में 1 जोड़ें

A
v2 = 1 v2 में से 1 घटाएं

v13 में 1 जोड़ें

B
v2 = 0 कोई नहीं B
B कोई नहीं v3 > 0 v3 में से 1 घटाएं

v2 में 1 जोड़ें

B
v3 = 0 and
v7 > 0
v7 में से 1 घटाएं

v2 में 1 जोड़ें

A
v3 = 0 and
v7 = 0 and
v2 > 0
v2 में से 1 घटाएं

v7 में 1 जोड़ें

B
v2 = 0 and
v3 = 0 and
v7 = 0
रुकना


टिप्पणियाँ

यह भी देखें

  • निर्देश स्थिर करना कंप्यूटर

संदर्भ

  1. Guy 1983, p. 26; Conway 1996, p. 147
  2. Guy 1983, p. 33
  3. Havil 2007, p. 176
  4. John Baez, Puzzle #4, The n-Category Café
  • Guy, Richard K. (1983). "Conway's Prime Producing Machine". Mathematics Magazine. Taylor & Francis. 56 (1): 26–33. doi:10.1080/0025570X.1983.11977011.
  • Conway, John H. (1987). "FRACTRAN: A simple universal programming language for arithmetic". Open Problems in Communication and Computation. Springer-Verlag New York, Inc.: 4–26. doi:10.1007/978-1-4612-4808-8_2. ISBN 978-1-4612-9162-6.
  • Conway, John H.; Guy, Richard K. (1996). The Book of Numbers. Springer-Verlag New York, Inc. ISBN 0-387-97993-X.
  • Havil, Julian (2007). Nonplussed!. Princeton University Press. ISBN 978-0-691-12056-0.
  • Roberts, Siobhan (2015). "Criteria of virtue". Genius At Play - The Curious Mind of John Horton Conway. Bloomsbury. pp. 115–119. ISBN 978-1-62040-593-2.


बाहरी कड़ियाँ


Cite error: <ref> tags exist for a group named "note", but no corresponding <references group="note"/> tag was found