रन लंबाई एनकोडेड ब्रेनफक, 49 बाइट्स
चूंकि ब्रेनफक में कोई चर नहीं हैं, मैंने सिर्फ मानक इनपुट और आउटपुट का उपयोग किया।
32+
दुभाषिया +
द्वारा कोड को 32 एस के रूप में व्याख्या की जानी चाहिए । यदि आपका दुभाषिया RLE का समर्थन नहीं करता है तो बस उन्हें मैन्युअल रूप से प्रतिस्थापित करें।
>,[32->+<[16-<[>++<-]>[<+>-]>-<]>[<<.[-]>>-]<,]<.
विस्तारित (गैर-RLE) संस्करण: (91 बाइट्स)
>,[-------------------------------->+<[----------------<[>++<-]>[<+>-]>-<]>[<<.[-]>>-]<,]<.
कोड मानता है कि EOF 0 के रूप में एन्कोडेड है।
व्याख्या
निम्नलिखित लेआउट का उपयोग किया जाता है:
+---+---+------+
| x | a | flag |
+---+---+------+
x
ASCII बाइट को कहां मुद्रित किया जाता है, a
मानक इनपुट से एक वर्ण है और एक स्थान है flag
तो 1 a
है।
>, Read a character a into the second cell
[ While not EOF:
32- Decrease a by 32 (a -= ' ')
>+< Set the flag to 1
[ If a was not a space:
16- Decrease by 16 more ('0' == 32+16)
<[>++<-] a += 2*x
>[<+>-] Move it back (x = a)
>-< Reset the flag, it was not a space.
]>
[ If a was a space (flag == 1):
<<.[-] Print and reset x
>>- Reset the flag
]
<, Read the next caracter a
]
<. Print the last character x