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

From Vigyanwiki
No edit summary
No edit summary
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{short description|Turing-complete esoteric programming language invented by John Conway}}
{{short description|Turing-complete esoteric programming language invented by John Conway}}
फ्रैक्ट्रान [[ट्यूरिंग-पूर्ण]] [[गूढ़ प्रोग्रामिंग भाषा]] है, जिसका आविष्कार गणितज्ञ [[जॉन हॉर्टन कॉनवे]] ने किया था। फ्रैक्ट्रान कार्यक्रम सकारात्मक [[अंश (गणित)]] का प्रारंभिक सकारात्मक पूर्णांक इनपुट ''N'' के साथ [[अनुक्रम]] है। कार्यक्रम निम्नानुसार पूर्णांक 'N' को अद्यतन करके चलाया जाता है।
फ्रैक्ट्रान [[ट्यूरिंग-पूर्ण]] [[गूढ़ प्रोग्रामिंग भाषा]] है, जिसका आविष्कार गणितज्ञ [[जॉन हॉर्टन कॉनवे]] ने किया था। फ्रैक्ट्रान प्रोग्राम सकारात्मक [[अंश (गणित)|भिन्न (गणित)]] का प्रारंभिक पूर्णांक निविष्ट ''N'' के साथ [[अनुक्रम]] है। प्रोग्राम निम्नानुसार पूर्णांक 'N' को अद्यतन करके चलाया जाता है।
# पहले अंश ''F'' के लिए सूची में जिसके लिए ''NF'' पूर्णांक है, ''N'' को NF से बदलें।
# पहले भिन्न ''F'' के लिए सूची में जिसके लिए ''NF'' पूर्णांक है, ''N'' को NF से बदलें।
#इस नियम को तब तक करते रहे, जब तक कि सूची में कोई भी अंश N से गुणा करने पर पूर्णांक नहीं बनाता, फिर रुक जाता है।
#इस नियम को तब तक करते रहे, जब तक कि सूची में कोई भी भिन्न N से गुणा करने पर पूर्णांक नहीं बनाता, फिर रुक जाता है।


{{harvnb|कोनवे|1987}} निम्नलिखित फ्रैक्ट्रान प्रोग्राम देता है, जिसे '''<small>मुख्य खेल</small>''' कहा जाता है, जो क्रमिक [[अभाज्य संख्या]]एँ पाता है।
{{harvnb|कोनवे|1987}} निम्नलिखित फ्रैक्ट्रान प्रोग्राम देता है, जिसे प्राइमगेम कहा जाता है, जो क्रमिक [[अभाज्य संख्या|अभाज्य संख्याएँ]] पाता है।


<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}{2}, \frac{1}{7}, \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}{2}, \frac{1}{7}, \frac{55}{1} \right)</math>
N=2 से प्रारंभ होकर, यह फ्रैक्ट्रान प्रोग्राम पूर्णांकों के निम्नलिखित अनुक्रम उत्पन्न करता है।
N=2 से प्रारंभ होकर, यह फ्रैक्ट्रान प्रोग्राम पूर्णांकों के निम्नलिखित अनुक्रम उत्पन्न करता है।


* 2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, ... {{OEIS|id=A007542}}
* 2, 15, 825, 725, 1925, 2275, 425, 390, 330, 290, 770, . . .
2 के बाद, इस क्रम में 2 की निम्नलिखित शक्तियाँ हैं।
2 के बाद, इस क्रम में 2 की निम्नलिखित घातांक हैं।


<math display="block">2^2=4,\, 2^3=8,\, 2^5=32,\, 2^7=128,\, 2^{11}=2048,\, 2^{13}=8192,\, 2^{17}=131072,\, 2^{19}=524288,\,  \dots</math> {{OEIS|id=A034785}}
<math display="block">2^2=4,\, 2^3=8,\, 2^5=32,\, 2^7=128,\, 2^{11}=2048,\, 2^{13}=8192,\, 2^{17}=131072,\, 2^{19}=524288,\,  \dots</math>जो 2 की प्रधान घातांक हैं।
जो 2 की प्रधान शक्तियाँ हैं।


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


गोडेल संख्या का उपयोग करते हुए, सकारात्मक पूर्णांक n मनमाने ढंग से बड़े सकारात्मक पूर्णांक चर की मनमानी संख्या को सांकेतिक शब्दों में बदल सकता है।<ref group=note>[[Gödel numbering]] cannot be directly used for negative integers, floating point numbers or text strings, although conventions could be adopted to represent these data types indirectly. Proposed extensions to FRACTRAN include [http://www.esolangs.org/wiki/Fractran_plus_plus FRACTRAN++] and [http://home.nvg.org/~oerjan/esoteric/bag/ Bag].</ref> प्रत्येक चर का मान पूर्णांक के पूर्णांक गुणनखंड में अभाज्य संख्या के घातांक के रूप मेंN्कोड किया गया है। उदाहरण के लिए, पूर्णांक
गोडेल संख्या का उपयोग करते हुए, सकारात्मक पूर्णांक n स्वेच्छया से बड़े सकारात्मक पूर्णांक चर की स्वेच्छा संख्या को सांकेतिक शब्दों में बदल सकता है।<ref group=note>[[Gödel numbering]] cannot be directly used for negative integers, floating point numbers or text strings, although conventions could be adopted to represent these data types indirectly. Proposed extensions to FRACTRAN include [http://www.esolangs.org/wiki/Fractran_plus_plus FRACTRAN++] and [http://home.nvg.org/~oerjan/esoteric/bag/ Bag].</ref> प्रत्येक चर का मान पूर्णांक के पूर्णांक गुणनखंड में अभाज्य संख्या के घातांक के रूप में सांकेतिक किया गया है। उदाहरण के लिए, पूर्णांक


<math display="block">60 = 2^2 \times 3^1 \times 5^1</math>
<math display="block">60 = 2^2 \times 3^1 \times 5^1</math>
रजिस्टर स्थिति का प्रतिनिधित्व करता है जिसमें चर जिसे हम v2 कहेंगे का मान 2 है और दो अन्य चर (v3 और v5) का मान 1 है। अन्य सभी चर का मान 0 है।
रजिस्टर स्थिति का प्रतिनिधित्व करता है,चर जिसे हम v2 कहेंगे जिसका मान 2 है और दो अन्य चर (v3 और v5) का मान 1 है। अन्य सभी चर का मान 0 है।


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


<math display="block">f_1 = \frac{21}{20} = \frac{3 \times 7}{2^2 \times 5^1}</math>
<math display="block">f_1 = \frac{21}{20} = \frac{3 \times 7}{2^2 \times 5^1}</math>
Line 32: Line 31:


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


Line 41: Line 40:


<math display="block">\left( \frac{3}{2} \right)</math>
<math display="block">\left( \frac{3}{2} \right)</math>
इस कार्यक्रम को निम्नानुसार बहुत सरल कलन विधि के रूप में दर्शाया जा सकता है।
इस प्रोग्राम को निम्नानुसार बहुत सरल कलन विधि के रूप में दर्शाया जा सकता है।


{| class="wikitable"
{| class="wikitable"
|-
|-
! फ्रैक्ट्रान<br>निर्देश
! फ्रैक्ट्रान<br>निर्देश
! परि स्थिति
! परिस्थिति
! क्रिया
! क्रिया
|-
|-
Line 58: 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>. इसलिए यह दो पूर्णांकों को साथ जोड़ता है।


=== गुणा ===
=== गुणा ===
हम योजक के माध्यम से लूप करके गुणक बना सकते हैं। ऐसा करने के लिए हमें अपने कलन विधि में स्थिति [[राज्य (कंप्यूटर विज्ञान)|(कंप्यूटर विज्ञान)]] प्रस्तुत करने की आवश्यकता है। यह कलन विधि संख्या लेगा <math>2^a 3^b</math> और उत्पादन <math>5^{ab}</math>
हम योजक के माध्यम से लूप करके गुणक बना सकते हैं। ऐसा करने के लिए हमें अपने कलन विधि में स्थिति [[राज्य (कंप्यूटर विज्ञान)|(कंप्यूटर विज्ञान)]] प्रस्तुत करने की आवश्यकता है। यह कलन विधि संख्या लेगा <math>2^a 3^b</math> और उत्पादन <math>5^{ab}</math> है।


{| class="wikitable"
{| class="wikitable"
|-
|-
! वर्तमान स्थिति  
! वर्तमान स्थिति  
! परि स्थिति
! परिस्थिति
! क्रिया
! क्रिया
! आगे की स्थिति  
! आगे की स्थिति  
Line 100: 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 126: 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 154: 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 221: 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 की बाद की घातयों द्वारा क्रमिक अभाज्य उत्पन्न होते हैं।






== अन्य उदाहरण ==
== अन्य उदाहरण ==
निम्नलिखित फ्रैक्ट्रान कार्यक्रम।
निम्नलिखित फ्रैक्ट्रान प्रोग्राम।


<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 एस की संख्या।<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 247:
! फ्रैक्ट्रान<br>निर्देश
! फ्रैक्ट्रान<br>निर्देश
! वर्तमान स्थिति  
! वर्तमान स्थिति  
! State<br>indicators
! स्थिति संकेतक
! परि स्थिति
! परिस्थिति
! क्रिया
! क्रिया
! आगे की स्थिति
! आगे की स्थिति
Line 258: Line 256:
| rowspan="3" | v5, v11
| rowspan="3" | v5, v11
| v2 > 1
| v2 > 1
| Subtract 2 from v2<br>Add 1 to v3
| v2 में से 2 घटाएं
v3 में 1 जोड़ें
| align="center" | A
| align="center" | A
|-
|-
| align="center" | <math>\frac{13}{2 \cdot 5}</math>
| align="center" | <math>\frac{13}{2 \cdot 5}</math>
| v2 = 1
| v2 = 1
| Subtract 1 from v2<br>Add 1 to v13
| v2 में से 1 घटाएं
v13 में 1 जोड़ें
| align="center" | B
| align="center" | B
|-
|-
Line 275: Line 275:
| rowspan="4" | कोई नहीं
| rowspan="4" | कोई नहीं
| v3 > 0
| v3 > 0
| Subtract 1 from v3<br>Add 1 to v2
| v3 में से 1 घटाएं
v2 में 1 जोड़ें
| align="center" | B
| align="center" | B
|-
|-
| align="center" | <math>\frac{2 \cdot 5}{7}</math>
| align="center" | <math>\frac{2 \cdot 5}{7}</math>
| v3 = 0 and<br>v7 > 0
| v3 = 0 and<br>v7 > 0
| Subtract 1 from v7<br>Add 1 to v2
| v7 में से 1 घटाएं
v2 में 1 जोड़ें
| align="center" | A
| align="center" | A
|-
|-
| align="center" | <math>\frac{7}{2}</math>
| align="center" | <math>\frac{7}{2}</math>
| v3 = 0 and<br>v7 = 0 and<br>v2 > 0
| v3 = 0 and<br>v7 = 0 and<br>v2 > 0
| Subtract 1 from v2<br>add 1 to v7
| v2 में से 1 घटाएं
v7 में 1 जोड़ें
| align="center" | B
| align="center" | B
|-
|-
Line 296: Line 299:


== टिप्पणियाँ ==
== टिप्पणियाँ ==
{{reflist|group=note|}}




Line 355: Line 357:


== बाहरी कड़ियाँ ==
== बाहरी कड़ियाँ ==
{{commons category|Fractran (programming language)}}
*[https://www.uctv.tv/shows/Fractran-A-Ridiculous-Logical-Language-with-John-Conway-23320 Lecture from John Conway। "फ्रैक्ट्रान। A Ridiculous Logical Language"]
*[https://www.uctv.tv/shows/Fractran-A-Ridiculous-Logical-Language-with-John-Conway-23320 Lecture from John Conway। "फ्रैक्ट्रान। A Ridiculous Logical Language"]
*[http://scienceblogs.com/goodmath/2006/10/27/prime-number-pathology-fractra/ "Prime Number Pathology। फ्रैक्ट्रान"]
*[http://scienceblogs.com/goodmath/2006/10/27/prime-number-pathology-fractra/ "Prime Number Pathology। फ्रैक्ट्रान"]
Line 365: Line 366:
*[http://malisper.me/2016/06/11/building-fizzbuzz-fractran-bottom/ "Building Fizzbuzz in फ्रैक्ट्रान from the Bottom Up"]
*[http://malisper.me/2016/06/11/building-fizzbuzz-fractran-bottom/ "Building Fizzbuzz in फ्रैक्ट्रान from the Bottom Up"]
*[https://web.archive.org/web/20180104084828/http://clomont.com/a-universal-fractran-interpreter-in-fractran/ Chris Lomont, "A Universal फ्रैक्ट्रान Interpreter in फ्रैक्ट्रान"]
*[https://web.archive.org/web/20180104084828/http://clomont.com/a-universal-fractran-interpreter-in-fractran/ Chris Lomont, "A Universal फ्रैक्ट्रान Interpreter in फ्रैक्ट्रान"]
[[Category: गणना के मॉडल]] [[Category: गूढ़ प्रोग्रामिंग भाषाएँ]] [[Category: मनोरंजक गणित]]
 
 
 
 
 




<references group="note" responsive="0" />


[[Category: Machine Translated Page]]
[[Category:Created On 03/02/2023]]
[[Category:Created On 03/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:गणना के मॉडल]]
[[Category:गूढ़ प्रोग्रामिंग भाषाएँ]]
[[Category:मनोरंजक गणित]]

Latest revision as of 20:40, 9 February 2023

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

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

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