Daha önce hiç palindromik kod yazmaya çalıştıysanız, ne kadar parantez içine girme eğiliminde olduğunu bilirsiniz. ()()
Olması iken gerektiği gibi bu tür görünüyor olsa bile, bir palindrom değildir ())(
ve ()(
hem palindromic ve seyir ikisi de çok dilsizdir. Etrafta tam tersi olsaydı uygun olmaz mıydı?
Bir dize, tersi tüm parantezleri ( ), parantezleri ( ) ve parantezleri ( ) ters çevrildiğinde elde edilen dizeye eşitse uygun bir şekilde palindromiktir . Başka hiçbir karakter özel değildir ve saygısız olması gerekir. ( bazen eşleştirilir ancak çoğu zaman dışarıda bırakılmazlar.)()
[]
{}
<>
Göreviniz , kendi dilinizde, bir program (STDIN üzerinde giriş alarak) veya bir argüman uygun palindromik ve farklı, tutarlı bir yanlış olduğunda, (a) tutarlı bir gerçek değer veren bir işlev (tek bir dize argümanı alarak) yazmaktır. aksi takdirde değeri ve (b) kendisi uygun bir şekilde palindromiktir.
Örneğin, aşağıdaki girişler rahatlıkla palindromiktir:
racecar
(a)(bb)(a)
void main(int argc, *char[] argv) {} (vgra []rahc* ,cgra tni)niam diov
Ve aşağıdakiler değil:
non-palindrome
A nut for a jar of tuna?
(old [style] parens) )snerap ]elyts[ dlo(
ingirumimusnocte)etconsumimurigni
Tercüman / derleyici bayrakları hariç herhangi bir dış duruma (belirli bir dosya adı, dizin yapısı, diğer kullanıcı girişi, web erişimi, vb.) Güvenemezsiniz.
Ayrıca, dilinizin yorum yapma olanaklarından yararlanarak yorum yaptığınız veya kullanılmayan bir kod parçasını yaptığınız "yorum numarası" nı kullanamazsınız. Örneğin, aşağıdakilerin hepsine izin verilmiyor, çünkü güvenli bir şekilde çıkarılabilecek veya tahrip edilebilecek işlevsel olmayan parçalar içerirler (rahatlıkla palindromikliği kaybetmek pahasına).
{some code} // {edoc emos}
{some code} NB.BN {edoc emos}
"n\" ;{edoc emos} ;"; {some code}; "\n"
Açıkçası, bu böyle bir durumun tamamını kapsamayabilir, ancak buradaki zorluğun özü palindrominess sağlamak için düzeltilmiş parenler ve parantezleri kullanmak yerine yorum ve düzeltilmemiş ** kod kullanmak değildir. Sana bakıyorum LISP, Brainfuck.
Bu bir kod golfüdür , en kısa kod kazanır, ancak tüm kod uzunlukları kabul edilir.
* Tutarlı doğru ve yanlış değerlerinden göre, sen gibi değerler, bir çift birini döndürebilir anlamına 1
için doğru ve 0
yanlışın veya False
gerçek ve "no"
yalancı kadar uzun bu değerler birbirinden farklıdır ve yok gibi Programın çalıştırmasından çalıştırmaya değiştir. Size karakter kazandıran şeyleri kullanın.
** Beklenmedik şekilde karıştırılmamalıdır : geçerli olan ve garip şeyler yapabilen ancak hiçbir zaman çağrılmayan kod iyidir.
(eslaf)fi
, kullanabilirsiniz if(false)
.
()()
bir palindrom olmadığını anlamak çok uzun sürdü
if(false){some code}
ya kullanılmayan değişkenler gibi şeyler ? İzin var mı?