किसी संख्या का द्विआधारी प्रतिनिधित्व पैलिंड्रोम है या नहीं?


16

एक पूर्ण कार्यक्रम लिखिए यह जानने के लिए कि किसी संख्या का द्विआधारी प्रतिनिधित्व पैलिंड्रोम है या नहीं?

Sample Input
5

Sample Output
YES

प्रिंट YESअगर द्विआधारी प्रतिनिधित्व विलोमपद NOअन्यथा।


जब यह एक palindrome नहीं है तो आउटपुट क्या होना चाहिए ?
डॉगबर्ट

@ डॉगबर्ट यह उद्धरण के बिना 'नहीं' होना चाहिए।
fR0DDY

आपको कैसे पता चलेगा कि यह एक ताल है? क्योंकि पहले नॉनजरो से "स्ट्रिंग" के अंत तक के मूल्य पैलंड्रोमिक हैं? यह एक चुनौती के रूप में, मेरे लिए बहुत बुरी खुशबू आ रही है।
jcolebrand

1
ज्यादा से ज्यादा I <3 gnibbler के उत्तर के रूप में, यह वास्तव में सबसे छोटा समाधान नहीं है, और टैग किए गए किसी भी प्रश्न [कोड-गोल्फ] को विजेता के रूप में सबसे छोटा समाधान चुनना चाहिए।
क्रिस जस्टर-यंग

इनपुट दिया गया है कैसे?
जोए

जवाबों:


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 है, इसलिए जब आप देखते हैं [:: - 1] यह एक स्ट्रिंग / सूची आदि को उलटने का एक छोटा तरीका है, तो n! = N [:: - 1] सही है (यानी 1) जब n है! एक ताल। इसलिए जब n एक palindrome होता है, तो आपको 'YNEOS' [0 :: 2] मिलता है - 0 से शुरू करें और हर 2 अक्षर को लें। जब n एक पैलिंड्रोम नहीं है तो आपको 'YNEOS' [1 :: 2] मिलता है - 1 से शुरू करें और हर दूसरे चरित्र को लें :)
gnibbler

मुझे लगता है कि लोग स्लाइस ट्रिक के लिए मतदान कर रहे हैं :), ठीक है। : P +1
st0le

4

रूबी, ४१ ३ ९

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

माइकल कोहल के "% b"% के लिए धन्यवाद चाल हो जाता है।


बहुत अच्छा, मुझे यह बहुत पसंद है! एक रचनात्मक तरीके से अंतरिक्ष यान का उपयोग करने के लिए :-) :-)
माइकल कोहल

4

C 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और {}में ;?

@paxdiablo वास्तव में। बदला हुआ। बहुत बहुत धन्यवाद।
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

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

05AB1E, 17 12 बाइट्स (गैर-प्रतिस्पर्धात्मक)

‘NO…Ü‘#EbÂQè

-5 बाइट्स अदनान को धन्यवाद।

इसे ऑनलाइन आज़माएं!


अरे अच्छा! मैंने इसे थोड़ा सा गोल्फ करने की कोशिश की और 12 बाइट्स आया ‘NO…Ü‘#EbÂQè:)।
अदनान

महान! मैं अभी भी नहीं जानता कि कैसे संपीड़ित स्ट्रिंग्स का उपयोग / बनाना है। इसके अलावा, मुझे पता नहीं था कि फंक्शन bin()मौजूद है
acrolith

2
यहाँ वास्तव में एक विस्तृत उदाहरण है , अगर आप रुचि रखते हैं :)।
अदनान

यह उत्तर गैर-प्रतिस्पर्धी है क्योंकि प्रश्न भाषा से पहले का है।
20


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

मत भूलो: हास्केल में, यह वास्तव में बड़ी संख्या के साथ काम करेगा।
21

2
अहम्, यह वास्तव में 79 अक्षर है। ;-)
माइकल कोहल


1

पायथ, 18 बाइट्स

%2>"YNEOS"!qJ.BQ_J

इसके अलावा 18 बाइट्स:

@,"NO""YES"qJ.BQ_J

1

PHP, प्रतिस्पर्धा नहीं

मैं इसे स्ट्रिंग्स का उपयोग किए बिना करना चाहता था।

पुनरावृत्त समाधान, 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एक बाइनरी पैलिंड्रोम है, तो ऊपरी आधा Xor निचला आधा भी एक बाइनरी पैलिंड्रोम है और इसके विपरीत।


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 बाइट्स

केवल सिस्टम प्लेटफॉर्म (php, neko, cpp, आदि) के साथ काम करता है। कमांड लाइन तर्कों के माध्यम से इनपुट लेता है।

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 (नया StringBuffer (s) .reverse () + ""); "YES": "NO";

2
कार्य एक पूर्ण कार्यक्रम के लिए कहता है।
जॉय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.