?'+)=:!@/*"*'6/{=+'+}/{
इसे ऑनलाइन आज़माएं!
व्याख्या
सामने आया:
? ' + )
= : ! @ /
* " * ' 6 /
{ = + ' + } /
{ . . . . .
. . . . .
. . . .
यह वास्तव में सिर्फ एक रेखीय कार्यक्रम है जिसका /
उपयोग कुछ पुनर्निर्देशन के लिए किया जाता है। रैखिक कोड है:
?'+){=+'+}*"*'6{=:!@
जो n (n + 1) (2n + 1) / 6 की गणना करता है । यह निम्नलिखित मेमोरी किनारों का उपयोग करता है:
जहाँ उत्तर की ओर इशारा करते हुए मेमोरी पॉइंट (MP) एन लेबल वाले किनारे पर शुरू होता है ।
? Read input into edge labelled 'n'.
' Move MP backwards onto edge labelled 'n+1'.
+ Copy 'n' into 'n+1'.
) Increment the value (so that it actually stores the value n+1).
{= Move MP forwards onto edge labelled 'temp' and turn around to face
edges 'n' and 'n+1'.
+ Add 'n' and 'n+1' into edge 'temp', so that it stores the value 2n+1.
' Move MP backwards onto edge labelled '2n+1'.
+ Copy the value 2n+1 into this edge.
} Move MP forwards onto 'temp' again.
* Multiply 'n' and 'n+1' into edge 'temp', so that it stores the value
n(n+1).
" Move MP backwards onto edge labelled 'product'.
* Multiply 'temp' and '2n+1' into edge 'product', so that it stores the
value n(n+1)(2n+1).
' Move MP backwards onto edge labelled '6'.
6 Store an actual 6 there.
{= Move MP forwards onto edge labelled 'result' and turn around, so that
the MP faces edges 'product' and '6'.
: Divide 'product' by '6' into 'result', so that it stores the value
n(n+1)(2n+1)/6, i.e. the actual result.
! Print the result.
@ Terminate the program.
सिद्धांत रूप में, इस कार्यक्रम को साइड-लेंथ 3 में फिट करना संभव हो सकता है, क्योंकि /
गणना के लिए आवश्यक नहीं हैं, :
कार्यक्रम को समाप्त करने के लिए पुन: उपयोग किया जा सकता है, और कुछ '"=+*{
पुन: प्रयोज्य हो सकते हैं, आवश्यक की संख्या लाते हैं। 19 से नीचे कमांड (साइड-लंबाई 3 के लिए अधिकतम)। मुझे संदेह है कि इस तरह के समाधान को हाथ से ढूंढना संभव है, हालांकि, यदि कोई भी मौजूद है।
f(1) == 1 * 1 (1)
औरf(24) == 70 * 70 (4900)
।