Bir dizginin palindromik olup olmadığını, programın kendisinin palindromik olması koşuluyla eklenmesi için bir program yazın.
Bir dizginin palindromik olup olmadığını, programın kendisinin palindromik olması koşuluyla eklenmesi için bir program yazın.
Yanıtlar:
z=gets;puts *z.reverse==z&&1||0||1&&z==esrever.z* stup;steg=z
Giriş bir palindrom ise 1, değilse 0 olur. Linebreak olmadan giriş yapın.
Herhangi bir yorum kullanmaz, bunun yerine 2 numara kullanır:
0Ruby'de true-ish (yalnızca nilve falseyanlış olarak değerlendir), dolayısıyla 1&&z==esrever.z* stupdeğerlendirilmez ve bu nedenle çalışma zamanı istisnası oluşturamaz*): İçinde bir sözdizimi hatası z=esrever.z stupoluşmasını önlemek için , ayrıştırıcıyı z=esrever.z()*stupa ekleyerek ayrıştırmaya zorlarız *. Diğer taraftan, *işlev çağrısında bir dizi parametrede bir dizi bölen bir uyarıcı işleci olarak ayrıştırılır. Bir dizi yerine sadece bir eleman varsa, temel olarak hiçbir şey yapmaz, yani buna puts *fooeşdeğerdir puts foo.Yorumları kullanarak açık bir çözüm (doğru / yanlış yazdırır):
puts gets.reverse==$_#_$==esrever.steg stup
Yorum yapmadan Python
"a\";w=]1-::[w trinp;)(tupni_war=w;";w=raw_input();print w[::-1]==w;"\a"
Henüz kimsenin bu numarayı bulmadığına şaşırdım, çoğu dilde çalışması gerekiyor!
printifadeyi bile bırakabilirsiniz ve girişin tırnak içine alınmış olmasına izin verirseniz raw_input()kısaltılabilir input(). Başlangıçta fazladan '=' eksik.
"a\"#;w==]1-::[w;)(tupni_war=w;";w=raw_input();w[::-1]==w;#"\a"
#include <stdio.h> //
#include <string.h> //
int main() { //
char str[1024]; //
fgets(str, sizeof(str), stdin); //
int i = 0, j = strlen(str) - 2; //
for (; i < j; i++, j--) //
if (str[i] != str[j]) { //
printf("no\n"); //
return 0; //
} //
printf("yes\n"); //
} //
// }
// ;)"n\sey"(ftnirp
// }
// ;0 nruter
// ;)"n\on"(ftnirp
// { )]j[rts =! ]i[rts( fi
// )--j ,++i ;j < i ;( rof
// ;2 - )rts(nelrts = j ,0 = i tni
// ;)nidts ,)rts(foezis ,rts(stegf
// ;]4201[rts rahc
// { )(niam tni
// >h.gnirts< edulcni#
// >h.oidts< edulcni#
Çalışan örnek:
$ gcc -std=c99 c.c && ./a.out
blahalb
yes
echo strrev($z)==$z;#;z$==)z$(verrts ohce
Gerçekler:
$z dize, kontrol edilecek girdi dizisi$tboolean, giriş dizgisi $zpalindrome ise TRUE, FALSE aksi takdirde$tPHP'de palindromic palindrome checker uygulamasının mümkün olmamasının nedeni PHP değişkenlerinin a ile başlanmasıdır $. $PHP ile bir tanımlayıcı ismini bitiremezsiniz.
<?php eval/*/*/(';{$i=fgets(STDIN,2e9);};{$a="strrev";}{var_dump("{$i}"=="{$a($i)}");}/*}{*\{;("{(tupni$)a$}"=="{putni$}")ohce}{;"verrts"==a$};{;(9e2,NIDTS)stegf=i$);');/*\*\eval php?>
$Sorunu önlemek için bazı tuhaf hileler kullanır ;, sonunda içeri gizlice girmek zorunda kaldığım için teknik olarak bir palindrome değildir .
<?php $i = fgets(STDIN,2e9); echo $i == strrev($i);/*\;(i$)verrts == i$ ohce ;(9e2, NIDTS)stegf = $i php?>
Bu PHP'nin /* */yorumlarını kullanan ve onlar için sonun gerekmediği gerçeğini kullanan çalışan bir yazı .
evalolmalı lave.
print args[0]==args[0].reverse()?1:0//0:1?)(esrever.]0[sgra==]0[sgra tnirp
^Cz.=i_;@;_i=.zC^
Kazanmanın nasıl tanımlandığından tam olarak emin değilim, ama bayt sayımını üste koydum.
^ girişi alır ve ilk yığına iter.
C ilk yığını ikinciye kopyalar.
z yığının üst kısmını ters çevirin, böylece "olduğu gibi" "sa" olur.
. aktif yığını kaydırır, böylece aktif yığının girişi vardır ve inaktif olanın ters girişi vardır.
=eşitliği kontrol eder, eşitliği geri döndürür 0.
iTO'yu ters çevirir, yani 0olur 1ve hemen hemen her şey olur False.
_açılır ve ;sonra yazdırılan geçici değişkeni ayarlar .
@programı manuel olarak sonlandırır, böylece tersine çevrilmiş parçayı vurmaz. Bu palindrom yapar.