Palindrom to ciąg znaków, który jest taki sam w przód iw tył, takie jak „wyścigowy”.
Napisz program w jakimś języku L, który pobiera dowolny program P1 w języku L jako dane wejściowe i generuje program palindromiczny P2 w języku L, który robi to samo co P1.
Nie musisz się martwić obsługą programów wejściowych z błędami składniowymi.
To jest kod golfowy , więc wygrywa rozwiązanie z najmniejszą liczbą bajtów.
code-golf
palindrome
Peter Olson
źródło
źródło
x=input();print(x+'#'+x[::-1])
. Podzbiór jest zbiorem wszystkich programów, które nie zawierają znaków nowej linii.Odpowiedzi:
Perl,
5554 bajtówOdczytuje źródło programu ze standardowego wejścia i zapisuje na standardowe wyjście.
Wynik działania na sobie:
źródło
__DATA__
odczytywaniem .. np.print while(<DATA>);\n__DATA__
zmieni zachowanie__DATA__
. :)Java, 225 bajtów
Wyjście samo w sobie (po uprzednim upiększeniu):
źródło
Python 2, 68 bajtów
Nie działa, jeśli jest uruchamiany z IDLE, ponieważ musisz wygenerować znak EOF, aby program nie czekał na dane wejściowe.
Dane wyjściowe po uruchomieniu na sobie:
Podziękowania dla Grega Hewgilla za pomoc w rozwiązywaniu problemów i grze w golfa.
źródło
GolfScript,
109 bajtówZupełnie podobne do rozwiązania minitech , ale działa dobrze z nowymi liniami . Polega na śmiesznym (i nieudokumentowanym) zachowaniu GolfScript, aby zignorować niedopasowane (i nieskomentowane)
}
, a także wszystko, co następuje po nim.Nie powiedzie się, jeśli dane wejściowe zawierają niedopasowane dane
{
, ale technicznie stanowi to błąd składniowy.Jak to działa
Przykład
źródło
1\n2#
(\n
byłby to prawdziwy znak nowej linii) jako swój wkład.Kod maszynowy x86 w systemie DOS (
.com
plik) - 70 bajtówRadzenie sobie z plikami .COM, tworzenie palyndromu jest łatwe - ponieważ „moduł ładujący” COM po prostu umieszcza zawartość pliku pod adresem
100h
i przeskakuje tam, program musi już jakoś zakodować swój koniec i zignorować wszystko po nim, abyśmy mogli po prostu dołączyć odwrotność pierwszych bajtów N-1 (tylko zastrzeżenie: jeśli program w jakiś sposób próbuje wykonać sztuczki z długością pliku, wszystko się psuje).Oto zrzut hex mojej
.COM
-palyndromizing.COM
:Pobiera plik wejściowy z wiersza poleceń i zapisuje dane wyjściowe na stdout; oczekiwane użycie jest podobne
compalyn source.com > out.com
.Skomentowany montaż:
Testowane na sobie i rozwiązania poprzedniego pytania wydają się działać dobrze w DosBox, nastąpi kilka bardziej szczegółowych testów „kanonicznych” plików wykonywalnych DOS.
źródło
GolfScript, 8
Nie obsługuje nowych linii, ale nikt nie używa ich w GolfScript.
źródło
Bash + coreutils, 39 bajtów
Odczytuje ze STDIN i wysyła do STDOUT:
źródło
( echo 'Hello, World!' )
. bash prawie ignoruje wszystko poexit
.Javascript ( ES6 ) Multi-line - 71
Rodzaju ukradł metodę komentarza Quincunx tutaj:
Pojedyncza linia - 49
źródło
C ++,
214209 bajtówWynik działania na sobie:
źródło
Brainfuck, 749 bez białych znaków (bez gry w golfa)
Powoduje to pieprzenie mózgów, które odzwierciedlają palindromy, tzn. Są lustrzanymi odbiciami samych siebie.
Podany program wydaje
z programem
PROGRAM
iMIRROR
zastąpiony przez program (bez znaków niemówiących mózgów) i jego odbicie lustrzane.źródło
C 168
175Prawidłowo obsługuje znaki nowej linii w kodzie źródłowym
Edytuj 1 naprawiony błąd, gdy brakuje ostatniej linii Nowa
edytuj 2 naprawiony błąd, gdy wiersz wewnątrz komentarza kończy się
*
: dodaj znak tabulacji przed//
komentarzem(i grał w golfa więcej)
C99 Standardowy, poprawny kod, wiele ostrzeżeń
Nie golfił
źródło
/* *<NL> */int main(){}
C # - 174
Wejście testowe:
Wyjście testowe:
źródło
//
na końcu każdego wiersza.PHP, 96 bajtów
Przykładowe użycie:
To nie jest mądre. To tylko prosty kod, który spełnia swoje zadanie ... Miałem ochotę grać. Wiem, że ten kod jest pełen złych praktyk programistycznych!
Na koniec chętnie zaakceptuję wszelkie uwagi i poprawki do tego kodu!
źródło
Kobra - 134
źródło
Rakieta 133
Niegolfowany (ale nadal bardzo imperatywny):
Dane wyjściowe, gdy dane wejściowe otrzymają wersję bez golfisty
źródło