Sebuah palindrom adalah string yang adalah maju dan mundur yang sama, seperti "mobil balap".
Tulis sebuah program dalam beberapa bahasa L, yang mengambil program P1 apa pun dalam bahasa L sebagai input, dan mengeluarkan program palindromic P2 dalam bahasa L yang melakukan hal yang sama seperti P1.
Anda tidak perlu khawatir menangani program input dengan kesalahan sintaksis.
Ini adalah kode golf , jadi solusi dengan jumlah byte paling sedikit menang.
code-golf
palindrome
Peter Olson
sumber
sumber
x=input();print(x+'#'+x[::-1])
. Subset adalah himpunan semua program yang tidak termasuk baris baru.Jawaban:
Perl,
5554 byteMembaca sumber program dari stdin dan menulis ke stdout.
Hasil menjalankannya sendiri:
sumber
__DATA__
yang dibaca .. mis.print while(<DATA>);\n__DATA__
akan mengubah perilaku.__DATA__
. :)Java, 225 byte
Keluaran pada dirinya sendiri (saat dipraisifikasi sebelumnya):
sumber
Python 2, 68 byte
Tidak berfungsi jika dijalankan dari IDLE, karena Anda perlu membuat karakter EOF untuk menghentikan program dari menunggu input.
Output saat dijalankan dengan sendirinya:
Terima kasih kepada Greg Hewgill untuk membantu mengatasi masalah dan golf.
sumber
GolfScript,
109 byteCukup mirip dengan solusi minitech , tetapi bekerja dengan baik pada baris baru. Itu bergantung pada tingkah laku GolfScript yang lucu (dan tidak berdokumen) untuk mengabaikan yang tak tertandingi (dan tidak diberi komentar)
}
, serta semua yang mengikutinya.Ini akan gagal jika input berisi yang tidak cocok
{
, tetapi itu secara teknis akan merupakan kesalahan sintaksis.Bagaimana itu bekerja
Contoh
sumber
1\n2#
(\n
akan menjadi karakter baris baru yang sebenarnya) sebagai masukan Anda.kode mesin x86 pada DOS (
.com
file) - 70 byteBerurusan dengan file .COM, membuat palyndrome mudah - karena COM "loader" hanya menempatkan konten file di alamat
100h
dan melompat ke sana, program harus sudah meng-hardcode akhirnya entah bagaimana dan mengabaikan semuanya setelahnya, jadi kita bisa menambahkannya kebalikan dari byte pertama N-1 (hanya peringatan: jika program entah bagaimana mencoba melakukan trik dengan panjang file semuanya rusak).Berikut ini adalah hex dump my
.COM
-palyndromizing.COM
:Dibutuhkan file input pada baris perintah, dan menulis output pada stdout; penggunaan yang diharapkan adalah sesuatu seperti
compalyn source.com > out.com
.Majelis yang dikomentari:
Diuji pada dirinya sendiri dan solusi untuk pertanyaan sebelumnya tampaknya bekerja dengan baik di DosBox, beberapa pengujian yang lebih luas pada executable DOS "kanonik" akan mengikuti.
sumber
GolfScript, 8
Tidak menangani baris baru, tetapi tidak ada yang menggunakan yang ada di GolfScript.
sumber
Bash + coreutils, 39 byte
Membaca dari STDIN dan output ke STDOUT:
sumber
( echo 'Hello, World!' )
. cukup banyak mengabaikan semuanya setelahexit
.Javascript ( ES6 ) Multi-line - 71
Agak sorta mencuri metode komentar Quincunx di sini:
Baris tunggal - 49
sumber
C ++,
214209 byteHasil menjalankannya sendiri:
sumber
Brainfuck, 749 tanpa spasi putih (tidak golf)
Ini menghasilkan program-program brainfuck yang mencerminkan palindrom, yaitu mereka adalah bayangan cermin dari diri mereka sendiri.
Diberikan sebuah program, hasilnya
dengan
PROGRAM
danMIRROR
diganti oleh program (tanpa karakter non-brainfuck) dan gambar cerminnya.sumber
C 168
175Benar menangani baris baru yang lolos di dalam kode sumber
Edit 1 bug tetap ketika baris baru terakhir hilang
Edit 2 bug tetap ketika baris di dalam komentar berakhir dengan
*
: tambahkan tab tab sebelum//
komentar(dan pindahkan lebih lanjut)
C99 Standar, kode yang valid, banyak peringatan
Tidak disatukan
sumber
/* *<NL> */int main(){}
C # - 174
Input tes:
Hasil tes:
sumber
//
di akhir setiap baris sekarang.PHP, 96 byte
Penggunaan sampel:
Ini tidak ada yang pintar. Itu hanya sepotong kode sederhana yang berfungsi ... Aku sedang ingin bermain. Saya tahu bahwa kode ini penuh dengan praktik pemrograman yang buruk!
Akhirnya, saya dengan senang hati akan menerima kritik dan suntingan untuk kode ini!
sumber
Cobra - 134
sumber
Raket 133
Tidak disatukan (tapi masih sangat penting):
Keluaran saat diberi versi yang tidak dikoleksi sebagai masukan:
sumber