Buradaki zorluk, Brainfuck kodunu aşağıdaki kurallara göre küçültmektir :
- Bir olmayan şeyleri kaldırın
+-><[].,. - Ardışık herhangi bir grup
+veya-karakter için+s ve-s miktarı aynıysa bunları kaldırın. - Yukarıdaki gibi yapın, ancak
>ve ile<. +-><Hiçbir şey yapmazlarsa karakter dizilerini kaldırın . Örneğin, kaldırmalısınız+>-<->+<. (Bu, uygulanması en zor ve en zor olan olabilir.)+>-<+>-<Kaldırılmaması gereken herhangi bir yanlış pozitif almadığınızdan emin olun .
Test durumları:
Giriş
++++++[->++++++<]>. prints a $
[-]< resets tape
>,[>,]<[.<] reverses NUL terminated input string
++-->><< does nothing
Çıktı
++++++[->++++++<]>.[-],[>,]<[.<]
Giriş
Should disappear: ++>>+<+++<->-->-<<->-<
Should disappear: +++>-<--->+<
Should stay: +++>-<+>---<
Çıktı
+++>-<+>---<
İstediğiniz gibi giriş ve çıkış kabul edebilirsiniz - stdin / stdout, fonksiyon, vb., Ancak giriş kodlanmış olmayabilir.
Bu kod golf , karakter sayısındaki en kısa kod kazanacak.
+++>-<+>---<mi? Gereksiz işaretçi hareketini önlemek için kısaltılabilir, ancak beklenen çıktı değişmeden kalır. Hem soruya hem de cevaba bakmaya dayanan anlayışım, Doorknob'un gevşek bir şekilde alınan spesifikasyonlarla iyi olduğunu; +-><açıkça belirtildiği gibi herhangi bir op olmayan bitişik diziyi ortadan kaldırmalıyız ve bunun ötesinde, örneğinizde olduğu gibi ekstra küçültme yapmanın mümkün olduğu ++>>++<<--ve ayrıca kodun işlevselliğini değiştirmediği sürece yeniden düzenlemeler yapabiliriz >+<+. +>+<.
+>-<->+<. (. Bu uygulamaya en zor ve en zor biri olabilir) gibi emin herhangi yanlış pozitif alamadım olun +>-<+>-<, hangi kaldırılmaması gerekir. " - bu biraz belirsiz
++>>++<<--çıktı>>++<<ve bu kaplı değildi. Lütfen daha fazla test durumu ekleyin.