Befunge-93'de, bir döngü tek bir satıra düzleştirilirken, kodun döngü bölümü her iki yönde de yürütülür.
Örneğin, harfi a
sekiz kez çıkaran aşağıdaki kodu göz önünde bulundurun :
"a"9>1-:#v_@
^\,:\<
Bu, döngü sırasını köprü talimatları ( #
) ile serpiştirerek tek bir satıra düzleştirilebilir :
"a"9>1#\-#,:#:>#\_@
Çevrimiçi deneyin!
Yalnızca boşluk olmayan karakterlere bakıyorsanız, bunun orijinalden daha uzun olduğu izlenimini edinebilirsiniz. Ancak, satır beslemesini ve iki satır sürümünde gerekli ek dolguyu hesaba kattığınızda, aslında dört bayt tasarruf edersiniz.
Bu özel durumda, kod, bu sekansın :#:
basitçe değiştirilebileceğini belirterek daha da sıkıştırılır :
.
"a"9>1#\-#,:>#\_@
Çevrimiçi deneyin!
Aslında, bir #
komutun her iki tarafında da aynı komutu tekrar ettiğinizde , bunu tek bir komutla basitleştirebilirsiniz, bu nedenle bu, bir döngüyü düzleştirirken her zaman dikkat etmeniz gereken bir şeydir.
Bunun nasıl çalıştığını anlamak için, döngü dizisini iki kez, bir kez #
kaldırılan tüm karakterlerle (yani soldan sağa yürütürken ne olur) ve bir kez de #
kaldırılandan önceki karakterlerle (yani sağdan sola yürütülürken) yazmak yardımcı olabilir. ).
"a"9>1#\-#,:>#\_@
>1 - :> _ ; executing left to right
> \ ,: \_ ; executing right to left
Şimdi bunun kodun orijinal iki satır sürümüyle nasıl eşleştiğini açıkça görebilirsiniz.