Twoje zadanie jest proste. Program czyta wiersz standardowego tekstu i drukuje ten sam tekst w postaci odwróconej znaków. Nie wolno drukować niczego innego.
Na przykład:
input: „Hello!”, output: „! olleH”
Najważniejsze jest to , że twój program musi być w stanie zrobić dokładnie to samo, jeśli kod źródłowy jest odwrócony!
Punktacja: obowiązuje standardowa punktacja golfa, z następującą modyfikacją w celu ograniczenia nudności
//margorp
program//
odpowiedzi w stylu: każde rozwiązanie, które jest palindromem, będzie karane o + 25% punktacji, zaokrąglone w górę. Kara ta nadal obowiązuje, jeśli na przykład wstawisz znaki do programu, które nie mają żadnych użytecznych efektów, tylko po to, by złamać palindrom.
-1%#%1-/1
albo-1%#%(0
?Odpowiedzi:
APL, 5
Powoduje to odwrócenie (
⌽
wzdłuż ostatniej osi) wejścia (⍞
), po którym następuje komentarz (⍝
oznacza komentarz liniowy). Odwrócone, program cofa (⊖
wzdłuż pierwszej osi) dane wejściowe, po czym następuje komentarz. Ponieważ wejście jest zawsze będzie jednowymiarowe, w tym przypadku⌽
i⊖
są funkcjonalnie równoważne. Być może jest nawet bardziej zaskakujące niż rozwiązanie GolfScript, więc oto czystsze rozwiązanie (bez komentarzy), które uzyska 9 punktów .Najpierw chwyta pusty wektor (
⍬
), spłaszcza go (monadycznie,
) i odwraca (⊖
wzdłuż pierwszej osi). To wciąż pozostawia pusty wektor. Następnie łączy się (dyadic,
) z wejściem (⍞
), pozostawiając wejście nietknięte. Następnie spłaszcza (monadycznie,
) i tak już płaskie wejście i odwraca je (⌽
wzdłuż ostatniej osi). Następnie łączy (,
pusty) kolejny pusty wektor (⍬
) z odwróconym wejściem. To nic nie robi i pozostawia odwrócone wejście. Odwrócony, ten program robi to samo, ponownie w oparciu o fakt⌽
i⊖
jest funkcjonalnie równoważny z argumentami jednowymiarowymi.Naprawdę nie możesz powiedzieć, że dodałem bezużyteczne znaki, by przełamać palindrom (dwie różne funkcje odwrotne różnią się przy wprowadzaniu dwóch lub więcej wymiarów; po prostu wykorzystuję fakt, że działają one tak samo z jednym- wejście wymiarowe)
źródło
Powłoka uniksowa - 8 + 25% = 10
Poprzednia odpowiedź
cat|tac
nie działała,tac
odwraca kolejność wierszy, a nie kolejność znaków w wierszu.źródło
Haskell, 53
Technicznie nie jest to palindrom, ale ponieważ kolejność deklaracji funkcji nie ma znaczenia, po odwróceniu masz dokładnie ten sam program.
źródło
main=niam
deklarację na środek, a otrzymasz palindrom.Ruby, 37 lat
Wywrócony:
źródło
Tcl, 78
To nie jest palindrom.
źródło
exit
na#
(parametr # to nie początek komentarza).\#
w następnym wierszu zostanie wykonany#
(nie początek komentarza, ponieważ uciekł), który jest nowyexit
.gs2, 2
(Tak, ten język powstał przed wyzwaniem. Nie, to nie jest żart ani luka. Spacja ASCII (0x20
) jest odwrotna .)EDYCJA: aw, stary, to pytanie jest bardzo stare? Gdybym tylko zobowiązał się wcześniej. : <Pozostawię tę odpowiedź tylko dlatego, że jest zbyt dobra, aby ją pominąć.
źródło
Golfscript, 9 (7 * 1,25 = 8,75)
brudne, brudne, brudne, ale bardzo krótkie.
-1%
oznacza „wybierz każdy element (znak), wstecz” i#
oznacza „komentarz do wiersza”. Reszta to tylko trochę magii I / O GolfScript.To jest najkrótsze „czyste” (bez komentarzy) rozwiązanie, jakie znalazłem ( 14 * 1,25 = 17,5 ):
co oznacza: pchnij pusty ciąg, upuść, odwróć dane wejściowe, sklonuj go dwukrotnie, podziel go sam (zużywając dwie kopie i tworząc pustą tablicę), usuń wszystkie z pustej tablicy, upuść pustą tablicę, pchnij pusty ciąg i (niejawnie) wydrukuj stos.
źródło
Ruby, 44
Tylko komentarz na końcu normalnego programu: P
35 znaków, + 25% = 44
źródło
Tcl, 75,25
Tym razem palindrom.
źródło
]]
i]]
jest znakiem \ x1A.)Python 3, 42
Kredyty
:-)
) stworzona przeze mnieźródło
print(input()[::-1])#)]1-::[)(tupni(tnirp
w Pythonie 3, aby obniżyć wynik do 51,25.;
jest to takie wstawienie, które nie ma żadnego użytecznego efektu.Rebmu : 9 (z karą) lub 13 (bez)
Nudnym rozwiązaniem Rebmu jest 9 i niesie karę palindromiczną. Mimo to pokażę to „tylko dlatego”:
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:
Który jest skrótem dla równoważnego kodu (również legalnego Rebmu):
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:
Spójrzmy, jak to jest przetwarzane na ścieżkach do przodu i do tyłu, po rozwinięciu. Naprzód:
Do tyłu jako
ArvA vr: RV a
: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.)źródło
JavaScript, 62 * 1,25 = 78
Niezbyt kreatywne, ale najlepsze, co mogłem wymyślić. (zakłada, że dane wejściowe są przechowywane w zmiennej
i
)Dostałem to:
63 znaki, bez palindromu
ale wydawało się to zbyt wielkim oszustwem. : PI może wprowadzić wiele bardziej trywialnych zmian (takich jak używanie
i['split']
zamiast zamiasti.split
), ale wszyscy nadal mają ochotę oszukiwać: P.źródło
(p=a=>a&&p()==`(p=${p})(i)`?i:i.split``.reverse().join``)(i)
(60 bajtów) robi to.Pyke, 2 (+ 25%), niekonkurujący
Pyke bierze dane wejściowe niejawnie i dane wyjściowe niejawnie.
_
jest funkcją odwrotną.źródło
Tcl, 99
Jeśli wywoływane jest polecenie, które nie istnieje, wywoływane jest specjalne
unknown
polecenie, które może załadować polecenie. Lub rób inne śmieszne rzeczy.źródło
T-SQL, 86 * 1,25 = 108
Oto nudna palindromiczna pozycja dla SQL Server 2008 (i nowszych), aby pokazać, że jest to możliwe.
@ przechowuje tekst wejściowy, przy czym przykładowy ciąg to „Cześć”. Liczba znaków tego wpisu jest dla ciągu znaków dwóch znaków.
źródło
Beczka , sufit (1 + 0,25) = 2 bajty
To bierze dane wejściowe i odwraca, a dorozumiane dane wyjściowe dosłownie. TIO
źródło
Befunge-98 (PyFunge) , 17 bajtów
Wypróbuj online!
Wypróbuj online! (Wywrócony)
źródło
QBIC , 14 + 25% = 18 bajtów
Wykorzystuje palindromowy kod źródłowy. Użycie dwóch różnych sposobów, aby to zrobić, trwa nieco dłużej (34 bajty):
Wyjaśnienie:
źródło
Pushy , 7 bajtów (5 + 25%)
Wypróbuj online!
Powoduje to karę w wysokości 25%, ponieważ jest to palindrom, ale to najlepsze, co mogłem zrobić. Bez względu na to, w jaki sposób program jest uruchamiany, wykonuje następujące 3 polecenia:
Podstawiając
i
doc
(jasny stosu) lub\
(komentarz) ma ten sam efekt.źródło
05AB1E , 1 + 25% = 2 bajty
Wypróbuj online!
źródło
R , 65 bajtów
EDYCJA: Zrzuciłem 25% kary dzięki trywialnej, ale dla mnie niewidzianej zmianie przez Grimy'ego.
Wypróbuj online!
Przywitaj się z ogromną zdolnością R do obsługi ciągów, nawet jeśli używasz pakietów zaprojektowanych dla ciągów takich jak
stringi
... barfźródło