У Befunge-93 часто може бути вигідним вирівнювання циклу в одну лінію, при цьому розділ циклу коду виконується в обох напрямках.
Наприклад, розгляньте код нижче, який виводить букву a
вісім разів:
"a"9>1-:#v_@
^\,:\<
Це можна згладити, сплюснути в одну лінію, перекресливши послідовність циклу з інструкціями до мосту ( #
):
"a"9>1#\-#,:#:>#\_@
Спробуйте в Інтернеті!
Якщо ви просто дивитесь на символи, що не пробілюються, у вас може скластись враження, що це довше, ніж оригінал. Але після того, як ви врахуєте подачу рядків та додаткові накладки, необхідні у дворядковій версії, ви фактично збережете чотири байти.
У цьому конкретному випадку код ще більше стискається, зазначивши, що цю послідовність :#:
можна просто замінити :
.
"a"9>1#\-#,:>#\_@
Спробуйте в Інтернеті!
Насправді, коли ви повторюєте ту саму інструкцію з будь-якої сторони #
команди, ви можете спростити її до однієї інструкції, тож це завжди слід бути уважним, коли вирівнюєте цикл.
Щоб зрозуміти, як це працює, це може допомогти виписати послідовність циклу двічі, один раз із усіма символами, що слідують за #
видаленими (тобто, що відбувається при виконанні зліва направо) та один раз із символами, що передують #
видаленому (тобто виконуючи праворуч ліворуч ).
"a"9>1#\-#,:>#\_@
>1 - :> _ ; executing left to right
> \ ,: \_ ; executing right to left
Ви чітко бачите, як це відповідає оригінальній дворядковій версії коду.