Rebmu : 9 (z karą) lub 13 (bez)
Nudnym rozwiązaniem Rebmu jest 9 i niesie karę palindromiczną. Mimo to pokażę to „tylko dlatego”:
rnRVaVRnr
Używając nieuczciwej sztuczki polegającej na zauważaniu dużych liter, są to osobne słowa, a brak wiodącego kapitału oznacza, że nie tworzymy zestawu słów, produkujemy pięć zwykłych słów:
rn rv a vr nr
Który jest skrótem dla równoważnego kodu (również legalnego Rebmu):
return reverse a vr nr
Fakt, że vr i nr są bez znaczenia, nie ma znaczenia, ponieważ mimo że nie są przypisane do niczego, są poprawnymi słowami. Więc ewaluator uruchamia tylko return reverse a
... działa w obie strony. Ale jest to w pewnym sensie analogiczne do nudnego oszustwa: kod nie jest komentowany, ale jest martwy i nie jest wykonywany na jednej ścieżce.
Jeśli szukasz czegoś bardziej ekscytującego, co nie wiąże się z karą, skorzystaj z tego 13-znakowego rozwiązania:
a VR :rv AvrA
Spójrzmy, jak to jest przetwarzane na ścieżkach do przodu i do tyłu, po rozwinięciu. Naprzód:
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!
Do tyłu jako 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!
Z drugiej strony wariant do tyłu zastępuje skrót dla odwrotnej. Ale hej, to nie jest palindrom, a to tylko 13 znaków. :-)
(Uwaga: Zakłada się, że używasz Rebmu w trybie / args, gdzie a jest domyślnym argumentem programu przekazywanym do interpretera w wierszu poleceń i akceptujesz wynik. Jeśli odczyt ze standardowego wejścia jest w rzeczywistości wymagany, rzeczy rośnie np. z 9 do 11 znaków dla prostego rozwiązania:. rnRVrArVRnr
A jeśli musisz wydrukować na standardowe wyjście z programu zamiast akceptować wyjście wyrażenia interpretera, który dodałby również kilka znaków.)
-1%#%1-/1
albo-1%#%(0
?