Rebmu:9(ペナルティ付き)または13(なし)
退屈なRebmuソリューションは9であり、パリンドロームペナルティを負います。とにかく「理由」で表示します。
rnRVaVRnr
大文字の大文字に気付くというunmushingトリックを使用すると、別の単語になります。先頭に大文字が付いていないということは、セットワードを作成しないことを意味し、通常の5つの単語を生成します。
rn rv a vr nr
これは、同等のコードの短縮形です(法的なRebmuも):
return reverse a vr nr
vrとnrが無意味であるという事実は重要ではありません。何にも割り当てられていないにもかかわらず、それらは有効な単語だからです。そのため、評価者はreturn reverse a
...を実行するだけで、両方の方法で機能します。しかし、これはある意味で退屈なチートに似ています。コードはコメントアウトされていませんが、デッドであり、1つのパスで実行されていません。
ペナルティを受けない、よりエキサイティングなものについては、この13文字のソリューションはどうですか。
a VR :rv AvrA
展開されたときに、フォワードパスとリバースパスでこれがどのように処理されるかを見てみましょう。転送:
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!
後方として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!
マイナス面として、backwardsバリアントは、reverseの略語を上書きしています。しかし、ちょっと、それは回文ではありません、そして、それはわずか13文字です。:-)
(注:これは、Rebmuを/ argsモードで実行していることを前提としています。aは、コマンドラインでインタープリターに渡されるプログラムのデフォルト引数であり、結果を受け入れます。標準入力からの読み取りが実際に必要な場合は、シンプルなソリューションでは、たとえば9文字から11文字に成長しrnRVrArVRnr
ます。また、インタープリターの式出力を受け入れて数文字も追加する代わりに、プログラム内から標準出力に出力する必要がある場合。
-1%#%1-/1
か-1%#%(0
?