स्कोर: 686
सभी स्निपेट यह मानते हैं कि नंबर पहले से ही सेल 0 और 1 में लोड किए गए हैं और यह पॉइंटर सेल 0. पर इंगित करता है। यदि मुझे चुनौती के लिए आवश्यक है तो मैं बाद में एक एटोई स्निपेट जोड़ सकता हूं। अभी के लिए, आप इस तरह कोड की कोशिश कर सकते हैं:
+++++++++> number 1
++++< number 2
XOR, 221
परिणाम सेल 10 को लिखा जाता है, पॉइंटर सेल 5 पर समाप्त होता है
>>>>>++++++++[-<<<<<[->>+<<[->>->+<]>>[->>>>+<<]<<<<]>>>[-<<<+>>>]<<[->+<[->->+>
>>>>]>[->>>>>+>>]<<<<<<<<]>>[-<<+>>]>>>[->>+<<]>[>[-<->]<[->+<]]>[[-]<<<[->+>-<<
]>[-<+>]+>+++++++[-<[->>++<<]>>[-<<+>>]<]<[->>>>+<<<<]>>]<<<]
और, 209
परिणाम सेल 10 को लिखा जाता है, पॉइंटर सेल 5 पर समाप्त होता है
>>>>>++++++++[-<<<<<[->>+<<[->>->+<]>>[->>>>+<<]<<<<]>>>[-<<<+>>>]<<[->+<[->->+>
>>>>]>[->>>>>+>>]<<<<<<<<]>>[-<<+>>]>>>[->[->+<]<]>[-]>[-<<<[->+>-<<]>[-<+>]+>++
+++++[-<[->>++<<]>>[-<<+>>]<]<[->>>>+<<<<]>>]<<<]
या, 211
परिणाम सेल 10 को लिखा जाता है, पॉइंटर सेल 5 पर समाप्त होता है
>>>>>++++++++[-<<<<<[->>+<<[->>->+<]>>[->>>>+<<]<<<<]>>>[-<<<+>>>]<<[->+<[->->+>
>>>>]>[->>>>>+>>]<<<<<<<<]>>[-<<+>>]>>>[->>+<<]>[->+<]>[[-]<<<[->+>-<<]>[-<+>]+>
+++++++[-<[->>++<<]>>[-<<+>>]<]<[->>>>+<<<<]>>]<<<]
बाएँ घुमाएँ, ३ 38
परिणाम सेल 1 को लिखा जाता है, सूचक सेल 4 पर समाप्त होता है
[->++>+<[>-]>[->>+<]<<<]>>>>[-<<<+>>>]
नहीं, 7
परिणाम सेल 1 को लिखा जाता है, सूचक सेल 0 पर समाप्त होता है
+[+>+<]
स्पष्टीकरण:
XOR, AND और OR सभी समान रूप से काम करते हैं: प्रत्येक संख्या के लिए n / 2 की गणना करें और n mod को याद रखें। 2 एकल बिट्स के लिए तार्किक XOR / AND / OR की गणना करें। यदि परिणामी बिट सेट है, तो परिणाम में 2 ^ n जोड़ें। उस 8 बार दोहराएं।
यह मेरे द्वारा उपयोग किया गया मेमोरी लेआउट है:
0 1 2 3 4 5 6 7
n1 | n2 | marker | n/2 | 0 | counter | bit1 | bit2 |
8 9 10
temp | temp | result
यहाँ XOR का स्रोत है (संख्याएँ बताती हैं कि उस समय पॉइंटर कहाँ है):
>>>>>
++++ ++++ counter
[
-
<<<<<
divide n1 by two
[ 0
-
>>+ set marker 2
<< 0
[->>->+<] dec marker inc n/2
>> 2 or 4
[->>>>+<<]
<<<<
]
>>>
[-<<<+>>>]
<<
divide n2 by two
[ 1
-
>+ set marker 2
< 1
[->->+>>>>>] dec marker inc n/2
> 2 or 9
[->>>>>+>>]
<<<< <<<<
]
>>[-<<+>>] 3
>>> 6
[->>+<<]>[>[-<->]<[->+<]]> one bit xor 8
[
[-]<<< 5
[->+>-<<] copy counter negative
> 6
[-<+>]
+> 7
++++ +++ cell 6 contains a one and cell 7 how many bits to shift
[-<[->>++<<]>>[-<<+>>]<] 2^n
< 6
[->>>>+<<<<]
>> 8
]
<<<
]
बाएं घूमने के लिए, एक बार फिर सेल 2 में एक मार्कर होता है, यह निर्धारित करने के लिए कि 2 एन शून्य है, क्योंकि आप केवल यह निर्धारित कर सकते हैं कि सेल सीधे गैर-शून्य है या नहीं। यदि ऐसा है, तो एक कैरी बिट सेल 4 को लिखा जाता है और बाद में 2n में जोड़ा जाता है। यह मेमोरी लेआउट है:
0 1 2 3 4
n | 2n | marker | 0 | carry