Buat program, yang mengubah string input menjadi palindrome dimulai dengan string input. Program itu sendiri harus berupa palindrome.
Misalnya input neverod
:, cetak neveroddoreven
. Anda juga harus menangani input multi-kata, multi-jalur.
Buat program, yang mengubah string input menjadi palindrome dimulai dengan string input. Program itu sendiri harus berupa palindrome.
Misalnya input neverod
:, cetak neveroddoreven
. Anda juga harus menangani input multi-kata, multi-jalur.
neverod
->neverodadoreven
(dengana
di antara)Jawaban:
Dyalog APL,
64Coba di sini.
Solusi lain:
Penjelasan
Mereka hanya:
Monadik
,
dan⊢
tidak melakukan apa pun pada string. Diad,
adalah penggabungan. Dyadic⊢
mengembalikan operan kanannya. Dan⌽
jelas merupakan pembalikan.sumber
piet 19x2 = 38
Menerima input hingga bertemu 0x00. Tidak berhenti, tetapi output akan benar.
sumber
APL, 9
Penjelasan:
sumber
CJam, 13 byte
Cobalah online di sini
atau..
GolfScript, 9 byte
Coba di sini
sumber
#
komentar biasa akan bekerja dengan baik di sana.}
telah dikenal sebagai komentar super sejak berabad-abad :)C ++, 162 byte
C, 117 byte
sumber
Haskell, 102 + 22 = 124 byte
Ini harus dijalankan dengan
Control.Applicative
module in scope, yang dapat diatur melalui file ghci init.ghci
::m Control.Applicative
(-> +22 bytes).Tidak ada trik komentar, hanya 7 fungsi di mana 4 dari mereka tidak pernah dipanggil.
Jika fungsi (bukan program) diizinkan:
Haskell, 55 + 22 = 77 byte
Penggunaan
f "qwer"
->"qwerrewq"
Sunting: versi sebelumnya salah.
sumber
Pyth, 11 byte
Dalam Pyth, apa pun yang diawali dengan spasi tidak dicetak. Jadi kita cukup menambahkan negatif dari string ke dirinya sendiri, memberi spasi, memulai string dan mencerminkan sisi kiri dari kutipan "
Cobalah online di sini
sumber
Ruby, 44
Mengambil string multiline sebagai input dari stdin, menampilkan representasi Ruby dari string yang disatukan dengan kebalikannya. Dapat memangkas karakter dengan mengganti
||
dengan#
mengomentari kode mati di baris kedua.sumber
s=gets p
! =p steg=s
Jolf, 9 byte
Bahasa yang lebih baru, tidak bersaing
Coba Di Sini
Penjelasan: Saya baru saja memulai Jolf dan saya tidak berpikir saya menjelaskan ini dengan benar.
sumber
η
solusi, dilakukan dengan sangat baik. Anda dapat menyimpan dua byte dengan menghilangkan mu, sebagai:a+i_i+a
. (Jolf juga memiliki input implisit untuk mengisi sisa argumen, tetapi ini bukan masalah karena hanya satu input yang diberikan pada suatu waktu.)PowerShell, 67
Cobalah online
Seperti yang disarankan oleh @mazzy kode dapat disingkat 12 byte saat menggunakan rentang statis. Ini, bagaimanapun, membatasi panjang input ke 9KBytes. Secara teori 9MBytes akan mungkin tetapi akan memperlambat kode secara signifikan.
sumber
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 byte)Fuzzy Octo Guacamole, 17 byte
FOG lebih baru dari tantangan ini, jadi ini tidak bersaing.
Solusi alternatif dalam 19 byte:
Mereka berdua mengambil input, menggandakan dan membalikkan, dan bergabung dengan tumpukan.
Penjelasan:
sumber
tinyBF , 40
Pikiran pertama saya adalah Brainfuck, tetapi tidak mungkin untuk mencocokkan kawat gigi ... untungnya BB kecil memiliki kontrol aliran yang lebih sederhana.
Tidak ada komentar, dibutuhkan string yang diakhiri nol sebagai input dan mengembalikan hasilnya dalam string yang diakhiri nol. Anda dapat mengujinya di sini , hanya diperingatkan dulu bahwa itu tidak berhenti (walaupun Firefox setidaknya meminta untuk menghentikan skrip yang tidak merespons).
Berkomentar:
Perhatikan bahwa jika Anda menyandikannya ke dalam instruksi 2 bit, ia memotong ukurannya menjadi 10 byte (tidak akan menjadi palindrom).
sumber
Python 3, 59 byte
Saya mencoba yang terbaik untuk menemukan solusi yang hanya menggunakan satu baris tetapi saya tidak beruntung.
Python 3, 79 byte
Upaya awal saya di mana setiap baris adalah palindrome. Saya tidak berpikir bahwa ini perlu untuk tantangan ini, tetapi saya memasukkannya untuk berjaga-jaga.
sumber
lambda
sangat panjang):print((lambda a:a+a[::-1])(input()))#)))(tupni()]1-::[a+a:a adbmal((tnirp
Vitsy, 9 byte
Cobalah online!
sumber
Befunge , 37 byte
Cobalah online!
Baris teratas mendorong dan mencetak setiap karakter input. Baris kedua (sebelum
@
) mencetak stack secara terbalik, tetapi kita masukkan di contional_
untuk mengkonsumsi -1 yang dihasilkan ketika selesai membaca input. Bagian lain dari kode (termasuk baris baru yang jelek) membuat sumber palindrom, tetapi nevers berjalan.sumber
C # (
3332 + 1) * 2 =6866 bytedisimpan 2 byte untuk penggunaan .Aggregate ()
Oh, lambda tua yang baik, kau bisa menangkapnya
dan kemudian menyebutnya dengan
sumber
Perl, 45 byte
Cukup mudah,
print
input ($_=<>
) diikuti olehreverse
itu.reverse
kembali$_
karena kita menggunakannya dalam konteks skalar dengan awalan~~
. Kemudian kami mencocokkan (m//
menggunakan;
sebagai pembatas), dalam konteks kosong, dengan kebalikan dari skrip.Jika kami dapat menjamin, kami tidak perlu membuat palindrome,
esrever,><=_$tnirp
kami dapat mempersingkat kode menjadi 43 byte :Pemakaian
Perl, 26 byte
Termasuk 25 byte kode +1 untuk
-p
.Saya tidak berpikir ini valid karena membutuhkan
-p
bendera yang saya pikir tidak dapat dengan mudah digabungkan ke dalam isi skrip untuk membuat palindrome yang benar. Cukup banyak panggilan yang sama seperti di atas, kecuali itu bergantung pada fakta yang-p
juga menambahkan di;
belakang layar (pada Perls baru ...) untuk menutupm//
.Pemakaian
sumber
Pyth, 15
Perhatikan ruang di awal dan di akhir.
Tugas yang cukup menyebalkan di Pyth.
z_z
mencetak palindrom yang diinginkan, tetapi mencetakz
(string input) dan_z
kebalikan pada dua garis yang berbeda.+
menggabungkan dua kata, tetapi+
pada akhirnya membutuhkan dua pernyataan baru di akhir (dan di awal). Saya memilihk
dank
, yang hanya string kosong. Kemudian banyak ruang putih, yang menekan pencetakan (dan mencetak ruang kosong, yang menghasilkan jeda baris saja).Karena ruang putih menekan setiap output kecuali
+z_z
, Anda dapat menggantik
s dan literal dengan arity 0. Misalnya1 2+ z_z +2 1
atauT Z+ z_z +Z T
.Cobalah online .
sumber
Javascript, 137 byte
Saya tidak menggunakan "trik komentar" tetapi saya menggunakan trik tanda kutip yang lolos lol.
sumber
";
. Menambahkan a;
sebagai karakter terakhir di dalam string harus memperbaikinya.JavaScript, 58 byte
sumber
PHP, 28 + 1 + 28 = 57 byte
mengambil input dari argumen baris perintah. kutipan untuk multi-kata, lepas baris baru untuk multi-baris.
sumber
Python 2, 51 byte
Saya terkejut tidak ada yang memikirkan hal ini! Membutuhkan input yang dikutip (
'
atau"
). Jika fungsi diizinkan, saya bisa melakukan ini untuk 37 byte:sumber
C ++ 14,
152116 byteSebagai lambda yang tidak disebutkan namanya, diasumsikan
s
demikianstring
Solusi lama:
Pemakaian:
sumber
05AB1E , 5 byte
Cobalah online.
Penjelasan:
Atau sebagai alternatif:
Cobalah online.
Di mana
R
terbalik, dan«
mengambil input secara implisit lagi untuk menyinggung.CATATAN: Jika kita diizinkan untuk output
neverodoreven
untuk inputneverod
, yang masih merupakan palindrom, itu dapat dilakukan dalam 1 byte sebagai gantinya dengan palindromize builtin:Cobalah online.
sumber
x86-64 Majelis (Konvensi pemanggilan Microsoft x64), 89 byte:
Dibongkar:
Perhatikan bahwa kode setelah
ret
instruksi di2C
tidak dapat dijangkau sehingga tidak masalah bahwa itu omong kosongsumber
Japt , 4 byte
Cobalah online!
Bagaimana itu bekerja
Alternatif 4 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Backhand ,
3327 byteCobalah online!
Tidak seperti banyak solusi di sini, yang satu ini benar - benar menggunakan kode palindromised!
Penjelasan:
Secara keseluruhan, instruksi yang tidak dieksekusi adalah:
sumber