Довжина коду, Brainfuck, 49 байт
Оскільки в Brainfuck немає змінних, я просто використав стандартний ввід та вихід.
Код 32+
повинен інтерпретувати інтерпретатор як 32 +
s. Просто замініть їх вручну, якщо ваш перекладач не підтримує 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