Yine başka bir Brainfuck ayrıştırma sorunu, ama bu sefer ... farklı.
Çeşitli ilginç problemleri çözmek için Brainfuck programları yapan şirket olan Infinite Monkeys Incorporated'da çalışıyorsunuz (kazara, daha az değil - şirket rastgele programlar yapıyor). Ancak, sadece Brainfuck'ı çalıştıran hızlı Turing makinelerinizin sözdizimi hatalarıyla ilgili küçük ve pahalı bir sorunu olduğu anlaşılıyor - bir tane yapın ve bilgisayar patlar. Muhtemelen bir tasarım hatasıdır, ancak kimse bunun neden olduğunu bulmak için uğraşmamıştı.
Turing makineleri (özellikle hızlı olanlar) pahalı olduğundan (sonuçta, maliyeti olan sonsuz RAM'e sahip olduklarından), kodu çalıştırmadan önce programın sözdizimi hatalarına sahip olmadığından emin olmak daha iyi olacaktır. Şirketiniz çok sayıda kod çalıştıracaktır, bu nedenle manuel doğrulama çalışmaz. Brainfuck kodu için STDIN'i okuyan ve programda herhangi bir sözdizimi hatası varsa çıkış durumu 0'dan (hata) farklı olarak ayarlanmış bir program yazın (örneğin,
]
eşleşme olmadığından sözdizimi hatasıdır[
). Program tamamen iyi durumdaysa çıkış durumu 0'a ayarlanmış olarak çıkın.Programınızın aşağıdakileri içeren hataları doğru bir şekilde fark ettiğinden emin olun:
[]
. Başka bir bilgisayarın patlamasını istemezdin, değil mi? Oh, ve mümkün olduğunca kısa olduğundan emin olun - patronunuz kısa programlar için para ödüyor (çünkü hızlı olduklarını düşünüyor ya da bir şey). Oh, ve Brainfuck'ta kodlamak zorunda değilsiniz (aslında, Brainfuck çıkış kodlarını desteklemediği için yapamazsınız) - kodunuz normal bilgisayarda çalıştırılacaktır.
Gördüğünüz gibi, işiniz Brainfuck programının "geçerli" (eşleştirilmiş []
sembolleri var) olup olmadığını kontrol etmektir . Lütfen Brainfuck programlarının başka karakterleri olabileceğini unutmayın []
, bu yüzden sadece başka komutları olduğu için programı reddetmeyin. En küçük kod kazanır, ancak muhtemelen zaten upvotes hakkında daha fazla önem verirsiniz.
GCD(a,b)
bunun yerine kullanabilirsiniz 0 != a || b
.