Chạy Brainfuck được mã hóa chiều dài, 49 byte
Vì không có biến trong Brainfuck, tôi chỉ sử dụng đầu vào và đầu ra tiêu chuẩn để thay thế.
Mã 32+
nên được hiểu là 32 +
s bởi trình thông dịch. Chỉ cần thay thế chúng bằng tay nếu trình thông dịch của bạn không hỗ trợ RLE.
>,[32->+<[16-<[>++<-]>[<+>-]>-<]>[<<.[-]>>-]<,]<.
Phiên bản mở rộng (không phải RLE): (91 byte)
>,[-------------------------------->+<[----------------<[>++<-]>[<+>-]>-<]>[<<.[-]>>-]<,]<.
Mã này giả định rằng EOF được mã hóa thành 0.
Giải trình
Bố cục sau đây được sử dụng:
+---+---+------+
| x | a | flag |
+---+---+------+
Trường hợp x
byte ASCII được in, a
là ký tự từ đầu vào tiêu chuẩn và flag
là 1 nếu a
là khoảng trắng.
>, 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