Rebmu : 9 (penaltı ile) veya 13 (olmadan)
Sıkıcı Rebmu çözümü 9'dur ve palindromik cezayı taşır. Yine de "sadece çünkü" göstereceğim:
rnRVaVRnr
Harflerin büyük harflerini fark etmenin hileli hünerini kullanmak ayrı kelimelerdir ve önde gelen bir sermaye işleminin olmaması, bir set kelimesi yapmadığımız anlamına gelir, beş sıradan kelime üretiriz:
rn rv a vr nr
Eşdeğer kod için bir kısayol olan (ayrıca yasal Rebmu):
return reverse a vr nr
Vr ve nr'nin anlamsız olması önemli değildir, çünkü hiçbir şeye atanmamasına rağmen geçerli kelimelerdir. Yani değerlendirici sadece return reverse a
... her iki şekilde de çalışır. Ancak bu, sıkıcı hile açısından bir anlamlıdır: kod yorumlanmaz, ancak ölüdür ve tek bir yolda yürütülmez.
Cezalandırılmayan daha heyecan verici bir şey için, bu 13 karakterlik çözüme ne dersiniz:
a VR :rv AvrA
Bunun, genişletildiğinde ileri ve geri yollarında nasıl işlendiğine bakalım. yönlendir:
a ; evaluate a, as it is a string it has no side effects
vr: :reverse ; "set" vr to mean what a "get" of reverse means now
a: vr a ; assign a to calling "vr" on a, effectively reversing
; ^-- result of assign is last expression, the answer!
Şu şekilde geriye ArvA vr: RV a
:
a: reverse a ; assign A to its reversal
vr: rv: a ; make the abbreviation vr equal to assignment of a to rv
; ^-- result of assign is last expression, the answer!
Aşağı yönde, geriye doğru varyant, ters kısaltmanın üzerine yazılıyor. Ama hey, bu bir palindrom değil ve sadece 13 karakter. :-)
(Not: Bu, Rebmu'yu / args modunda çalıştırdığınızı varsayar; burada a, komut satırındaki yorumlayıcıya iletilen programın varsayılan argümanıdır ve sonucu kabul edersiniz. Standart girdiden okumak aslında bir gereklilikse, basit çözüm için örneğin 9'dan 11'e kadar karakter büyütün: rnRVrArVRnr
Ve eğer bir kaç karakter ekleyecek olan yorumlayıcının ifade çıktısını kabul etmek yerine program içinden standart çıktıya yazdırmanız gerekiyorsa.)
-1%#%1-/1
ya-1%#%(0
?