কোনও স্ট্রিং প্যালিনড্রমিক কিনা তা পরীক্ষা করার জন্য একটি প্রোগ্রাম লিখুন, যুক্ত শর্তের সাথে যে প্রোগ্রামটি নিজেই প্যালিনড্রোমিক।
কোনও স্ট্রিং প্যালিনড্রমিক কিনা তা পরীক্ষা করার জন্য একটি প্রোগ্রাম লিখুন, যুক্ত শর্তের সাথে যে প্রোগ্রামটি নিজেই প্যালিনড্রোমিক।
উত্তর:
z=gets;puts *z.reverse==z&&1||0||1&&z==esrever.z* stup;steg=z
ইনপুটটি প্যালিনড্রোম হলে 1 টি প্রিন্ট করে, যদি তা না হয় তবে 0। লাইন ব্রেক ছাড়াই ইনপুট।
কোনও মন্তব্য ব্যবহার করে না, পরিবর্তে এটি 2 কৌশল ব্যবহার করে:
0
রুবিতে সত্য-ইশ (কেবল nil
এবং false
মিথ্যাতে মূল্যায়ন করা) সুতরাং 1&&z==esrever.z* stup
মূল্যায়ন করা হয় না এবং এভাবে রানটাইম ব্যতিক্রম বাড়াতে পারে না*
): এর মধ্যে একটি সিনট্যাক্স ত্রুটি এড়াতে z=esrever.z stup
আমরা পার্সারটিকে z=esrever.z()*stup
একটি যুক্ত করে পার্স করতে বাধ্য করি *
। অন্যদিকে, *
স্প্ল্যাট অপারেটর হিসাবে পার্স করা হয়েছে, যা একটি ফাংশন কলটিতে পরামিতিগুলির একটি সিরিজে একটি অ্যারে বিভক্ত করে। অ্যারের পরিবর্তে যদি কেবল একটি উপাদান থাকে তবে এটি মূলত কিছুই করে না, তাই puts *foo
সমান puts foo
।মন্তব্যগুলি ব্যবহার করে স্পষ্ট সমাধান (সত্য / মিথ্যা প্রিন্ট করে):
puts gets.reverse==$_#_$==esrever.steg stup
পাইথন কোনও মন্তব্য ছাড়াই
"a\";w=]1-::[w trinp;)(tupni_war=w;";w=raw_input();print w[::-1]==w;"\a"
আমি অবাক হয়েছি যে কেউ এখনও সেই কৌশলটি খুঁজে পায়নি, এটি বেশিরভাগ ভাষায় কাজ করা উচিত!
print
স্টেটমেন্টটি ফেলে দিতে পারেন এবং যদি আপনি ইনপুটটিকে নির্দিষ্ট করে কোটগুলিতে আবদ্ধ করার অনুমতি দেন তবে raw_input()
এটি সংক্ষিপ্ত করা যেতে পারে input()
। শুরুতে একটি অতিরিক্ত '=' মিস করছি।
"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#
চলমান উদাহরণ:
$ gcc -std=c99 c.c && ./a.out
blahalb
yes
echo strrev($z)==$z;#;z$==)z$(verrts ohce
তথ্য:
$z
স্ট্রিং, চেক করতে ইনপুট স্ট্রিং$t
বুলিয়ান, সত্য যদি ইনপুট স্ট্রিংটি $z
প্যালিনড্রোম হয়, অন্যথায় মিথ্যা$t
পিএইচপি-তে প্যালিনড্রমিক প্যালিনড্রোম চেকার প্রয়োগ করা সম্ভব হবে না তার কারণ পিএইচপি ভেরিয়েবলগুলির একটি দিয়ে শুরু করে নামকরণ করা হয়েছে $
। আপনি $
পিএইচপি দিয়ে কোনও সনাক্তকারী নাম শেষ করতে পারবেন না ।
<?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?>
$
সমস্যাটি এড়ানোর জন্য কিছু বিজোড় কৌশল ব্যবহার করে , প্রযুক্তিগতভাবে একটি প্যালিনড্রোম ইন্টেন্টে নেই কারণ আমাকে ;
শেষের দিকে একটি ছিঁচকে পড়েছিল ।
<?php $i = fgets(STDIN,2e9); echo $i == strrev($i);/*\;(i$)verrts == i$ ohce ;(9e2, NIDTS)stegf = $i php?>
এটি এমন একটি কাজ করছে যা পিএইচপি'র /* */
মন্তব্যগুলি ব্যবহার করে এবং এগুলির জন্য আপনার শেষের প্রয়োজন হবে না এমন সত্য।
eval
হওয়া উচিত lave
।
^Cz.=i_;@;_i=.zC^
জিত কীভাবে সংজ্ঞায়িত করা হয়েছে তা নিশ্চিত নয়, তবে আমি বাইট কাউন্ট আপকে উপরে রেখেছি।
^
ইনপুট পায় এবং এটিকে প্রথম স্ট্যাকের দিকে ঠেলে দেয়।
C
প্রথম স্ট্যাকটি দ্বিতীয়টিতে অনুলিপি করে।
z
স্ট্যাকের শীর্ষটিকে বিপরীত করুন, সুতরাং "হিসাবে" "সা" হয়ে যায়।
.
সক্রিয় স্ট্যাকটি স্থানান্তরিত করে, তাই সক্রিয় স্ট্যাকের ইনপুট থাকে এবং নিষ্ক্রিয় ব্যক্তির বিপরীত ইনপুট থাকে।
=
সমতার জন্য চেক, সমতার জন্য ফিরে 0
।
i
টোসকে উল্টে দেয়, তাই 0
হয়ে যায় 1
এবং অন্য যে কোনও কিছু হয়ে যায় False
।
_
পপ এবং অস্থায়ী ভেরিয়েবল সেট করে যা ;
তখন প্রিন্ট করে।
@
প্রোগ্রামটি ম্যানুয়ালি শেষ করে, যাতে এটি বিপরীত অংশটিকে আঘাত করে না। এটি প্যালিনড্রোম তৈরি করে।