বাইনারি মোচড়ের সাথে প্যালিনড্রমিক সংখ্যা


29

সতর্কতা: এটি "আরে নয়, আস্কি-কলাতে একটি কেক আঁকুন" চ্যালেঞ্জ! পড়তে থাকুন;)

কিছুকাল আগে এটি আমার জন্মদিন ছিল, আমি এখন 33।

সুতরাং পরিবার ও বন্ধুদের আমন্ত্রণ জানাতে, একটি কেকের উপরে সংখ্যার মতো মোমবাতি স্থাপন, গান গাওয়া এবং উপহার হিসাবে অন্তর্ভুক্ত রয়েছে এই বিশ্রী সামাজিক traditionতিহ্য।

   33   
--------

সংখ্যার পরিবর্তে, আমি বাইনারি সিস্টেমটি স্ট্যান্ডার্ড মোমবাতি লাগাতে ব্যবহার করতে পারি: আমি সেগুলির মধ্যে 6 টি কেকের উপরে রাখি এবং তার মধ্যে দুটি আলোকিত করি।

 100001
--------

আমি দেখতে পাচ্ছি যে আমার বয়সের দশমিক এবং বাইনারি উভয় সংখ্যা প্যালিনড্রোমিক!

চ্যালেঞ্জ

আমি জানতে চাই যে অন্য কোনও নম্বর মোমবাতিযুক্ত একটি কেকের উপর লাগানো যেতে পারে এবং প্যালিনড্রোমিক, দশমিক এবং বাইনারি হতে পারে।

দশমিক এবং বাইনারি উভয় ক্ষেত্রে কোনও সংখ্যা প্যালিনড্রোমিক হয় কিনা তা পরীক্ষা করার জন্য একটি প্রোগ্রাম / ফাংশন লিখুন । তবে অপেক্ষা করুন, আরও রয়েছে: বাইনারি, পরীক্ষার জন্য নেতৃস্থানীয় শূন্যগুলি!

ইনপুট

একটি দশমিক সংখ্যা এক্স আমি পরীক্ষা করতে চান যে এটি জন্মদিন palindromic সঙ্গে 0 <এক্স <2 32 -1 (হ্যাঁ, আমার মাত্রা মানুষের লাইভ খুব দীর্ঘ)

আউটপুট

সত্য যদি এটি ঠিক এই দুটি শর্ত পূরণ করে, অন্যথায়:

  • সংখ্যার দশমিক প্রতিনিধিত্ব একটি স্ট্যান্ডার্ড প্যালিনড্রোম
  • সংখ্যার বাইনারি উপস্থাপনা একটি স্ট্যান্ডার্ড প্যালিনড্রোম এবং শীর্ষস্থানীয় শূন্যগুলি যুক্ত করা এতে সহায়তা করতে পারে

পরীক্ষার মামলা

1 > 1 => Truthy
6 > 110 (0110) => Truthy
9 > 1001 => Truthy
10 > 1010 (01010) => Falsey, 10 is not palindromic
12 => 1100 (001100) => Falsey, 12 is not palindromic
13 => 1101 (...01101) => Falsey, neither 13 nor 1101 are palindromic
14 => 1110 (01110) => Falsey, 14 is not palindromic
33 > 100001 => Truthy
44 > 101100 (..0101100) => Falsey, 101100 is not palindromic
1342177280 > 1010000000000000000000000000000 (00000000000000000000000000001010000000000000000000000000000) => Falsey, 1342177280 is not palindromic (but the binary representation is)
297515792 > 10001101110111011101100010000 (000010001101110111011101100010000) => Truthy

বিধি

শুভকামনা, এবং শেষ পর্যন্ত শুভ জন্মদিন!



6
জন্মদিনের অংশটি অপ্রাসঙ্গিক হওয়ায় শিরোনাম পরিবর্তন করতে পারে।
NoOneIsHere

@ ননআইনি এখানে ভাল জন্মদিনের কেকের মোমবাতি সম্পর্কে চ্যালেঞ্জটি ভাল। এছাড়াও বাইনারি উপস্থাপনে মোচড় রয়েছে তাই এটি "জেনেরিক প্যালিনড্রমিক সংখ্যা" নয়। আপনার মন্তব্যটি যদি উক্ত হয় তবে আমি অন্য শিরোনাম নিয়ে হাজির হব।
গফালাইট

সুতরাং, নিয়ম অনুসারে, 0b01010000000000000000000000000000প্যালেন্ড্রোমিক নয় যেহেতু এটি আরও শূন্য যুক্ত করা প্রয়োজন এবং এভাবে 2 ^ 32-1 ছাড়িয়ে যাবে? এই ক্ষেত্রে এটি 1342177280মিথ্যা পরীক্ষার কেস হিসাবে কিছু যুক্ত করতে সহায়তা করবে ।
ক্রিশ্চিয়ান লুপাস্কু

1
@ w0lf আমি জিরো যুক্ত করার জন্য কোনও সীমা লিখিনি তবে আমি আপনার স্ট্যাকের ওভারফ্লো সমস্যা বুঝতে পেরেছি;) তদুপরি, 1342177280দশমিক প্যালিনড্রোমিক তাই ভুয়া নয়। সম্পাদনা করা হচ্ছে
গৌফালাইট

উত্তর:


17

05 এ বি 1 ই , 7 বাইট

b0Ü‚DíQ

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

ব্যাখ্যা

b         # convert input to binary
 0Ü       # remove trailing zeroes
   ‚      # pair with input
    D     # duplicate
     í    # reverse each (in the copy)
      Q   # check for equality

বিফুরকেট সাহায্য করেনি?
ম্যাজিক অক্টোপাস উরন

@ ম্যাজিক অ্যাক্টোপাস উর্ন: দুর্ভাগ্যক্রমে নয়, কারণ আমি তালিকার প্রতিটি নম্বর উল্টাতে চাই এবং নিজেই তালিকাটি নয়।
এমিগিনা 21

11

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

lambda a:all(c==c[::-1]for c in[str(a),bin(a).strip('0b')])

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

-৩ বাইট রডকে ধন্যবাদ
-৩ বাইট ধন্যবাদ কনর জনস্টনের কাছে



1
স্ট্রিং সহ স্ট্রিপ ব্যবহার করলে একক অক্ষর মুছে ফেলা হবে: [বিন (ক) [২:]। স্ট্রিপ ('0') => বিন (ক)। স্ট্রিপ ('0 বি')] ( tio.run/… "পাইথন 3 - চেষ্টা করুন অনলাইনে ")
Conner জনস্টন

@ কনার জোনস্টন ও শান্ত, ধন্যবাদ!
হাইপারনিউট্রিনো

8

জাভাস্ক্রিপ্ট (ES6), 65 বাইট

রিটার্ন 0বা 1

n=>(g=b=>[...s=n.toString(b)].reverse().join``==s)()&g(2,n/=n&-n)

কিভাবে?

সাহায্যকারী ফাংশন ছ () একটি পূর্ণসংখ্যা লাগে ইনপুট এবং পরীক্ষার কিনা যেমন এন বেস একটি যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে হয় । যদি বি নির্দিষ্ট না করা থাকে তবে এটি পরীক্ষা করার আগে এটি কেবল n কে স্ট্রিংয়ে রূপান্তর করে।

আমরা বাইনারি প্রতিনিধিত্ব চিহ্ন শূন্য পরিত্রাণ পেতে এন অন্তত উল্লেখযোগ্য আলাদা দ্বারা 1 সঙ্গে n&-nএবং বিভাজক এন ফলে পরিমাণ দ্বারা।

মজাদার ঘটনা: এটি সত্য 0কারণ কারণ (0/0).toString(2)সমান "NaN", যা একটি প্যালিনড্রোম। (তবে 0যাইহোক একটি বৈধ ইনপুট নয়))

পরীক্ষার মামলা


5

গণিত, 52 49 বাইট

i=IntegerReverse;i@#==#&&!i[#,2,Range@#]~FreeQ~#&

ওল্ফ্রাম স্যান্ডবক্সে এটি ব্যবহার করে দেখুন

ব্যবহার

f = (i=IntegerReverse;i@#==#&&!i[#,2,Range@#]~FreeQ~#&);

f[6]

True

f /@ {9, 14, 33, 44}

{True, False, True, False}

ব্যাখ্যা

i=IntegerReverse;i@#==#&&!i[#,2,Range@#]~FreeQ~#&

i=IntegerReverse                                   (* Set i to the integer reversing function. *)
                 i@#==#                            (* Check whether the input reversed is equal to input. *)
                       &&                          (* Logical AND *)
                          i[#,2,Range@#]           (* Generate the binary-reversed versions of input, whose lengths *)
                                                   (* (in binary) are `{1..<input>}` *) 
                                                   (* trim or pad 0s to match length *)
                                        ~FreeQ~#   (* Check whether the result is free of the original input *)
                         !                         (* Logical NOT *)

বিল্টিন সহ সংস্করণ PalindromeQ

PalindromeQ@#&&!IntegerReverse[#,2,Range@#]~FreeQ~#&


3

জাপট , 14 বাইট

s ꬩ¢w n2 ¤ê¬

এটি অনলাইন পরীক্ষা!

ব্যাখ্যা

 s ê¬ © ¢   w n2 ¤  ê¬
Us êq &&Us2 w n2 s2 êq   Ungolfed
                         Implicit: U = input integer
Us êq                    Convert U to a string and check if it's a palindrome.
        Us2 w            Convert U to binary and reverse. 
              n2 s2      Convert to a number, then back to binary, to remove extra 0s.
                    êq   Check if this is a palindrome.
      &&                 Return whether both of these conditions were met.

13 বাইটের জন্য বেশ কয়েকটি অনুরূপ সমাধান নিয়ে এসেছিল: sêQ *(¢w)sêQএবংsêQ &¢w n sêQ
শেগি

@ শেগি ধন্যবাদ, তবে দুর্ভাগ্যক্রমে যারা দুজনেই ব্যর্থ হন 297515792(বিপরীত বাইনারি দশমিক রূপান্তরিত
জেএসের


2

এপিএল, 27 31 বাইট

∧/(⌽≡⊢)∘⍕¨{⍵,⊂{⍵/⍨∨\⍵}⌽2⊥⍣¯1⊢⍵}

এটা কেমন চলছে? যুক্তি হিসাবে 6 ব্যবহার করা হচ্ছে ...

      2⊥⍣¯1⊢6 ⍝ get the bit representation
1 1 0

      ⌽2⊥⍣¯1⊢6 ⍝ reverse it (if it's a palindrome, it doesn't matter)
0 1 1

      {⍵/⍨∨\⍵}⌽2⊥⍣¯1⊢6 ⍝ drop off the trailing (now leading 0's)
1 1

      6,⊂{⍵/⍨∨\⍵}⌽2⊥⍣¯1⊢6 ⍝ enclose and concatenate the bits to the original number
┌─┬───┐
│6│1 1│
└─┴───┘

      (⌽≡⊢)∘⍕ ⍝ is a composition of
      ⍕ ⍝ convert to string and 
      (⌽≡⊢) ⍝ palindrome test

      (⌽≡⊢)∘⍕¨6,⊂{⍵/⍨∨\⍵}⌽2⊥⍣¯1⊢6 ⍝ apply it to each of the original argument and the bit representation
  1 1

      ∧/(⌽≡⊢)∘⍕¨6,⊂{⍵/⍨∨\⍵}⌽2⊥⍣¯1⊢6  ⍝ ∧/ tests for all 1's (truth)
  1

ট্রাইএপিএল.আর.জি. এ চেষ্টা করে দেখুন


চশমা অনুসারে, 6 টি একটি ভাল ইনপুট হওয়ার কথা, তবে এক্সপ্রেশনটি মিথ্যা প্রত্যাবর্তন সরবরাহ করে।
lstefano

আহ, ইঁদুর! সমস্যাটি পুরোপুরি না পড়ার জন্য আমি এটাই পাই। ভালো বল ধরা. ধন্যবাদ! আমি কিছুটা দীর্ঘ দিয়ে সংশোধন করেছি, তবে আশা করি আরও সঠিক, সমাধান হবে।
ব্রায়ান বেকার

পিপিসিজিতে আপনাকে স্বাগতম। প্রথম প্রথম পোস্ট! দুর্ভাগ্যক্রমে, আপনার বর্তমান আকারে জমা দেওয়া কোনও প্রোগ্রাম বা ফাংশন নয়। যদিও কোনও উদ্বেগ নয়, আপনি এটিকে একটি ফাংশন হিসাবে তৈরি করতে পারেন তবে বাইরের ধনুর্বন্ধকে পুরো কোডটি আবদ্ধ করতে দেওয়া।
Adám

তিনটি বাইট সংরক্ষণ করুন: {(⌽¨≡⊢)⍕¨⍵,⊂(⌽↓⍨~⊥~)2⊥⍣¯1⊢⍵}(পুরো টেস্ট স্যুটটি চালানোর জন্য একটি লিঙ্ক সরবরাহ করা ভাল ফর্ম)
অ্যাডম

1

আপনি সম্ভবত ȧবা aতার পরিবর্তে চান µকারণ অন্যথায় এটি সর্বদা সত্য হবে।
এরিক দ্য আউটগল্ফার

@ এরিকথ আউটগলফার ধন্যবাদ জানায়
হাইপারনিউট্রিনো

1

ব্র্যাচল্যাগ , 7 বাইট

↔?ḃc↔.↔

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

এটি অনেকটা ...

ব্যাখ্যা

অন্তর্নিহিত ইনপুট এবং আউটপুট সহ, কোডটি হ'ল: ?↔?ḃc↔.↔.

?↔?        The Input is a palindrome
   ḃ       Convert it to the list of its digits in binary
    c      Concatenate it into an integer
     ↔     Reverse it: this causes to remove the trailing 0's
      .↔.  The resulting number is also a palindrome

1

এপিএল (ডায়ালগ ক্লাসিক) , 26 বাইট

{≡∘⌽⍨⍕⍵,⍵,⍨(<\⊂⊢)⌽2⊥⍣¯1⊢⍵}

ব্যাখ্যা

                  2⊥⍣¯1⊢⍵  encode  as binary
                          reverse
           (<\⊂⊢)          partition from first 1
      ⍵,⍵,⍨                prepend and append 
                         turn into text string
≡∘⌽⍨                       match text with its reverse (fX is XfX, where f is a composed function that reverses its right argument and matches with left)

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


ওহ, আপনি গল্ফ বিবি!
অ্যাডাম


1

পাইট , 10 বাইট

[1] সত্য হলে, [0] মিথ্যা হলে ফেরত দেয়

ĐɓƖ₫áĐ₫=ʁ∧

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

ব্যাখ্যা:

              Implicit input
Đ             Duplicate input
ɓ             Get input in binary (as string)
Ɩ             Cast to integer
₫             Reverse the digits (this removes any trailing zeroes)
á             Push the stack into a list
Đ             Duplicate the list
₫             Reverse the digits of each element of the list
=             Are the two lists equal element-wise
ʁ∧            Reduce the list by bitwise AND

0

রেটিনা , 72 বাইট

.+
$*_;$&
+`(_+)\1
$+0
0_
_
0+;
;
+`\b(\w)((\w*)\1)?\b
$3
(\B;\B)|.*
$.1

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। আসল সংখ্যার অলরেডি ডুপ্লিকেট তৈরি করে কাজ করে তবে এর ব্যবহার করে _যাতে এটি বিভ্রান্ত না হয় যেমন একটি ইনপুট দ্বারা 11। আনারি নম্বরটি পরে "বাইনারি" এ রূপান্তরিত হয় এবং পিছনে শূন্যগুলি কেটে ফেলা হয়। প্যালিনড্রোমগুলি পরে ধারাবাহিকভাবে ছাঁটাইয়া যায় এবং শেষ পর্যায়ে পরীক্ষা করা হয় যে কিছু আছে কিনা।


0

গণিত, 70 বাইট

(P=PalindromeQ)[PadRight[#~IntegerDigits~2,#~IntegerExponent~2]]&&P@#&


0

গাইয়া , 10 বাইট

ṙṭ@ḍ2⁻Πbṭ∧

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

ব্যাখ্যা

বাইনারিতে নেতৃস্থানীয় শূন্যগুলি পরীক্ষা করার পরিবর্তে, আমি পিছনের শূন্যগুলি ছাড়াই চেক করি।

ṙ           String representation of number
 ṭ          Is palindromic?
  @         Push input again
   ḍ        Prime factors
    2⁻      Remove all 2s
      Π     Product
       b    Convert to binary
        ṭ   Is palindromic?
         ∧  Logical and

0

সি (জিসিসি) , 105 বাইট

r(n,b){int s=0,c=n;for(;n;n/=b)s=s*b+n%b;return s==c;}
c;f(n){for(c=n;c%2<1;c/=2);return r(n,10)&r(c,2);}

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


আপনাদের উভয়ের ঘটনার প্রতিস্থাপন করতে পারেন return সঙ্গে n=। ( 95 বাইট। )
জোনাথন ফ্রেচ

এবং আপনি অতিরিক্ত বাইট সংরক্ষণের জন্য নতুন লাইনটি সরাতে পারেন।
জোনাথন ফ্রেচ

0

সি # (.নেট কোর) , 130 129 179 173 + 23 বাইট

কয়েকটি জিনিস, অ্যাড মার্টিকে ধন্যবাদ জানাতে যে আপনাকে একটি প্যালিনড্রোমের জন্য সামনে 0 টি প্যাড্ডের জন্য চেক করা দরকার out এবং আমার নিশ্চিত হওয়া দরকার যে আমি x ^ 32 -1 পর্যন্ত পরীক্ষা করতে পারি ।

x=>{var a=Convert.ToString(x,2);var b=x+"";Func<string,bool>p=z=>z.SequenceEqual(z.Reverse());return new int[a.Length].Select((_,z)=>p(new string('0',z)+a)).Any(z=>z)&p(b);}

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


1
আপনি মধ্যে স্থান অপসারণ করতে পারেন returnএবং (জন্য 129 বাইটের
মিস্টার এক্সকোডার

এটি কেবলমাত্র শীর্ষস্থানীয় 0 টি যুক্ত করার সময় কাজ করে তবে সমস্যাটি নির্দিষ্ট করে যে একাধিক শীর্ষস্থানীয় জিরো অনুমোদিত।
এড মার্টি

@ এডমার্টি হ্যান্ডেল করা হয়েছে পাশাপাশি স্ট্যাক ওভারফ্লো বাগও রয়েছে।
ডেনিস.ভেরউইজ

আপনি একটি using System;এবং অনুপস্থিতusing System.Linq
LiefdeWen

বা এটি +23 বাইট?
LiefdeWen

0

পাইথন 2 , 56 বাইট

lambda n:all(s==s[::-1]for s in(`n`,bin(n).strip("0b")))

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

পাইথনের stripপদ্ধতিটি উভয়ের bin(..)আউটপুট এর শীর্ষস্থানীয় 0b এবং বাইনারি সংখ্যার পেছনের শূন্যগুলি অপসারণ করতে ব্যবহার করে (যেহেতু তাদের সর্বদা একটি মিলের বিট থাকবে)।


0

পাইথ , 25 22 19 18 17 বাইট

- 3 6 7 8 বাইটটি আরও ভাষা শিখার মাধ্যমে

Ks_.Bsz&_IzqKs_`K

ব্যাখ্যা:

Ks        Set K to the integer version of...
 _.BsJ    Reverse string of the binary input
&         And
 _Iz      Is the input equal to the reverse of itself?
 qKs_`K   Is K equal to int(the reverse of basically string(K))

আমি নিশ্চিত যে এটিকে অবহেলা করা যায়, আমি এটি নিয়ে কাজ করব।

পরীক্ষা স্যুট



0

অক্টাভা , 68 66 বাইট

@(x)all([d=num2str(x) b=deblank(['' dec2bin(x)-48])]==flip([b d]))

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

অক্টাভা থেকে প্রাথমিক অফার।

আমরা মূলত দশমিক স্ট্রিং হিসাবে নম্বর এবং বাইনারি স্ট্রিং হিসাবে নম্বরটি অনুসরণ করে 0 টি সরিয়ে একটি অ্যারে তৈরি করি। তারপরে আমরা স্ট্রিংয়ের সাথে একই সাথে বাইনারি এবং দশমিক সংখ্যাগুলি উল্টিয়ে একটি অ্যারে তৈরি করি। অবশেষে উভয় অ্যারে তুলনা করা হয় এবং ফলাফলটি সত্য হয় যদি সেগুলি মিলিত হয় (উভয় প্যালিনড্রোম) বা মিথ্যা না হয় তবে (এক বা উভয়ই প্যালিনড্রোম নয়)।


  • এর flipপরিবর্তে 2 বাইট ব্যবহার করে সংরক্ষণ করুন fliplr

0

এপিএল 2 (ডায়ালগ নয়), 36 বাইট

(N≡⌽N←⍕N)^∨/(((⌽B)⍳1)↓B)⍷B←(32⍴2)⊤N←

প্রথমে বি কে 32-বিটের প্রতিনিধিত্ব করুন:

B←(32⍴2)⊤N

তারপরে বি মিরর করুন এবং 1 ম এর অবস্থানটি সন্ধান করুন:

(⌽B)⍳1

তারপরে বি থেকে অনেকগুলি অবস্থান বাদ দিন এটি শীর্ষস্থানীয় 0 এর সঠিক সংখ্যাটি সংরক্ষণ করবে।

তারপরে ফিনড বি এর নিজস্ব আয়না রয়েছে কিনা তা দেখতে FIND এবং একটি OR- নিদান করুন perform

এখন আসুন এন এর দশমিক। বাম-সর্বাধিক বন্ধনীযুক্ত অভিব্যক্তি N কে একটি অক্ষর ভেক্টরে রূপান্তরিত করে এবং এটি নিজস্ব আয়না মেলে কিনা তা পরীক্ষা করে।

অবশেষে, একটি এবং দুটি চেকগুলিতে যোগদান করে।


এপিএল 2 তে আমি একটি ঝরঝরে ল্যাম্বডা তৈরি করতে পারি না তাই আমি ওয়ান-লাইনার লিখেছি এবং অ্যাসাইনমেন্টের তীরটি অন্তর্ভুক্ত করেছি। আশা করি এটি প্রতারণামূলক নয়।


1
পিপিসিজিতে আপনাকে স্বাগতম!
মার্টিন এন্ডার

পিপিসিজিতে আপনাকে স্বাগতম! কম প্রতারণামূলক সংস্করণের জন্য, আপনি কি এর পরিবর্তে একটি সম্পূর্ণ প্রোগ্রাম তৈরি করতে কোয়াড ( ) যুক্ত করতে পারবেন ? এছাড়াও, আপনি কি সংক্ষিপ্ত করতে সক্ষম (N≡⌽N←⍕N)^∨/(B↓⍨1⍳⍨⌽B)⍷B←(32⍴2)⊤N←⎕?
এরিক আউটগল্ফার

এরিক, পরীক্ষার জন্য ধন্যবাদ! আমি নিশ্চিত এটির উন্নতি হতে পারে তবে এপিএল 2 এ আমার ig বিড়ম্বনা নেই।
ম্যাপো

0

জাভা 8, 105 104 বাইট

n->{String t=n+n.toString(n,2).replaceAll("0*$","")+n;return t.contains(new StringBuffer(t).reverse());}

ব্যাখ্যা:

এখানে চেষ্টা করুন।

n->{                         // Method with Integer parameter and boolean return-type
  String t=n                 //  Create a String `t` starting with the input Integer
    +n.toString(n,2)         //  Append the binary representation of the input Integer,
      .replaceAll("0*$","")  //   with all trailing zeroes removed
    +n;                      //  Append the input Integer again
  return t.contains(new StringBuffer(t).reverse());
                             //  Return true if `t` is a palindrome
}                            // End of method
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.