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

From Vigyanwiki
(Created page with "{{short description|Turing-complete esoteric programming language invented by John Conway}} FRACTRAN एक ट्यूरिंग-पूर्ण गूढ़ प्...")
 
No edit summary
 
(10 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}}
FRACTRAN एक [[ट्यूरिंग-पूर्ण]] [[गूढ़ प्रोग्रामिंग भाषा]] है जिसका आविष्कार गणितज्ञ [[जॉन हॉर्टन कॉनवे]] ने किया था। एक FRACTRAN कार्यक्रम सकारात्मक [[अंश (गणित)]] का एक प्रारंभिक सकारात्मक पूर्णांक इनपुट ''n'' के साथ एक [[अनुक्रम]] है। कार्यक्रम निम्नानुसार पूर्णांक 'एन' को अद्यतन करके चलाया जाता है:
फ्रैक्ट्रान [[ट्यूरिंग-पूर्ण]] [[गूढ़ प्रोग्रामिंग भाषा]] है, जिसका आविष्कार गणितज्ञ [[जॉन हॉर्टन कॉनवे]] ने किया था। फ्रैक्ट्रान प्रोग्राम सकारात्मक [[अंश (गणित)|भिन्न (गणित)]] का प्रारंभिक पूर्णांक निविष्ट ''N'' के साथ [[अनुक्रम]] है। प्रोग्राम निम्नानुसार पूर्णांक 'N' को अद्यतन करके चलाया जाता है।
# पहले अंश ''f'' के लिए सूची में जिसके लिए ''nf'' एक पूर्णांक है, ''n'' को ''nf'' से बदलें
# पहले भिन्न ''F'' के लिए सूची में जिसके लिए ''NF'' पूर्णांक है, ''N'' को NF से बदलें।
#इस नियम को तब तक दोहराएं जब तक कि सूची में कोई भी अंश ''n'' से गुणा करने पर पूर्णांक नहीं बनाता, फिर रुक जाता है।
#इस नियम को तब तक करते रहे, जब तक कि सूची में कोई भी भिन्न N से गुणा करने पर पूर्णांक नहीं बनाता, फिर रुक जाता है।


{{harvnb|Conway|1987}} निम्नलिखित FRACTRAN प्रोग्राम देता है, जिसे PRIMEGAME कहा जाता है, जो क्रमिक [[अभाज्य संख्या]]एँ पाता है:
{{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 से शुरू होकर, यह FRACTRAN प्रोग्राम पूर्णांकों के निम्नलिखित अनुक्रम उत्पन्न करता है:
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 की प्रधान शक्तियाँ हैं।


== एक FRACTRAN कार्यक्रम को समझना ==
== फ्रैक्ट्रान प्रोग्राम को समझना ==
एक FRACTRAN प्रोग्राम को एक प्रकार की [[रजिस्टर मशीन]] के रूप में देखा जा सकता है जहाँ रजिस्टरों को तर्क 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 स्वेच्छया से बड़े सकारात्मक पूर्णांक चर की स्वेच्छा संख्या को सांकेतिक शब्दों में बदल सकता है।<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 है।


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


<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>
परीक्षण v2 और v5। यदि <math>v_2 \ge 2</math> और <math>v_5 \ge 1</math>, फिर यह v2 से 2 और v5 से 1 घटाता है और 1 को v3 और 1 को v7 में जोड़ता है। उदाहरण के लिए:
परीक्षण v2 और v5। यदि <math>v_2 \ge 2</math> और <math>v_5 \ge 1</math>, फिर यह v2 से 2 और v5 से 1 घटाता है और 1 को v3 और 1 को v7 में जोड़ता है। उदाहरण के लिए,


<math display="block">60 \cdot f_1 = 2^2 \times 3^1 \times 5^1 \cdot \frac{3 \times 7}{2^2 \times 5^1} = 3^2 \times 7^1</math>
<math display="block">60 \cdot f_1 = 2^2 \times 3^1 \times 5^1 \cdot \frac{3 \times 7}{2^2 \times 5^1} = 3^2 \times 7^1</math>
चूँकि FRACTRAN प्रोग्राम केवल भिन्नों की एक सूची है, ये टेस्ट-कमी-वृद्धि निर्देश FRACTRAN भाषा में केवल अनुमत निर्देश हैं। इसके अलावा निम्नलिखित प्रतिबंध लागू होते हैं:
चूँकि, फ्रैक्ट्रान प्रोग्राम केवल भिन्नों की सूची है। ये परीक्षण-कमी-वृद्धि निर्देश फ्रैक्ट्रान भाषा में केवल अनुमत निर्देश हैं। इसके अतिरिक्त निम्नलिखित प्रतिबंध लागू होते हैं।


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


== सरल प्रोग्राम बनाना ==
== सरल प्रोग्राम बनाना ==


=== जोड़ ===
=== जोड़ ===
सबसे सरल FRACTRAN प्रोग्राम एक एकल निर्देश है जैसे
सबसे सरल फ्रैक्ट्रान प्रोग्राम एकल निर्देश है जैसे


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


{| class="wikitable"
{| class="wikitable"
|-
|-
! FRACTRAN<br>instruction
! फ्रैक्ट्रान<br>निर्देश
! Condition
! परिस्थिति
! Action
! क्रिया
|-
|-
| align="center" | <math>\frac{3}{2}</math>
| align="center" | <math>\frac{3}{2}</math>
| v2 > 0
| v2 > 0
| Subtract 1 from v2<br>Add 1 to v3
| v2 में से 1 घटाएं
v3 में 1 जोड़ें
|-
|-
|
|
| v2 = 0
| v2 = 0
| Stop
| रुकना
|}
|}
प्रपत्र के प्रारंभिक इनपुट को देखते हुए <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"
|-
|-
! Current state
! वर्तमान स्थिति
! Condition
! परिस्थिति
! Action
! क्रिया
! Next state
! आगे की स्थिति
|-
|-
| rowspan="4" align="center" | A
| rowspan="4" align="center" | A
| v7 > 0
| v7 > 0
| Subtract 1 from v7<br>Add 1 to v3
| v7 में से 1 घटाएं
v3 में 1 जोड़ें
| align="center" | A
| align="center" | A
|-
|-
| v7 = 0 and<br>v2 > 0
| v7 = 0 and<br>v2 > 0
| Subtract 1 from v2
| v2 में से 1 घटाएं
| align="center" | B
| align="center" | B
|-
|-
| v7 = 0 and<br>v2 = 0 and<br>v3 > 0
| v7 = 0 and<br>v2 = 0 and<br>v3 > 0
| Subtract 1 from v3
| v3 में से 1 घटाएं
| align="center" | A
| align="center" | A
|-
|-
| v7 = 0 and<br>v2 = 0 and<br>v3 = 0
| v7 = 0 and<br>v2 = 0 and<br>v3 = 0
| Stop
| रुकना
|
|
|-
|-
| rowspan="2" align="center" | B
| rowspan="2" align="center" | B
| v3 > 0
| v3 > 0
| Subtract 1 from v3<br>Add 1 to v5<br>Add 1 to v7
| v3 में से 1 घटाएं
v5 में 1 जोड़ें
 
v7 में 1 जोड़ें
| align="center" | B
| align="center" | B
|-
|-
| v3 = 0
| v3 = 0
| None
| कोई नहीं
| align="center" | A
| align="center" | A
|}
|}
स्टेट बी एक लूप है जो v3 को v5 में जोड़ता है और v3 को v7 में भी ले जाता है, और स्टेट ए एक बाहरी कंट्रोल लूप है जो लूप को स्टेट बी v2 बार दोहराता है। स्टेट बी में लूप पूरा होने के बाद स्टेट ए भी v7 ​​से v3 के मान को पुनर्स्थापित करता है।
स्थिति B लूप है जो v3 को v5 में जोड़ता है और v3 को v7 में भी ले जाता है, और स्थिति A बाहरी नियंत्रण लूप है जो लूप को स्थिति B v2 बार दोहराता है। स्थिति B में लूप पूरा होने के बाद स्थिति A भी v7 ​​से v3 के मान को पुनर्स्थापित करता है।


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


गुणन एल्गोरिथम तालिका में FRACTRAN राज्य संकेतक और निर्देश जोड़ना, हमारे पास है:
गुणन कलन विधि तालिका में फ्रैक्ट्रान स्थिति संकेतक और निर्देश जोड़ना, हमारे पास है।


{| class="wikitable"
{| class="wikitable"
|-
|-
! FRACTRAN<br>instruction
! फ्रैक्ट्रान<br>निर्देश
! Current state
! वर्तमान स्थिति
! State<br>indicators
! राज्य
! Condition
संकेतक
! Action
! परिस्थिति
! Next state
! क्रिया
! आगे की स्थिति
|-
|-
| align="center" | <math>\frac{3}{7}</math>
| align="center" | <math>\frac{3}{7}</math>
| rowspan="4" align="center" | A
| rowspan="4" align="center" | A
| rowspan="4" | None
| rowspan="4" | कोई नहीं
| v7 > 0
| v7 > 0
| Subtract 1 from v7<br>Add 1 to v3
| v7 में से 1 घटाएं
v3 में 1 जोड़ें
| align="center" | A
| align="center" | A
|-
|-
| 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
|-
|-
| align="center" | <math>\frac{1}{3}</math>
| align="center" | <math>\frac{1}{3}</math>
| v7 = 0 and<br>v2 = 0 and<br>v3 > 0
| v7 = 0 and<br>v2 = 0 and<br>v3 > 0
| Subtract 1 from v3
| v3 में से 1 घटाएं
| align="center" | A
| align="center" | A
|-
|-
|
|
| v7 = 0 and<br>v2 = 0 and<br>v3 = 0
| v7 = 0 and<br>v2 = 0 and<br>v3 = 0
| Stop
| रुकना
|
|
|-
|-
Line 136: Line 142:
| rowspan="2" | v11, v13
| rowspan="2" | v11, v13
| v3 > 0
| v3 > 0
| Subtract 1 from v3<br>Add 1 to v5<br>Add 1 to v7
| v3 में से 1 घटाएं
v5 में 1 जोड़ें
 
v7 में 1 जोड़ें
| align="center" | B
| align="center" | B
|-
|-
| align="center" | <math>\frac{1}{11}</math>
| align="center" | <math>\frac{1}{11}</math>
| v3 = 0
| v3 = 0
| None
| कोई नहीं
| align="center" | A
| align="center" | A
|}
|}
जब हम FRACTRAN निर्देश लिखते हैं, तो हमें राज्य A निर्देश को अंतिम रखना चाहिए, क्योंकि राज्य A में कोई राज्य संकेतक नहीं है - यदि कोई राज्य संकेतक सेट नहीं है तो यह डिफ़ॉल्ट स्थिति है। तो एक FRACTRAN प्रोग्राम के रूप में, गुणक बन जाता है:
जब हम फ्रैक्ट्रान निर्देश लिखते हैं, तो हमें स्थिति 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|उपरोक्त FRACTRAN कार्यक्रम, 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.]]


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


{| class="wikitable"
{| class="wikitable"
|-
|-
! FRACTRAN<br>instruction
! फ्रैक्ट्रान<br>निर्देश
! Current state
! वर्तमान स्थिति
! State<br>indicators
! स्थिति संकेतक
! Condition
! परिस्थिति
! Action
! क्रिया
! Next state
! आगे की स्थिति
|-
|-
| align="center" | <math>\frac{7 \cdot 13}{2 \cdot 3 \cdot 11}, \frac{11}{13}</math>
| align="center" | <math>\frac{7 \cdot 13}{2 \cdot 3 \cdot 11}, \frac{11}{13}</math>
Line 167: Line 176:
| rowspan="3" | v11, v13
| rowspan="3" | v11, v13
| v2 > 0 and<br>v3 > 0
| v2 > 0 and<br>v3 > 0
| Subtract 1 from v2<br>Subtract 1 from v3<br>Add 1 to v7
| v2 में से 1 घटाएं
v3 में से 1 घटाएं
 
v7 में 1 जोड़ें
| align="center" | A
| align="center" | A
|-
|-
| align="center" | <math>\frac{1}{3 \cdot 11}</math>
| align="center" | <math>\frac{1}{3 \cdot 11}</math>
| v2 = 0 and<br>v3 > 0
| v2 = 0 and<br>v3 > 0
| Subtract 1 from v3
| v3 में से 1 घटाएं
| align="center" | X
| align="center" | X
|-
|-
| align="center" | <math>\frac{5 \cdot 17}{11}</math>
| align="center" | <math>\frac{5 \cdot 17}{11}</math>
| v3 = 0
| v3 = 0
| Add 1 to v5
| v5 में 1 जोड़ें
| align="center" | B
| align="center" | B
|-
|-
Line 184: Line 196:
| rowspan="2" | v17, v19
| rowspan="2" | v17, v19
| v7 > 0
| v7 > 0
| Subtract 1 from v7<br>Add 1 to v3
| v7 में से 1 घटाएं
v3 में 1 जोड़ें
| align="center" | B
| align="center" | B
|-
|-
| align="center" | <math>\frac{11}{17}</math>
| align="center" | <math>\frac{11}{17}</math>
| v7 = 0
| v7 = 0
| None
| कोई नहीं
| align="center" | A
| align="center" | A
|-
|-
Line 196: Line 209:
| rowspan="2" |
| rowspan="2" |
| v3 > 0
| v3 > 0
| Subtract 1 from v3
| v3 में से 1 घटाएं
| align="center" | X
| align="center" | X
|-
|-
|
|
| v3 = 0
| v3 = 0
| Stop
| रुकना
|
|
|}
|}
FRACTRAN प्रोग्राम को लिखते हुए, हमारे पास:
फ्रैक्ट्रान प्रोग्राम को लिखते हुए, हमारे पास।


<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>