কোনও সংখ্যার বাইনারি প্রতিনিধিত্ব প্যালিনড্রোম হয় নাকি?


16

কোনও সংখ্যার বাইনারি উপস্থাপনা প্যালিনড্রোম কিনা তা জানতে একটি সম্পূর্ণ প্রোগ্রাম লিখুন?

Sample Input
5

Sample Output
YES

YESবাইনারি উপস্থাপনা প্যালিনড্রোম এবং NOঅন্যথায় মুদ্রণ করুন ।


প্যালিনড্রোম না হলে আউটপুটটি কী হওয়া উচিত ?
ডগবার্ট

@ ডগবার্ট এটি উদ্ধৃতি ব্যতীত 'না' হওয়া উচিত।
fR0DDY

আপনি কীভাবে জানবেন যে এটি একটি প্যালিনড্রোম? কারণ প্রথম ননজারো থেকে শুরু করে স্ট্রিংয়ের শেষে মানগুলি প্যালিনড্রোমিক হয়? এটি আমার কাছে সত্যই দুর্গন্ধযুক্ত, একটি চ্যালেঞ্জ হিসাবে।
jcolebrand

1
আমি <3 গিনিবলারের উত্তর হিসাবে, এটি আসলে সবচেয়ে সংক্ষিপ্ত সমাধান নয় এবং [কোড-গল্ফ] ট্যাগযুক্ত কোনও প্রশ্নের বিজয়ী হিসাবে সংক্ষিপ্ততম সমাধানটি বেছে নেওয়া উচিত।
ক্রিস জেস্টার-ইয়ং

ইনপুট দেওয়া হয় কিভাবে?
জোয়ে

উত্তর:


5

গল্ফস্ক্রিপ্ট - 22 টি অক্ষর

~2base.-1%="YES""NO"if

24

পাইথন - 46 টি অক্ষর

n=bin(input())[2:]
print'YNEOS'[n!=n[::-1]::2]

কি দারুন. কি করে [n!=n[::-1]::2]?
ডগবার্ট

2
@ ডগবার্ট, এন [:: - 1] একটি স্লাইস। শুরু এবং শেষ সূচকগুলি খালি, সুতরাং এর অর্থ পুরো স্ট্রিং। স্টেপসাইজটি -১, সুতরাং যখন আপনি [:: - 1] দেখেন তবে স্ট্রিং / তালিকা ইত্যাদি বিপরীত করার জন্য এটি একটি ছোট উপায় So সুতরাং এন! = এন [:: - 1] এন না হলে সত্য (অর্থাত্ 1) একটি প্যালিনড্রোম। সুতরাং যখন এন প্যালিনড্রোম হয়, আপনি 'ওয়াইএনইওএস' পান [0 :: 2] - 0 থেকে শুরু করুন এবং প্রতি 2 য় অক্ষর নিন। যখন এন কোনও প্যালিনড্রোম না হয় আপনি 'ওয়াইএনইওএস' [1 :: 2] পাবেন - 1 থেকে শুরু করুন এবং প্রতিটি দ্বিতীয় চরিত্রটি গ্রহণ করুন :)
gnibbler

আমি মনে করি লোকেরা স্লাইস ট্রিকের জন্য ভোট দিচ্ছে :), ঠিক তাই। : পি +1
st0le

4

রুবি, 41 39

$><<%w(YES NO)[(n="%b"%$*)<=>n.reverse]

মাইকেল কোহেলের "% বি"% কৃতিত্বের জন্য ধন্যবাদ।


খুব সুন্দর, আমি এটি অনেক পছন্দ করি! স্পেসশিপটি সৃজনশীল উপায়ে ব্যবহারের জন্য +1 :-)
মাইকেল কোহল

4

সি 84 81 74 অক্ষর

r;main(v,x){for(scanf("%d",&v),x=v;v;v/=2)r=r*2|v&1;puts(r-x?"NO":"YES");}

এটি স্ট্রিং রিভার্সের মতো কোনও ফাংশন ব্যবহার করে না।


আপনি পরিবর্তন কয়েকটি অক্ষর সংরক্ষণ করা যায়নি r<<=1মধ্যে r*=2, v>>=1মধ্যে v/=2এবং {}মধ্যে ;?

পছন্দ করুন পরিবর্তন হয়েছে। অনেক ধন্যবাদ.
fR0DDY

r*=2,r|=v&1-> r=r*2|v&1(-2)
তিতাস

এবং সেই শব্দটিকে লুপের শরীরে নিয়ে যাওয়া অন্য একটি বাইট সংরক্ষণ করে।
টাইটাস

3

জাভাস্ক্রিপ্ট - 79 77 অক্ষর

alert((a=(prompt()*1).toString(2))-a.split("").reverse().join("")?"NO":"YES")

অধিক তথ্য

prompt()*1 : স্ট্রিংকে সংখ্যায় রূপান্তর করার জন্য দ্রুত কৌশল।

.toString(2) : আপনি জাভাস্ক্রিপ্টে বাইনারি রূপান্তর এইভাবে।

a.split("").reverse().join("") : বিপরীত স্ট্রিংয়ের কোনও দেশীয় সমর্থন নেই, সুতরাং আপনাকে স্ট্রিংকে অ্যারে এবং অ্যারেগুলিতে স্ট্রিংয়ে রূপান্তর করতে হবে।

("[part1]" - "[part 2]")?"YES":"NO": 1 টি সংরক্ষণের -জন্য প্রতিস্থাপন !=


1
দুর্দান্ত ব্যাখ্যা।
তেহশ্রিকে

2

পিএইচপি - 41

<?=strrev($n=decbin(`cat`))==$n?@YES:@NO;

টেস্ট:

php 713.php <<< 5
YES
php 713.php <<< 6
NO

4
আপনি যদি ইনপুটটি পেতে শেল কলগুলি ব্যবহার করতে চলেছেন তবে সেভ করার m4পরিবর্তে পাশাপাশি ব্যবহার catকরতে পারেন। এছাড়াও আছে pgএবং dd(যা stderr কিছু বাইট লিখে)।
নবেব

আপনি কি উইন্ডোজে চেষ্টা করেছেন? ;)
তিতাস

2

পার্ল, 45 টি অক্ষর

$_=sprintf'%b',shift;
print reverse==$_?YES:NO


2

উইন্ডোজ পাওয়ারশেল, 67

('NO','YES')[($a=[Convert]::ToString("$input",2))-eq-join$a[64..0]]

2

05 এ বি 1 ই, 17 12 বাইট (প্রতিদ্বন্দ্বী)

‘NO…Ü‘#EbÂQè

-৫ বাইট ধন্যবাদ আদনানকে।

এটি অনলাইন চেষ্টা করুন!


আরে সুন্দর! আমি এটিকে কিছুটা গল্ফ দেওয়ার চেষ্টা করেছি এবং 12 বাইটে এসেছি ‘NO…Ü‘#EbÂQè:)।
আদনান

গ্রেট! আমি এখনও জানি না কীভাবে সংকুচিত স্ট্রিংগুলি ব্যবহার করতে / তৈরি করতে পারি। এছাড়াও, আমি জানতাম না যে ফাংশনটির bin()অস্তিত্ব রয়েছে
অ্যাক্রোলিথ

2
আপনি যদি আগ্রহী হন তবে এখানে প্রকৃত উদাহরণ রয়েছে।
আদনান

প্রশ্নটি ভাষাটির আগে থেকেই এই উত্তরটি প্রতিযোগিতামূলক নয়।
Okx


1

পার্ল (73)

কোনও স্ট্রিং বিপরীত নয়:

print f(split//,sprintf'%b',shift);
sub f{@_<=1?YES:shift!=pop()?NO:f(@_)}

1

পার্ল (127)

এইটি 2 ^ 32 পর্যন্ত সমস্ত প্যালিনড্রোমগুলি তৈরি করে।

sub f{
    my($x,$l)=@_;
    $l+=2,f(($x<<$_)+1+(1<<$l-1),$l)?return 1:0 for 1..15-$l/2;
    $x-$ARGV[0]?0:1
}
print f(0,1)+f(0,0)+f(1,1)?YES:NO

1

বাশ, 55 টি অক্ষর

C=`dc<<<$1\ 2op`;[ $C = `rev<<<$C` ]&&echo YES||echo NO

ঠিক আছে, প্রযুক্তিগতভাবে এটি bash এবং dc এবং rev :-)


1

জে: 24

((-:|.)#:x){2 3$'NO YES'

উদাহরণ:

   ((-:|.)#:5){2 3$'NO YES'
YES
   ((-:|.)#:12){2 3$'NO YES'
NO
   ((-:|.)#:125){2 3$'NO YES'
NO
   ((-:|.)#:63){2 3$'NO YES'
YES

1

হাস্কেল (79)

0?k=n;n?k=div n 2?(n`mod`2+k*2);f x|x==x?0="YES"|True="No";main=interact$f.read

ভুলে যাবেন না: হাস্কেলে এটি সত্যিই বড় সংখ্যার সাথে কাজ করবে।
FUZxxl

2
আহ, আসলে এটি 79 টি অক্ষর। ;-)
মাইকেল কোহল


1

পাইথ, 18 বাইট

%2>"YNEOS"!qJ.BQ_J

এছাড়াও 18 বাইট:

@,"NO""YES"qJ.BQ_J

1

পিএইচপি, প্রতিযোগিতা নয়

আমি স্ট্রিং ব্যবহার না করেই এটি করতে চেয়েছিলাম।

পুনরাবৃত্তি সমাধান, 78 বাইট

for($x=log($n=$argv[1],2);$i<$x&($n>>$i^$n>>$x-$i^1);$i++);echo$i<$x/2?NO:YES;

পুনরাবৃত্তির সমাধান, 113 বাইট

function p($n,$x=0){return$n<2?$n:is_pal(($n&(1<<$x=log($n,2)/2)-1)^$n>>$x+!is_int($x));}echo p($argv[1])?YES:NO;

যদি nবাইনারি প্যালিনড্রোম হয় তবে উপরের অর্ধেক জোর নীচের অর্ধেকটিও বাইনারি প্যালিনড্রোম এবং তদ্বিপরীত।


fR0DDY , 58 বাইট থেকে দুর্দান্ত সি উত্তরের একটি বন্দর

for($x=2*$v=$argv[1];$x/=2;$r=$r*2|$x&1);echo$r-$v?NO:YES;

একটি বাইনারি বিপরীত। কলম্বাস ডিম।


1

রেটিনা , 80 78 বাইট (প্রতিদ্বন্দ্বী)

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

.+
$*
+`(1+)\1
${1}0
01
1
^((.)*?).??((?<-2>.)*$)
$1¶$3
O$^`.(?=.*¶)

^(.*)¶\1

এটি অনলাইনে চেষ্টা করুন

অ্যানারিতে রূপান্তর করুন। বাইনারি রূপান্তর করুন। অর্ধেক সংখ্যাটি কেটে মধ্যম সংখ্যাটি সরিয়ে ফেলুন যদি সেখানে একটি থাকে। প্রথমার্ধকে বিপরীত করুন। উভয় অর্ধেক সমান হলে মিল।


1

জেলি , 12 বাইট (প্রতিদ্বন্দ্বী)

BṚ⁼Bị“YES“NO

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা:

BṚ⁼Bị“YES“NO Main link. Arguments: z.
B            Binary representation of z.
 Ṛ           Reversed.
   B         Binary representation of z.
  ⁼          Check if x is equal to y.
     “YES“NO [['Y', 'E', 'S'], ['N', 'O']]
    ị        xth element of y (1-indexed).

মুদ্রণের আগে পাইথনের strফাংশনটি একটি তালিকার মাধ্যমে ম্যাপ করা হয় এবং তারপরে উপাদানগুলিকে সংমিশ্রিত করা হয়, সুতরাং আপনি দেখুন YESবা NO


0

হ্যাক্স, 164 বাইট

কেবল সিস্টেম প্ল্যাটফর্মের সাথে কাজ করে (পিএইচপি, নেকো, সিপিপি, ইত্যাদি) কমান্ড লাইন আর্গুমেন্টের মাধ্যমে ইনপুট নেয়।

class T{static function main(){var r:Dynamic=Std.parseInt(Sys.args()[0]);var s=r.toString(2);trace(s==[for(i in-s.length+1...1)s.charAt(-i)].join('')?"YES":"NO");}}


-1

জাভা, 97 85 টি অক্ষর

return Integer.toBinaryString(i).equals(new StringBuffer(s).reverse()+"")?"YES":"NO";
    স্ট্রিং s = Integer.toBinaryString (i);
    রিটার্ন s.equals (নতুন স্ট্রিংবফার (গুলি)। রিভার্স () + "")? "হ্যাঁ": "না";

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