Tulis sebuah program untuk menguji apakah suatu string adalah palindromik, dengan syarat tambahan bahwa program tersebut menjadi palindromik itu sendiri.
code-challenge
palindrome
marcog
sumber
sumber
Jawaban:
Rubi
Mencetak 1 jika inputnya adalah palindrome, 0 jika tidak. Masukan tanpa linebreak.
Tidak menggunakan komentar apa pun, melainkan menggunakan 2 trik:
0
adalah true-ish di Ruby (hanyanil
danfalse
bernilai false), jadi1&&z==esrever.z* stup
tidak dievaluasi dan dengan demikian tidak dapat meningkatkan pengecualian runtime*
): Untuk menghindari kesalahan sintaksis dalamz=esrever.z stup
, kami memaksa pengurai untuk mem-parsing iniz=esrever.z()*stup
dengan menambahkan a*
. Di sisi lain,*
diurai sebagai operator percikan, yang dalam panggilan fungsi membagi array dalam serangkaian parameter. Jika hanya ada satu elemen, bukan array, pada dasarnya tidak melakukan apa-apa, jadiputs *foo
setara denganputs foo
.Solusi jelas menggunakan komentar (cetak benar / salah):
sumber
Python tanpa komentar
Saya terkejut bahwa belum ada yang menemukan trik itu, itu seharusnya bekerja di sebagian besar bahasa!
sumber
print
pernyataan dan jika Anda membiarkan input yang ditentukan terlampir dalam kutipanraw_input()
dapat dipersingkatinput()
. Kehilangan '=' ekstra di awal."a\"#;w==]1-::[w;)(tupni_war=w;";w=raw_input();w[::-1]==w;#"\a"
Perl
perl -nle "$s=$_ eq+reverse;print$s;s$tnirp;esrever+qe _$=s$"
tidak ada trik komentar, hanya secara cerdik menyalahgunakan operator substitusi (hei, variabel perl mulai dengan $ juga, jadi apa?)
sumber
Python 2.7
sumber
C
Contoh menjalankan:
sumber
Naskah Golf
sumber
PHP
Fakta:
$z
string, string input untuk diperiksa$t
boolean, TRUE jika string input$z
adalah palindrome, FALSE sebaliknya$t
Alasan mengapa tidak mungkin untuk mengimplementasikan palindrome palindromic checker di PHP itu karena variabel PHP diberi nama dimulai dengan a
$
. Anda tidak dapat mengakhiri nama pengenal dengan$
di PHP.sumber
PHP
Menggunakan beberapa trik aneh untuk menghindari
$
masalah ini, secara teknis bukanlah sebuah palindrom karena saya harus menyelinap;
masuk pada akhirnya.Ini adalah yang berfungsi yang menggunakan
/* */
komentar PHP dan fakta bahwa Anda tidak memerlukannya.sumber
eval
seharusnyalave
.CoffeeScript
Saya benar-benar berjuang dengan ejaan terbalik 'split', 'reverse' dan 'join': \
sumber
Asyik
sumber
Python 3, 55 byte
Menggunakan komentar, tetapi lebih pendek dari yang lain Python yang menggunakan komentar.
sumber
Fuzzy Octo Guacamole , 17 byte
Tidak begitu yakin bagaimana kemenangan didefinisikan, tetapi saya menempatkan jumlah byte di bagian atas.
^
mendapatkan input dan mendorongnya ke tumpukan pertama.C
menyalin tumpukan pertama ke tumpukan kedua.z
membalikkan bagian atas tumpukan, jadi "as" menjadi "sa"..
menggeser tumpukan aktif, sehingga tumpukan aktif memiliki input, dan yang tidak aktif memiliki input terbalik.=
memeriksa kesetaraan, mengembalikan0
kesetaraan.i
membalik ToS, jadi0
menjadi1
, dan apa pun menjadi cukup banyakFalse
._
muncul dan atur variabel temp yang;
kemudian dicetak.@
mengakhiri program secara manual, sehingga tidak mengenai bagian yang terbalik. Ini membuat palindrome.sumber
Javascript
Sulit melakukannya tanpa komentar ...
sumber