প্যালিনড্রমিক প্যালিনড্রোম পরীক্ষক [বন্ধ]


37

কোনও স্ট্রিং প্যালিনড্রমিক কিনা তা পরীক্ষা করার জন্য একটি প্রোগ্রাম লিখুন, যুক্ত শর্তের সাথে যে প্রোগ্রামটি নিজেই প্যালিনড্রোমিক।


1
যদি ভাষাটির শেষ অবধি লাইন মন্তব্য থাকে তবে এটি ক্ষুদ্র is তাই আমি অনুমান করি যে এগুলি বাতিল করা উচিত।
জোয়ে

1
@ জো আমি খুশিভাবে এই জাতীয় মন্তব্য ব্যবহার করা নিরুৎসাহিত করব, তবে প্রশ্ন উত্থাপন করার পরে তাদের এগুলি অস্বীকার করা যারা ইতিমধ্যে উত্তর দিয়েছেন তাদের পক্ষে কঠোর। @ ভেন্টোরোর উত্তর (কেবলমাত্র সেগুলি ব্যবহার করছে না) ভোট গণনার ক্ষেত্রে অনেক এগিয়ে, সুতরাং সকলেই একমত বলে মনে হচ্ছে।
মার্কোগ

1
ঠিক আছে, এর আগে এই জাতীয় সমস্যাগুলি নিবারণের জন্য (এটিও একই ধরণের কোনও কার্যক্রমে ঘটেছিল) আপনি স্যান্ডবক্স বা ধাঁধা ল্যাব ব্যবহার করতে পারেন ;-)
জয়ে

1
কীভাবে চাপিয়ে দেওয়া সম্পর্কে যে প্রোগ্রামটি একটি প্যালিনড্রমিক কুইন নিজেই অশুভ গ্রিন হওয়া উচিত ;-)
কুইসোটিক

4
আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি মনে করি এটির জন্য একটি স্বেচ্ছাচারী বিজয়ী মানদণ্ড, যেমন জনপ্রিয়তা প্রতিযোগিতা বা কোড-গল্ফের দরকার। প্রশ্ন কেউ নির্দিষ্ট করে না।
mbomb007

উত্তর:


34

চুনি

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

আপনি কীভাবে এটি কাজ করে তা ব্যাখ্যা করতে পারেন। আমি রুবি জানি না।
মেল্লামব্যাক

@ মেল্লামোকব: আমি একটি সংক্ষিপ্ত ব্যাখ্যা যুক্ত করেছি। এটি এখনও পরিষ্কার না থাকলে আমাকে জানান।
ভেন্টোরো

26

পাইথন কোনও মন্তব্য ছাড়াই

"a\";w=]1-::[w trinp;)(tupni_war=w;";w=raw_input();print w[::-1]==w;"\a"

আমি অবাক হয়েছি যে কেউ এখনও সেই কৌশলটি খুঁজে পায়নি, এটি বেশিরভাগ ভাষায় কাজ করা উচিত!


2
খুব চালাক, আমি পালানোর উক্তিটি পছন্দ করি।
ওয়েইন ওয়ার্নার

দুর্দান্ত সমাধান, আপনি এমনকি printস্টেটমেন্টটি ফেলে দিতে পারেন এবং যদি আপনি ইনপুটটিকে নির্দিষ্ট করে কোটগুলিতে আবদ্ধ করার অনুমতি দেন তবে raw_input()এটি সংক্ষিপ্ত করা যেতে পারে input()। শুরুতে একটি অতিরিক্ত '=' মিস করছি।
উইলেম

সত্য বা ভুজের পরে অনুসরণীয় আউটপুট সরানো হয়েছে:"a\"#;w==]1-::[w;)(tupni_war=w;";w=raw_input();w[::-1]==w;#"\a"
উইলিয়াম

13

পার্ল

perl -nle "$s=$_ eq+reverse;print$s;s$tnirp;esrever+qe _$=s$"

কোনও মন্তব্য কৌশল নয়, কেবল চালাকতার সাথে প্রতিস্থাপন অপারেটরকে গালি দিচ্ছেন (আরে, পার্ল ভেরিয়েবলগুলিও $ দিয়ে শুরু হয়, তাই কি?)


7

পাইথন 2.7

s=raw_input();print'YNEOS'[s!=s[::-1]::2]#]2::]1-::[s=!s['SOENY'tnirp;)(tupni_war=s

6

সি

#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

ব্রিভিটির পক্ষে জিতবে না, তবে আমি মুগ্ধ
ওয়েন ওয়ার্নার

lol, চতুর- lvl 11/10।
nymo

5

Golfscript

.-1%=#=%1-.
  • শুধু মন্তব্য কৌশল সঙ্গে
  • শেষে input n ছাড়া ইনপুট
  • চর দ্বারা মিলিত চর সম্পাদন করুন (এমনকি বিরামচিহ্নের জন্যও)
  • সাফল্যের জন্য 1, ব্যর্থতার জন্য 0 প্রদান করে

4

পিএইচপি

echo strrev($z)==$z;#;z$==)z$(verrts ohce

তথ্য:

  • $z স্ট্রিং, চেক করতে ইনপুট স্ট্রিং
  • $tবুলিয়ান, সত্য যদি ইনপুট স্ট্রিংটি $zপ্যালিনড্রোম হয়, অন্যথায় মিথ্যা
  • কোড প্যালিনড্রোম তৈরি করতে আমাকে সহায়তা করতে মন্তব্যগুলি ব্যবহার করা।
  • আউটপুট $t
  • উত্স নিজেই একটি প্যালিনড্রোম

পিএইচপি-তে প্যালিনড্রমিক প্যালিনড্রোম চেকার প্রয়োগ করা সম্ভব হবে না তার কারণ পিএইচপি ভেরিয়েবলগুলির একটি দিয়ে শুরু করে নামকরণ করা হয়েছে $। আপনি $পিএইচপি দিয়ে কোনও সনাক্তকারী নাম শেষ করতে পারবেন না ।


2

পিএইচপি

<?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?>

এটি এমন একটি কাজ করছে যা পিএইচপি'র /* */মন্তব্যগুলি ব্যবহার করে এবং এগুলির জন্য আপনার শেষের প্রয়োজন হবে না এমন সত্য।


2
শেষের প্রথম কোডটি evalহওয়া উচিত lave
আইকান ইয়াট

1

CoffeeScript

আমি আসলে 'বিভক্ত', 'বিপরীত' এবং 'যোগদান' এর বিপরীত বানানগুলির সাথে লড়াই করেছি: \

p=(s)->s.split('').reverse().join('')==s#s==)''(nioj.)(esrever.)''(tilps.s>-)s(=p


1

পাইথন 3, 55 বাইট

একটি মন্তব্য ব্যবহার করে, তবে মন্তব্যগুলি ব্যবহার করে এমন পাইথনের তুলনায় ছোট।

s=input();print(s==s[::-1])#)]1-::[s==s(tnirp;)(tupni=s

1

ফাজি অক্টোো গুয়াকামোল , 17 বাইট

^Cz.=i_;@;_i=.zC^

জিত কীভাবে সংজ্ঞায়িত করা হয়েছে তা নিশ্চিত নয়, তবে আমি বাইট কাউন্ট আপকে উপরে রেখেছি।

^ ইনপুট পায় এবং এটিকে প্রথম স্ট্যাকের দিকে ঠেলে দেয়।

C প্রথম স্ট্যাকটি দ্বিতীয়টিতে অনুলিপি করে।

z স্ট্যাকের শীর্ষটিকে বিপরীত করুন, সুতরাং "হিসাবে" "সা" হয়ে যায়।

. সক্রিয় স্ট্যাকটি স্থানান্তরিত করে, তাই সক্রিয় স্ট্যাকের ইনপুট থাকে এবং নিষ্ক্রিয় ব্যক্তির বিপরীত ইনপুট থাকে।

=সমতার জন্য চেক, সমতার জন্য ফিরে 0

iটোসকে উল্টে দেয়, তাই 0হয়ে যায় 1এবং অন্য যে কোনও কিছু হয়ে যায় False

_পপ এবং অস্থায়ী ভেরিয়েবল সেট করে যা ;তখন প্রিন্ট করে।

@প্রোগ্রামটি ম্যানুয়ালি শেষ করে, যাতে এটি বিপরীত অংশটিকে আঘাত করে না। এটি প্যালিনড্রোম তৈরি করে।


0

জাভাস্ক্রিপ্ট

function a(b){return b==b.split('').reverse().join('')}//})''(nioj.)(esrever.)''(tilps.b==b nruter{)b(a noitcnuf

মন্তব্য ছাড়াই এটি করা কঠিন ...

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.