Utwórz program, który konwertuje ciąg wejściowy na palindrom, zaczynając od ciągu wejściowego. Sam program musi być palindromem.
Na przykład wpisz neverod
:, wydrukuj neveroddoreven
. Powinieneś także obsługiwać dane wejściowe zawierające wiele słów i wiele wierszy.
neverod
->neverodadoreven
(za
pomiędzy)Odpowiedzi:
Dyalog APL,
64Wypróbuj tutaj.
Inne rozwiązania:
Wyjaśnienie
Są po prostu:
Monadyczny
,
i⊢
nic nie robi na łańcuchach. Dyadic,
to konkatenacja. Dyadic⊢
zwraca właściwy operand. I⌽
oczywiście jest to odwrócenie.źródło
piet 19x2 = 38
Akceptuje dane wejściowe, dopóki nie napotka 0x00. Nie kończy się, ale dane wyjściowe będą poprawne.
źródło
APL, 9
Wyjaśnienie:
źródło
CJam, 13 bajtów
Wypróbuj online tutaj
lub..
GolfScript, 9 bajtów
Wypróbuj tutaj
źródło
#
komentarz będzie tam równie dobrze działał.}
był znany jako super komentarz od wieków :)C ++, 162 bajty
C, 117 bajtów
źródło
Haskell, 102 + 22 = 124 bajty
Musi to zostać uruchomione z
Control.Applicative
modułem w zakresie, który można ustawić za pomocą pliku inicjującego ghci.ghci
::m Control.Applicative
(-> +22 bajtów).Bez sztuczki komentowania, tylko 7 funkcji, z których 4 nigdy nie są wywoływane.
Jeśli funkcje (zamiast programów) są dozwolone:
Haskell, 55 + 22 = 77 bajtów
Zastosowanie
f "qwer"
->"qwerrewq"
Edycja: poprzednia wersja była po prostu zła.
źródło
Pyth, 11 bajtów
W Pyth wszystko poprzedzone spacją nie jest drukowane. Więc po prostu dodajemy do siebie znak negatywny ciągu, wstawiamy spację, rozpoczynamy ciąg znaków i odbijamy lewą stronę cytatu „
Wypróbuj online tutaj
źródło
Ruby, 44
Pobiera ciąg multilinii jako dane wejściowe ze standardowego wejścia, wyświetla Rubinową reprezentację tego łańcucha połączoną z jego odwrotnością. Można przyciąć znak, zastępując
||
go,#
aby skomentować martwy kod w drugim wierszu.źródło
s=gets p
! =p steg=s
Jolf, 9 bajtów
Nowszy język, niekonkurujący
Spróbuj tutaj
Objaśnienie: Właśnie zacząłem Jolfa i nie sądzę, że wyjaśniam to poprawnie.
źródło
η
rozwiązanie, bardzo dobrze zrobione. Można zapisać dwa bajty eliminując MU, jak:a+i_i+a
. (Jolf ma również niejawne dane wejściowe do uzupełnienia pozostałych argumentów, ale to nie jest problem, ponieważ tylko jedna informacja jest podana na raz.) Nadal trzymałbym twoje oryginalne rozwiązanie w odpowiedzi.PowerShell, 67
Wypróbuj online
Jak sugeruje @mazzy, kod można skrócić o 12 bajtów, gdy używany jest zakres statyczny. Ogranicza to jednak długość wejściową do 9 KB. Teoretycznie możliwe byłoby 9 MB, ale znacznie spowolniłoby to kod.
źródło
param($s)$s+-join$s[$s.Length..0]#]0..htgneL.s$[s$nioj-+s$)s$(marap
$args|%{$_+-join$_[9Kb..0]}#}]0..bK9[_$nioj-+_${%|sgra$
(55 bajtów)Fuzzy Octo Guacamole, 17 bajtów
FOG jest nowszy niż to wyzwanie, więc nie jest konkurencyjny.
Alt rozwiązanie w 19 bajtach:
Obie pobierają dane wejściowe, duplikują i odwracają oraz dołączają do stosu.
Wyjaśnienie:
źródło
tinyBF , 40
Moją pierwszą myślą było Brainfuck, ale nie można dopasować aparatów ortodontycznych ... na szczęście tinyBF ma prostszą kontrolę przepływu.
Bez komentarzy, pobiera ciąg zakończony znakiem zerowym jako dane wejściowe i zwraca wynik w ciągu zakończonym znakiem zerowym. Możesz to przetestować tutaj , ale ostrzegaj, że się nie zatrzymuje (chociaż Firefox przynajmniej monituje o zatrzymanie niereagującego skryptu).
Skomentowano:
Zauważ, że jeśli zakodujesz go w instrukcjach 2-bitowych, zmniejszy on rozmiar do 10 bajtów (nie byłby to palindrom).
źródło
Python 3, 59 bajtów
Starałem się jak najlepiej znaleźć rozwiązanie wykorzystujące tylko jedną linię, ale nie miałem szczęścia.
Python 3, 79 bajtów
Moja oryginalna próba, w której każda linia jest palindromem. Nie sądzę, aby było to konieczne, ale na wszelki wypadek je uwzględniłem.
źródło
lambda
print((lambda a:a+a[::-1])(input()))#)))(tupni()]1-::[a+a:a adbmal((tnirp
Vitsy, 9 bajtów
Wypróbuj online!
źródło
Befunge , 37 bajtów
Wypróbuj online!
Górna linia popycha i drukuje każdy znak danych wejściowych. Druga linia (przed
@
) wypisuje stos w odwrotnej kolejności, ale wchodzimy po stronie kierunkowej,_
aby zużyć -1 wygenerowane po zakończeniu odczytu danych wejściowych. Druga połowa kodu (w tym te brzydkie końcowe znaki nowej linii) sprawia, że źródło jest palindromem, ale nigdy nie działa.źródło
C # (
3332 + 1) * 2 =6866 bajtówzapisano 2 bajty na użycie .Aggregate ()
Och, stara dobra lambda, możesz ją złapać
a następnie zadzwoń za pomocą
źródło
Perl, 45 bajtów
Całkiem proste,
print
s input ($_=<>
), po którym następujereverse
.reverse
zwraca,$_
ponieważ używamy go w kontekście skalarnym przez prefiks z~~
. Następnie dopasowujemy (m//
używając;
jako separatora), w pustym kontekście, do rewersu skryptu.Jeśli możemy zagwarantować, nie będziemy musieli tworzyć palindromu
esrever,><=_$tnirp
, możemy skrócić kod do 43 bajtów :Stosowanie
Perl, 26 bajtów
Zawiera 25 bajtów kodu + 1 dla
-p
.Nie sądzę, że jest to poprawne, ponieważ wymaga
-p
flagi, której nie sądzę można łatwo połączyć z treścią skryptu, aby stworzyć prawdziwy palindrom. Prawie takie same wywołania jak powyżej, ale opiera się na tym, że-p
dodaje także;
zakulisowe (w nowszych Perlach ...), aby zamknąćm//
.Stosowanie
źródło
Pyth, 15 lat
Zwróć uwagę na miejsce na początku i na końcu.
Dość irytujące zadanie w Pyth.
z_z
wypisuje żądany palindrom, ale wypisujez
(ciąg wejściowy) i_z
odwrotny na dwóch różnych liniach.+
łączy dwa słowa, ale+
na końcu wymaga dwóch nowych instrukcji na końcu (i na początku). Wybieramk
ik
, które są tylko pustymi ciągami. Następnie dużo białych znaków, które hamują drukowanie (i drukowanie pustych miejsc, które generują oczywiście przerwy linii).Ponieważ białe znaki pomijają każde wyjście oprócz
+z_z
, możesz zastąpićk
literał si literą arity 0. Np .1 2+ z_z +2 1
LubT Z+ z_z +Z T
.Wypróbuj online .
źródło
Javascript, 137 bytes
I'm not using the "comment trick" but I am using the escaped quotation mark trick lol.
źródło
";
. Adding a;
as the last char inside the string should fix this.JavaScript, 58 bytes
źródło
PHP, 28+1+28=57 bytes
takes input from command line argument. quote for multi-word, escape newlines for multi-line.
źródło
Python 2, 51 bytes
I'm surprised no-one thought of this! Needs quoted input (
'
or"
). If functions were allowed, I could have done this for 37 bytes instead:źródło
C++14,
152116 bytesAs unnamed lambda, assumes
s
to bestring
Old solution:
Usage:
źródło
05AB1E, 5 bytes
Try it online.
Explanation:
Or alternatively:
Try it online.
Where
R
is reverse, and the«
takes the input implicitly again to concat with.NOTE: If we are allowed to output
neverodoreven
for the inputneverod
, which is still a palindrome, it can be done in 1 byte instead with the palindromize builtin:Try it online.
źródło
x86-64 Assembly (Microsoft x64 calling convention), 89 bytes:
Disassembled:
Note that the code after the
ret
instruction at2C
is unreachable so it doesn't matter that it's nonsenseźródło
Japt, 4 bytes
Try it online!
How it works
Alternative 4 bytes
Try it online!
How it works
źródło
Backhand,
3327 bytesTry it online!
Unlike a lot of the solutions here, this one actually does use the palindromised code!
Explanation:
Altogether, the unexecuted instructions are:
źródło