Beyin flak yarın bir yaşında! Doğum gününün şerefine, birkaç kullanıcının beyin-flakla ilgili sorular gönderdiği PPCG tarzı bir doğum günü partisi veriyoruz! Kutlamamıza yardım et! :)
Brain-flak, tüm komutların parantez olduğu ve tüm parantezlerin tam olarak eşleşmesi gereken yerde yazdığım ezoterik bir dildir. Kendi tanımımı ödünç almak için :
Bu meydan okuma amacıyla bir "parantez" bu karakterlerin herhangi biridir:
()[]{}<>
.Açma ve kapama parantezleri doğru sıradaysa ve içlerinde karakterleri yoksa, bir parantez bir çift parantez olarak kabul edilir.
() []{}
Veya içindeki her alt öğe de eşleşirse.
[()()()()] {<[]>} (()())
Alt öğeler ayrıca birkaç kat derinlikte yuvalanabilir.
[(){<><>[()]}<>()] <[{((()))}]>
Bir dize "Tam olarak eşleşen" olarak kabul edilir ve yalnızca:
Her karakter bir dirsek
Her bir braket çifti, doğru açma ve kapama braketine ve doğru sıraya sahiptir.
Brain-Flak'ın ilk doğum gününün kutlanmasında bugünün zorluğu, dengesiz bir parantez seti almak ve onu geçerli bir beyin-lafı yapmak için ne tür operasyonların gerekli olduğunu belirlemek.
Örneğin,
((
geçerli beyin kurşun geçirmez kod değil, ama biz eklemek eğer))
kendisine, bu olur(())
, tamamen dengeli ve dolayısıyla geçerli beyin kurşun geçirmez olan. Yani bu giriş yapar appendable .Benzer şekilde,
>}
geçerli değil, ancak bunu geçerli{<
kılmak için hazırlayabiliriz{<>}
. Bu girdiyi ön plana çıkarır .Bazı girdiler biraz daha karmaşıktır. Örneğin,
)][({
yalnızca ekleyerek veya hazırlayarak geçerli olamaz. Ama olabilir prepending tarafından geçerli yapılabilir[(
ve ekleme})]
. Bu nedenle, bu girdi hem prependable ve appendable .Son olarak, bazı girdiler ekleme veya hazırlamanın herhangi bir kombinasyonu ile asla geçerli bir beyin-laf kodu yapılamaz. Örneğin,
(>
hiçbir zaman geçerli olamaz. (Prepending<
oluşturur<(>
ve ek ilavesi)
oluşturur(>)
Bu nedenle, bu giriş ne appendable veya prependable olduğu geçerlidir ikisi de).
Günümüzün mücadelesi için, bir dizi parantez alan ve dizenin olup olmadığını belirleyen bir program veya işlev yazmalısınız.
appendable
prependable
both
neither
Her bir vaka için hangi değerleri temsil ettiğinizi seçebilirsiniz. Örneğin, çıktı almak 1, 2, 3, 4
, veya 'a', 'p', 'b', 'n'
, veya 1, 'foo', 3.1415, -17
veya her neyse iyidir. Her çıktı farklı ve tutarlı olduğu sürece , sorun değil. Sen gerekir ancak, açıkça çıkış karşılık gelir vaka için belirtin.
Hangi formatta en uygunsa bu değeri geri döndürebilirsiniz (örneğin, bir işlevden döndürme, STDOUT'a yazdırma, argümanları değiştirme, bir dosyaya yazma, vb.).
Girişin hiçbir zaman geçerli beyin yongası veya boş olmayacağını varsayabilirsiniz.
Örnekler
Aşağıdaki girdilerin tümü önceden ödenebilir :
))
(((()()())))}
)>}]
()[]{}<>)
Bunların hepsi eklenebilir :
(({}{})
((((
([]()())(
{<<{
Bunların ikisi de :
))((
>()[(()){
>{
Ve bunların hepsi de :
)(}
{(((()()()))>
[}
((((((((((>
((((((((((<>()]
Her zaman olduğu gibi, bu kod golf , bu yüzden standart boşluklar geçerli ve bayt cinsinden en kısa cevap kazanıyor!
Bu zorluk, beyin-flakta özellikle zordur, bu nedenle maksimum kek , beyin-flakta yazılmış herhangi bir cevabı işaret eder. :)
][
olduğu değil sen ekleyebilirsiniz şey de geçerli kılmak gibi, appendable. Benzer şekilde, bu önceden tahmin edilemez. Bu ... 'takılabilir'! Geçerli Brainflak'ın tamamını yapmak için onu bir dizgeye ekleyebilirsiniz.
You can assume that the input will never be valid brain-flak or empty.
maximum brownie points
Bence maksimum browni puanları ve çerezleri teklif etmenin Brain-Flaking'i bu meydan okumayı sadece browni puanlarından daha fazla teşvik edeceğini düşünüyorum, çünkü Brain-Flak'ı bir dilde kullanmanın hiç de önemsiz olmadığını düşünüyorum . : P