এটি কি একটি সাইক্লপস নম্বর? "কেউ জানে না!


66

টাস্ক:

একটি পূর্ণসংখ্যার ইনপুট দেওয়া হয়েছে, এটি সাইক্লোপ নম্বর কিনা তা খুঁজে বের করুন।

একটি সাইক্লোপ নম্বর কী, আপনি জিজ্ঞাসা করতে পারেন? ঠিক আছে, এটি এমন একটি সংখ্যা যার বাইনারি প্রতিনিধিত্ব কেবলমাত্র একটিতে 0রয়েছে!

পরীক্ষার কেস:

Input | Output | Binary  | Explanation
--------------------------------------
0     | truthy | 0       | only one zero at "center"
1     | falsy  | 1       | contains no zeroes
5     | truthy | 101     | only one zero at center
9     | falsy  | 1001    | contains two zeroes (even though both are at the center)
10    | falsy  | 1010    | contains two zeroes
27    | truthy | 11011   | only one zero at center
85    | falsy  | 1010101 | contains three zeroes
101   | falsy  | 1100101 | contains three zeroes
111   | falsy  | 1101111 | only one zero, not at center
119   | truthy | 1110111 | only one zero at center

ইনপুট:

  • একটি পূর্ণসংখ্যা বা সমমানের প্রকার। ( int, long, decimal, ইত্যাদি)

  • অনুমান করুন যে যদি ইনপুট ফলাফলগুলি একটি পূর্ণসংখ্যার ওভারফ্লো বা অন্যান্য অযাচিত সমস্যা সমাধান করে তবে সেই ইনপুটটি মূল্যায়ন করতে হবে না।

আউটপুট:

  • সত্যবাদী বা মিথ্যা।

  • সত্যবাদী / মিথ্যা আউটপুট অবশ্যই সত্য / মিথ্যাচারের জন্য ব্যবহৃত ভাষার স্পেসিফিকেশনগুলি পূরণ করতে পারে। (যেমন সি এর 0মতো মিথ্যা, শূন্যের মতোই সত্য)

চ্যালেঞ্জ বিধি:

  • 0 এর চেয়ে কম ইনপুট মিথ্যা বলে মনে করা হয় এবং তাই এটি মূল্যায়ন করতে হয় না।

  • সংখ্যার বাইনারি উপস্থাপনার দৈর্ঘ্য যদি সমান হয় তবে সংখ্যাটি সাইক্লপস নম্বর হতে পারে না।

সাধারণ নিয়ম:


এটি আমার প্রথম প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ চ্যালেঞ্জ, সুতরাং কীভাবে আমার উন্নতি করা উচিত সে সম্পর্কে কোনও প্রতিক্রিয়া অনেক প্রশংসা হবে!


25
দ্রষ্টব্য: এই হল A129868
TSH

35
শিরোনামে 2800 বছরের দেরিতে পপ সংস্কৃতি রেফারেন্সের জন্য +1
সানাইচাইজস

পরীক্ষিত সর্বাধিক সংখ্যাটি কী?
সার্ভারফ্রোগ

@ সার্ভারফ্রোগ যেহেতু আমি কোনও সীমা নির্দিষ্ট করে নেই, ধরে নিই যে কোনও ধনাত্মক পূর্ণসংখ্যা পরীক্ষা করা যেতে পারে।
তাউ

বাইনারি ইনপুট অনুমোদিত?
কিওয়ারটি

উত্তর:


11

জাপট, 8 বাইট

1¥¢q0 äè

এটি অনলাইনে চালান

ব্যাখ্যা:

1¥¢q0 äè   
                                                              119
  ¢          // Convert the input into a binary string        "1110111"
   q0        // Split the string on "0"                       ["111","111"]
      ä      // Reduce each item by:                            a     b
       è     //   Seeing how many times a is found in b       [1]
 1¥          // == 1; See if the result equals 1              True                                         

বাইনারি স্ট্রিংটি বিভক্ত করার ধারণাটি রয়েছে 0, যা কেবল দুটি থাকলে দুটি আইটেম পাওয়া যায় 0। তারপরে আমরা দেখতে পাই যে প্রথম আইটেমটি প্যালিনড্রোমিক কিনা তা নিশ্চিত করতে দ্বিতীয়টির সাথে মেলে কিনা। যদি বাইনারি স্ট্রিংয়ে একাধিক 0গুলি থাকে তবে কমানোয় একটি বহু-আইটেম অ্যারে ফিরিয়ে দেয় এবং এটি শর্তটিকে ব্যর্থ করবে ==1। বাইনারি স্ট্রিং এক রয়েছে এমন 0কিন্তু palindromic নয়, äèফিরে আসবে 0কারণ bরয়েছে 0এর ম্যাচ a


1
আমার প্রাক-ক্যাফিনেটেড মস্তিষ্কটি কয়েক সেকেন্ড সময় নিয়েছিল এখানে কী ঘটছে তা দেখতে! সুন্দরভাবে সম্পন্ন. কাজ করা উচিত।
শেগি

1
আমি জাপটকে চিনি না, তবে আমি যদি সঠিকভাবে বুঝতে পারি তবে এটি নিম্নলিখিতগুলি করে: ¤= বাইনারি রূপান্তর; q0= 0 এ বিভক্ত; äèআমি পুরোপুরি নিশ্চিত নই ..; এবং পতাকা -Nতালিকাগুলিতে রূপান্তরিত করে NaNতবে পাতা 0এবং 1একই। জন্য äèঅংশ দেখতে পাচ্ছি যে 119হয় [111,111]বিভক্ত, যার পরে äèপরিবর্তিত 1; এবং 85হয় [1,1,1,1]বিভক্ত, যার পরে äèপরিবর্তিত [1,1,1]। আপনি কিভাবে .ä("è")কাজ করে ব্যাখ্যা করতে পারেন ?
কেভিন ক্রুইজসেন

2
@ কেভিন ক্রুজসেন আমি একটি ব্যাখ্যা যুক্ত করেছি। আমি আশা করি এটি সাহায্য করবে.
অলিভার

1
NaNজাপটে কি মিথ্যা? (অর্থাত যদি আপনি একটি যদি 'অন্য যে সঙ্গে শর্ত হিসাবে হলে মৃত্যুদন্ড কার্যকর? "Truthy / falsy আউটপুট truthy / falsy জন্য ব্যবহৃত ভাষা এর বিশেষ উল্লেখ পূরণ করতে হবে" সঞ্চালন করা) এ ছাড়া 2উৎপাদনের 2falsey যা আমার সন্দেহ (কিন্তু যদি হতে পারে Japt 05AB1E এর মতো)।
জোনাথন অ্যালান

1
জেএস ধরে 0ধরেছে যে ব্যতীত অন্য কোনও পূর্ণসংখ্যা সত্যবাদী বলে বিবেচিত হয় ... তবে, যদি সত্যবাদী হিসাবে 2প্রত্যাবর্তন 2হয় তবে এই জমাটি পুনরায় কাজ করার প্রয়োজন হতে পারে।
তাউ

21

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

lambda n:(2*n^2*n+3)**2==8*n+9

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

দ্রষ্টব্য এটি 2*n^2*n+3হ'ল বিটওয়াইজ জোর 2*nএবং 2*n+3কারণ এটি পাইথনের অপারেটর অগ্রাধিকার।


1
সাইক্লোপ সংখ্যার জন্য lambda n:(2*n^2*n+3)**2-8*n-9রিটার্ন মান সহ, এটি কী প্রত্যাবর্তনযোগ্য হবে 0?
এরিক ডুমিনিল

2
এই উৎপাদ TRUEজন্যn = -1
user2390246

3
@ ব্যবহারকারী 2390246 এই সমস্যাটি স্পষ্টত নেতিবাচকদের জন্য নয় - যদি এটি হয় তবে সমস্ত গ্রহণযোগ্য সমাধানগুলি নেতিবাচক হওয়া দরকার (এবং যেভাবে পাইথন পূর্ণসংখ্যার প্রয়োগ করে তার অর্থ হবে যে কোনও সমাধান
পাইথনকে

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

2
@ user2390246 সমস্যাটি সম্পাদনা করার পরে এই বিষয়টি স্পষ্ট করতে যে আমাদের কোডটি নেতিবাচকদের জন্য কাজ করার দরকার নেই। এটি যুক্ত করে 2 বাইটের জন্য পরিচালনা করা যেতে পারে >1
xnor

18

x86 মেশিন কোড, 17 বাইট

8D 47 01 31 F8 89 C2 F7 D2 0F AF C2 8D 44 78 02 C3

উপরের বাইটগুলি এমন একটি ফাংশন সংজ্ঞায়িত করে যা একটি 32-বিট পূর্ণসংখ্যার ইনপুট মান গ্রহণ করে ( EDIউদাহরণস্বরূপ একটি সাধারণ সিস্টেম ভি কলিং কনভেনশন অনুসরণ করে রেজিস্টারে, তবে আপনি ফলাফলের আকারকে প্রভাবিত না করেই চেয়েছিলেন যে কোনও ইনপুট রেজিস্টার আপনি বেছে নিতে পারেন কোড) এবং EAXইনপুট মানটি একটি সাইক্লোপস নম্বর কিনা তা নির্দেশ করে ( রেজিস্টারে) ফলাফল দেয়।

ইনপুটটিকে একটি স্বাক্ষরবিহীন পূর্ণসংখ্যার হিসাবে ধরে নেওয়া হয়, যেহেতু চ্যালেঞ্জের বিধি অনুসারে আমরা নেতিবাচক মানগুলি উপেক্ষা করতে পারি।

সিদ্ধান্তের যুক্তি নীলের উত্তর থেকে ধার করা হয়েছে : যেহেতু একটি সাইক্লোপ সংখ্যার ফর্মটি এন=(2+ +1)(2-1-1) , তাই আমরা ইনপুটটি পরীক্ষা করতে বিট-টুইডলিং ক্রিয়াকলাপ ব্যবহার করতে পারি।

দ্রষ্টব্য: প্রত্যাবর্তনের মান সত্যবাদী / মিথ্যা, কিন্তু শব্দার্থবিজ্ঞানগুলি বিপরীত হয়েছে, যেমন ফাংশনটি একটি সাইক্লোপ সংখ্যার জন্য ফালসি ফিরে আসবে। আমি দাবি করি এটি আইনী কারণ মেশিন কোডের "সত্যবাদী / মিথ্যাচারের জন্য নির্দিষ্টকরণ" নেই, যা প্রশ্নের প্রয়োজনীয়তা। (বিকল্প ধারার জন্য নীচে দেখুন যদি আপনি মনে করেন এটি প্রতারণা করছে))

অ্যাসেম্বলি ভাষা স্মৃতিবিদ্যায়, এটি হ'ল:

; EDI = input value
; EAX = output value (0 == Cyclops number)
8D 47 01           lea    eax, [edi + 1]          ; \ EAX = ((EDI + 1) ^ EDI)
31 F8              xor    eax, edi                ; /
89 C2              mov    edx, eax                ; \ EDX = ~EAX
F7 D2              not    edx                     ; /
0F AF C2           imul   eax, edx                ; EAX *= EDX
8D 44 78 02        lea    eax, [eax + edi*2 + 2]  ; EAX  = (EAX + (EDI * 2) + 2)
C3                 ret                            ; return, with EAX == 0 for Cyclops number

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


প্রতিশ্রুতি অনুসারে, আপনি যদি মনে করেন যে সত্যের / মিথ্যাচারের শব্দার্থক শব্দগুলি এমনকি এমন কোনও মেশিন কোডেও উল্টানো প্রতারণা করছে যেখানে সত্যিকারের মান বা কনভেনশন নেই তবে মোট 21 বাইটের জন্য আরও তিনটি বাইট যুক্ত করুন :

; EDI = input value
; AL  = output value (1 == Cyclops number)
8D 47 01           lea    eax, [edi + 1]          ; \ EAX = ((EDI + 1) ^ EDI)
31 F8              xor    eax, edi                ; /
89 C2              mov    edx, eax                ; \ EDX = ~EAX
F7 D2              not    edx                     ; /
0F AF C2           imul   eax, edx                ; EAX *= EDX
8D 44 78 01        lea    eax, [eax + edi*2 + 1]  ; EAX  = (EAX + (EDI * 2) + 1)
40                 inc    eax                     ; EAX += 1
0F 94 C0           setz   al                      ; AL = ((EAX == 0) ? 1 : 0)
C3                 ret                            ; return, with AL == 1 for Cyclops number

এই কোডের প্রথম অর্ধটি মূল হিসাবে একই ( imulনির্দেশের নীচে)। leaপ্রায় একই, কিন্তু এর পরিবর্তে একটি ধ্রুবক 2 যোগ করার, এটি শুধুমাত্র একটি ধ্রুবক 1. এটা এ কারণে যে নিম্নলিখিত এর যোগ incনির্দেশ মান বৃদ্ধি EAXপতাকা সেট করার জন্য 1 রেজিস্টার। যদি "শূন্য" পতাকা সেট করা থাকে তবে setzনির্দেশটি AL1 তে সেট করা হবে ; অন্যথায়, AL0 তে সেট করা হবে This এটি স্ট্যান্ডার্ড পদ্ধতিটি যা কোনও সি সংকলক একটি ফেরত দেওয়ার জন্য মেশিন কোড উত্পন্ন করবে bool

leaনির্দেশিকায় যুক্ত হওয়া ধ্রুবকটি পরিবর্তন করা স্পষ্টতই কোডের আকার পরিবর্তন করে না এবং incনির্দেশটি খুব ছোট (কেবলমাত্র 1 বাইট), তবে setzনির্দেশটি হ'ল বর্ধিত 3 বাইট। দুর্ভাগ্যক্রমে, আমি এটি লেখার কোনও ছোট উপায় সম্পর্কে ভাবতে পারি না।


4
এটি এত তাড়াতাড়ি, আমার কাছে মনে হয় এটি একটি বড় মূল্য পর্যন্ত সমস্ত সংখ্যা পরীক্ষা করে দেখানোর উপযুক্ত to এটি অনলাইনে চেষ্টা করুন!
ডেডকোড

এটি আসলে আরও দ্রুত হওয়া উচিত, @ ডেডকোড। :-) ইনলাইন অ্যাসেমব্লির সাহায্যে এটি প্রদর্শনের ফলে কিছুটা ওভারহেড যুক্ত হয়েছে, তবে আমার পুরানো কৌশলটি বাইটের একটি স্ট্রিংয়ে ঝাঁপিয়ে পড়ার (উদাহরণস্বরূপ, এই উত্তরটি ) টিআইওর সংকলকটির সাথে কাজ করা বন্ধ করে দিয়েছে এবং ফলস্বরূপ সমাবেশে ফলাফল প্রিন্ট করার কোড লেখার বিষয়টি অনেক বেশি বিরক্ত করার জন্য কাজ। এটি সেই অস্বাভাবিক ক্ষেত্রে একটি, যেখানে আকারের জন্য অনুকূলকরণ করা গতির জন্য অনুকূলিতকরণের সাথে বৈপরীত্য নয়। আপনি যদি আকারের চেয়ে বেশি গতিতে যাচ্ছিলেন তবে আপনি asm এ কোডটি লিখতে চাইলে এটি বেশ কার্যকর।
কোডি গ্রে

ঐক্যমত্য, এটি অগ্রহণযোগ্য নয় এ এস এম জমা দেবার সময় একটি স্থিতি পতাকা ফিরে যাওয়ার codegolf.stackexchange.com/a/165020/84624 এবং stackoverflow.com/questions/48381234/... । যদি তা হয় তবে আপনি নিজের দ্বিতীয় উত্তর থেকে 3 টি করতে পারেন।
640KB

9

রেজেক্স (ইসিএমএসক্রিপ্ট), 60 58 57 60 58 বাইট

ইনপুট এনx এর স্ট্রিংয়ের দৈর্ঘ্য হিসাবে অকার্যকর ।

স্পিলার সতর্কতা : বর্গমূলের জন্য, এই রেজেক্সটি সাধারণ গুণিত অ্যালগরিদমের একটি বৈকল্পিক ব্যবহার করে, যা অ-স্পষ্ট এবং এটি আপনার নিজের পক্ষে কাজ করার জন্য একটি ফলপ্রসূ ধাঁধা হতে পারে। আরও তথ্যের জন্য, একটি রোকো নম্বর খুঁজুন এ আলগোরিদিমের এই ফর্মটির জন্য একটি ব্যাখ্যা দেখুন ।

-2 বাইট জন্য অনুসন্ধান backtracking অনুমতি দিয়ে z- র
-1 বাইট ময়লা ধন্যবাদ , জন্য অনুসন্ধান দ্বারা z- র তদ্বিপরীত পরিবর্তে বৃহত্তম করার ক্ষুদ্রতম থেকে
+3 বাইট শূন্য হ্যান্ডেল করতে
lookahead বাহিরে বর্গমূল ক্যাপচার সরিয়ে -2 বাইট

z- রএন=2(এন-z- র)+ +z- র+ +1এন

^(x*)(?!(x(xx)+)\2*$)(x(x*))(?=(?=(\4*)\5+$)\4*$\6)x\1$|^$

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

^                 # N = tail
(x*)              # tail = Z, with the smallest value that satisfies the following
                  # assertions (which is no different from the largest value that
                  # would satisfy them, since no more than one value can do so);
                  # \1 = N - Z

(?!(x(xx)+)\2*$)  # Assert Z is a power of 2

# Assert Z is a perfect square, and take its square root
(x(x*))           # \4 = square root of Z; \5 = \4 - 1; tail = N - \1 - \4
(?=(\4*)\5+$)     # iff \4*\4 == Z, then the first match here must result in \6==0
(?=\4*$\6)        # test for divisibility by \4 and for \6==0 simultaneously

# Assert that N == \1*2 + \4 + 1. If this fails, then due to a golf optimization,
# the regex engine will backtrack into the capturing of \4, and try all smaller
# values to see if they are the square root of Z; all of these smaller values will
# fail, because the \4*\4==Z multiplication test only matches for one unique value
# of \4.
x\1$

|^$               # Match N==0, because the above algorithm does not

ওপি স্পষ্ট করে জানিয়েছিল যে 0 সত্যবাদী হওয়া উচিত, সুতরাং এটি বর্তমানে চ্যালেঞ্জের সমাধান করে না।
গ্রিমি

1
একটি সহজ ^(1*)0\1$যথেষ্ট না?
মার্জিন অবজ্ঞানের

4
কেবলমাত্র ইনপুটটি বাইনারি হলেই হবে এটি প্রচুর চ্যালেঞ্জকে তুচ্ছ করে তুলবে; প্রযোজ্য যেখানে অবিচ্ছিন্নভাবে ইনপুট ইনপুট ব্যবহার করা আরও আকর্ষণীয়।
ডেডকোড

9

জাভাস্ক্রিপ্ট (নোড.জেএস) , 20 বাইট

p=>~p==(p^=p+1)*~p/2

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

হয়তো এটি সঠিক, সম্ভবত।

ধন্যবাদ গ্রিমি, 1 বাইট সংরক্ষণ করা হয়েছে।


জাভাস্ক্রিপ্ট (নোড.জেএস) , 32 বাইট

f=(p,q)=>p&1?f(p/2,q+q|2):!(p^q)

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


জাভাস্ক্রিপ্ট (নোড.জেএস) , 34 বাইট

p=>/^(1*)0\1$/.test(p.toString(2))

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



পরীক্ষা, মিল নেই
edc65

1
@ edc65 আপনি কি কোনও ব্যর্থ টেস্টকেস খুঁজে পেয়েছেন?
tsh

2
@ টিএসটি .testনয়.match
এএসসিআইআই-কেবল

@ ASCII- কেবল বাহ, যুক্তিসঙ্গত শব্দ ... আপনি এটি কীভাবে পড়তে পারেন?
tsh



7

ম্যাথমেটিকা ​​(ওল্ফ্রাম ভাষা), 32 31 বাইট

1 বাইট সংরক্ষিত হয়েছে J42161217 এর জন্য ধন্যবাদ!

OddQ@Log2[#+Floor@Sqrt[#/2]+2]&

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

খাঁটি ফাংশন একটি ইনপুট হিসাবে পূর্বাভাস গ্রহণ এবং ফিরে Trueবা False। (মজার প্রমাণ করার!) আসলে উপর ভিত্তি করে একটি সংখ্যা nসাইক্লপ্স হয় যদি এবং কেবল যদি nবর্গমূল প্লাস n/2প্লাস 22. একটি বিজোড় ক্ষমতায় নিচে চক্রের (এক প্রতিস্থাপন করতে পারেন Floorহয় এর Ceilingবা Roundযতদিন এক এছাড়াও প্রতিস্থাপন হিসাবে +2দ্বারা +1।) Trueইনপুট ফেরত 0


1
আপনি ব্যবহার করে 1 বাইট সংরক্ষণ করতে পারবেনLog2[#+Floor@Sqrt...
J42161217

এবং এর √()পরিবর্তে আরও 1 জনSqrt[]
এপ্রিন্ট

বাইট গণনাটি কি সঠিক? টিআইও বর্তমান প্রোগ্রামের জন্য 32 বাইট দেয়।
mbomb007

@ mbomb007 আহ, টিআইও J42161217 এর 1 বাইট সঞ্চয় অন্তর্ভুক্ত করেনি। সংশোধন করা হয়েছে।
গ্রেগ মার্টিন

অ্যাটিনেটের পরামর্শ অনুসারে আপনি কী ব্যবহার না করার কোনও কারণ ছিল?
mbomb007

6

খুশী হলাম। বিভিন্ন অ্যাসাইনমেন্ট এবং অগ্রাধিকার সহ একটি সংক্ষিপ্ত সংস্করণ থাকতে পারে, তবে আমি কোনও খুঁজে পেলাম না।
এরিক ডুমিনিল

5

জাপট, 8 বাইট

¢ðT ¥¢Êz

আমার জমাটি ঠিক করার জন্য লুইস ফেলিপ দে জেসুস মুনোজকে ধন্যবাদ!

অনলাইনে চেষ্টা করে দেখুন!

পুরাতন রেজেক্স-ভিত্তিক সমাধান, 15 বাইট

¤f/^(1*)0\1$/ l

সত্যের জন্য 1, মিথ্যা হিসাবে 0 প্রদান করে।

অনলাইনে চেষ্টা করে দেখুন!


ভাল খেলেছি, আমার কিছুটা সময় নিয়মিত ভাব প্রকাশ করা উচিত। :) +1
কুইনটেক

1
@Quintec Regex সন্ত্রস্ত :) হল
অজ্ঞতা প্রতিমূর্তি

আপডেট: সংক্ষিপ্ততর উপায় খুঁজে পেয়েছি :)
কুইনটেক


1
@ লুইসেলপডিজেস মুনোজ ধন্যবাদ, অপারেটরটির এটি একটি দুর্দান্ত ব্যবহার ==!
অজ্ঞতার প্রতিমূর্তি

4

জেলি ,  8  7 বাইট

-1 এরিক দ্য আউটগোল্ফারকে ধন্যবাদ (এর ŒḂপরিবর্তে , প্যালিনড্রোমে অন্তর্নির্মিত ব্যবহার করুন ⁼Ṛ$)

B¬ŒḂ⁼SƊ

একটি পূর্ণসংখ্যার লিঙ্ক একটি পূর্ণসংখ্যা গ্রহণ করে যা ফল দেয় 1(সত্যবাদী) বা 0(মিথ্যা)।

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

কিভাবে?

B¬ŒḂ⁼SƊ - Link: integer             e.g. 1    9          13         119
B       - to base 2                      [1]  [1,0,0,1]  [1,1,0,1]  [1,1,1,0,1,1,1]
 ¬      - logical NOT (vectorises)       [0]  [0,1,1,0]  [0,0,1,0]  [0,0,0,1,0,0,0]
      Ɗ - last three links as a monad:
  ŒḂ    -   is a palindrome?             1    1          0          1
     S  -   sum                          0    2          1          1
    ⁼   -   equal?                       0    0          0          1

দেখে মনে হচ্ছে আপনার আসলে আমার কাছে চতুর ধারণা ছিল, তবে এর চতুরতা স্পষ্ট নয় ( Bċ0⁼1ȧŒḂএটি 8 বাইটও), -1 এর ⁼Ṛ$মতই ŒḂ। এছাড়াও, আপনার নেতিবাচক সংখ্যাগুলি পরিচালনা করার দরকার নেই।
এরিক আউটগলফার

ধন্যবাদ এরিক, প্যালিনড্রোম বিল্ট-ইন কোনও কারণে আমার মন কেড়ে নিয়েছে!
জোনাথন অ্যালান

প্রকৃতপক্ষে, আপনি ṚƑআজকাল এর জায়গায়ও ব্যবহার করতে পারেন , তাই আপনি এটির মতো (সর্বাধিক গুরুত্বপূর্ণ Ƒ) মনে রাখতে পারেন ।
এরিক আউটগল্ফার


4

Regex (ECMAScript), 53 47 বাইট

-6 বাইটস উভয়ই ডেডকোড এবং গ্রিমিকে ধন্যবাদ

^((?=(x*?)(\2((x+)x(?=\5$))+x$))(?!\2{6})\3x)*$

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


আপনার রেজেক্সকে সম্পূর্ণরূপে মন্তব্য ও প্রমাণ করার সময় (এটি এখনও সম্পূর্ণ হয়নি), আমি এটি 50 বাইটে নামিয়ে পেয়েছি: ^((?=(x(x*?))(\3((x+)(?=\6$))+xx$))(?!\2{6})x\4)*$( অনলাইনে এটি চেষ্টা করুন! )
ডেডকোড

4

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

ḃD↔Dḍ×ᵐ≠

এটি এমন একটি শিকারী যা সফল হয় যদি এর ইনপুটটি সাইক্লোপস নম্বর হয় এবং যদি এর ইনপুটটি সাইক্লোপ নম্বর না হয় তবে ব্যর্থ হয়। সাফল্য / ব্যর্থতা ব্র্যাচল্যাজে সর্বাধিক মৌলিক সত্য / মিথ্যা ধারণা।

এটি অনলাইন চেষ্টা করুন! অথবা, 10000 পর্যন্ত সমস্ত সত্যবাদী ফলাফল খুঁজে বার করুন

ব্যাখ্যা

          Input is an integer
ḃ         Get its binary representation, a list of 1's and 0's
 D        Call that list D
  ↔       When reversed...
   D      It's the same value D
    ḍ     Dichotomize: break the list into two halves
          One of these halves should be all 1's; the other should contain the 0
     ×ᵐ   Get the product of each half
       ≠  Verify that the two products are not equal

এটি তখনই সফল হয় যখন একটি সাইক্লোপ নম্বর দেওয়া হয়, কারণ:

  • যদি বাইনারি প্রতিনিধিত্ব একটি প্যালিনড্রোম না হয় D↔Dতবে ব্যর্থ হবে; এরপরে কী, আমরা ধরে নিতে পারি এটি একটি প্যালিনড্রোম।
  • যদি একের বেশি শূন্য থাকে তবে উভয় অংশেই কমপক্ষে একটি শূন্য থাকবে। সুতরাং পণ্যগুলি উভয়ই শূন্য ×ᵐ≠হবে এবং ব্যর্থ হবে।
  • যদি শূন্য না থাকে তবে উভয় অংশেই কেবল একটি থাকবে। সুতরাং পণ্যগুলি উভয়ই এক ×ᵐ≠হবে এবং ব্যর্থ হবে।
  • এটি সেই ক্ষেত্রে ছেড়ে দেয় যেখানে ঠিক এক শূন্য থাকে; যেহেতু আমরা ইতিমধ্যে জানি যে আমাদের একটি প্যালিনড্রোম রয়েছে, তাই এটি অবশ্যই কেন্দ্রীয় বিট। এটি অর্ধেক প্রদর্শিত হবে, যার ফলে অর্ধেকের পণ্যটি শূন্য হয়ে যাবে; অন্য অর্ধেকটিতে সমস্ত থাকবে, সুতরাং এর পণ্যটি এক হবে। তারপরে আমাদের 1 ≠ 0 রয়েছে, ×ᵐ≠সফল হয় এবং পুরো প্রাকটিক সফল হয়।

3

রুবি , 27 24 বাইট

বাইনারিতে রূপান্তর করুন এবং একটি রেজেক্সের সাথে চেক করুন। রিটার্নস 0সত্য, যদি nilযদি মিথ্যা।

-3 বাইট জিবি ধন্যবাদ ।

->n{"%b"%n=~/^(1*)0\1$/}

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

আরও দুটি বাইটের জন্য পাইথন সমাধানের সরাসরি বন্দর রয়েছে:

->n{(2*n^2*n+3)**2==8*n+9}

@ জিবি আপনাকে অনেক ধন্যবাদ!
এরিক ডুমিনিল

3

05 এ বি 1 ই , 8 (বা 9) বাইট

bD0¢sÂQ*

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

সত্য 1হলে ফিরে আসে; 0বা 1মিথ্যা ছাড়া অন্য কোনও ধনাত্মক পূর্ণসংখ্যা । 05AB1E-এ কেবল 1সত্যবাদী এবং অন্য সমস্ত কিছু মিথ্যা, তবে আমি নিশ্চিত নই যে এটি কোনও অনুমোদিত আউটপুট, বা যদি আউটপুট দুটি সামঞ্জস্যপূর্ণ এবং অনন্য মান হওয়া উচিত। যদি দ্বিতীয়টি হয় তবে একটি পিছন Θযোগ করা যায় তাই 1হয়ে ওঠার বাইরে সমস্ত আউটপুট 0:

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

b     # Convert the (implicit) input-integer to a binary-string
 D    # Duplicate it
  0¢  # Count the amount of 0s
 s    # Swap to get the binary again
  ÂQ  # Check if it's a palindrome
 *    # Multiply both (and output implicitly)

  Θ   # Optionally: check if this is truthy (==1),
      # resulting in truthy (1) or falsey (0)

একটি গাণিতিক পদ্ধতির 10 বাইট হবে:

LoD<s·>*Iå

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

একটি(এন)=(2এন-1)*(2*2এন+ +1)

L        # Create a list in the range [1, (implicit) input-integer]
 o       # For each integer in the list, take 2 to the power this integer
  D<     # Create a copy, and decrease each value by 1
  s·     # Get the copied list again, and double each value
    >    # Then increase each value by 1
  *      # Multiply the numbers at the same indices in both lists
     Iå  # Check if the input-integer is in this list
         # (and output the result implicitly)

রয়ে 1যেমন truthy এবং falsy হিসাবে অন্যান্য সমস্ত নম্বর এই প্রতিদ্বন্দ্বিতায় জন্য গ্রহণযোগ্য, কারণ অন্যান্য ভাষায় (যেমন সি এবং TI তৈরি-বেসিক) অনুরূপ truthy / falsy সংজ্ঞা (0 / উভয়ের জন্য নন-জিরো) আছে। যতক্ষণ সত্য বলে বিবেচিত হয় বা ভাষার স্পষ্টতার সাথে মিথ্যাচার মেলে ততক্ষণ তা নিখুঁত খেলা।
তাউ

3

এক্সেল, 97 63 বাইট

=A1=2*4^(ROUND(LOG(A1,4),0))-2^(ROUND(LOG(A1,4),0))-1

2 সংখ্যা গণনা:

দু'বার নিকটতম পাওয়ার 4
>Num|Binary|2*Power4|Binary
> 1| 1| 2* 1= 2| 10
> 2| 10| 2* 4= 8| 1000
> 4| 100| 2* 4= 8| 1000
> 20| 10100| 2*16=32|100000

 

1 প্লাসের নিকটতম পাওয়ার 4 এর বর্গমূল
>Num|Binary|1+√Power4|Binary
> 1| 1|1+ √1= 2| 10
> 2| 10|1+ √4= 3| 11
> 4| 100|1+ √4= 3| 11
> 20| 10100|1+ √16= 5| 101

তারপরে প্রথম থেকে দ্বিতীয় সংখ্যাটি বিয়োগ করুন:

>Num|Binary|2*Power4|Binary|1+√Power4|Binary|a-b|Binary
> 1| 1| 2* 1= 2| 10|1+ √1= 2| 10| 0| 0
> 2| 10| 2* 4= 8| 1000|1+ √4= 3| 11| 5| 101
> 4| 100| 2* 4= 8| 1000|1+ √4= 3| 11| 5| 101
> 20| 10100| 2*16=32|100000|1+ √16= 5| 101| 27| 11011

এবং এই ফলাফলটি মূল সংখ্যার সাথে তুলনা করুন

পুরাতন পদ্ধতি

=DEC2BIN(A1)=REPLACE(REPT("1",1+2*INT(IFERROR(LOG(A1,2),0)/2)),1+IFERROR(LOG(A1,2),0)/2,1,"0")

এ 1 এর লগ-বেস -2 দিয়ে শুরু করুন এবং একে নিকটতম সমান সংখ্যাকে গোল করুন, তারপরে 1 যুক্ত করুন।

এরপরে সেই অনেকগুলি "1"এর একটি স্ট্রিং তৈরি করুন এবং মাঝের অক্ষরটি প্রতিস্থাপন করুন "0"যে বাইনারি দৈর্ঘ্যের সাথে সর্বদা বিজোড়, এবং A1 এর বাইনারি দৈর্ঘ্যের চেয়ে একই বা 1 কম

তারপরে, এ 1 এর বাইনারি উপস্থাপনার সাথে এটি তুলনা করুন


3

আর , 37 33 বাইট

(x=scan())%in%(2*4^(n=0:x)-2^n-1)

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

বাইনারি রূপান্তর করার জন্য আর-র অন্তর্নির্মিত কিছু নেই, তাই আমি ক্রম থেকে শর্তগুলির একটি তালিকা গণনা করার জন্য কেবল ওইআইএসের সূত্রগুলির মধ্যে একটি ব্যবহার করেছি।

n<-0:xশুরু মানগুলির একটি উদার তালিকা তৈরি করে। 2*4^(n<-0:x^2)-2^n-1)ওইআইএসের সূত্র, এবং তারপরে এটি ব্যবহার করে সেই ক্রমটিতে ইনপুট প্রদর্শিত হবে কিনা তা যাচাই করে %in%

-2 বাইটগুলি নেতিবাচক ইনপুটগুলি পরিচালনা না করে -2 বাইট স্মরণ করে আমি এতে পরিবর্তন <-করতে পারি =


3

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

f(n){n=~n==(n^=-~n)*~n/2;}

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

নীল এর উত্তর বন্দর । ক্রিয়াকলাপ বাস্তবায়ন সংজ্ঞায়িত ক্রম উপর নির্ভর করে।

সি ++ (ঝনঝন), 38 বাইট

int f(int n){return~n==(n^=-~n)*~n/2;}

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

সি ++ তে প্রকারগুলি বাদ দিতে পারে না, ঝাঁকুনির রিটার্ন বাদ দিতে পারে না, অন্যথায় অভিন্ন।


1
আমি returnভঙ্গুর এবং প্ল্যাটফর্ম-নির্ভর নিহিত সংশ্লেষের ফেরতের মান শোষণের পরিবর্তে সি ++ উত্তরগুলি সি উত্তর থেকে পৃথক করা পছন্দ করব ।
ডেডকোড

2
আমি নিয়মগুলিও স্ট্যান্ডার্ড-কমপ্লায়েন্সের জন্য চাই, তবে সেগুলি হয় না, সুতরাং এটির ব্যবহার না করা কেবল খারাপ গল্ফ হবে। সি ++ (ঝনঝন) এর জন্য 38 টি বাইট তৈরি করে ফিরতে হবে।
গ্রিমি

তারপরে আপনি সি (জিসিসি) এবং সি ++ (জিসিসি) এর পরিবর্তে আপনার উত্তরে সি (জিসিসি) এবং সি ++ (ঝনঝন) পেয়ে আপনি এটি পেতে পারেন। আমি এখন এটি করেছি।
ডেডকোড


3

জে , 22 19 17 15 14 বাইট

-৩ বাইট ধন্যবাদ বলসবুসিয়ারকে!

-4 বাইট ধন্যবাদ এনএনজি!

-1 বাইট ধন্যবাদ ট্রাও!

জে , 14 বাইট

1=1#.(*:|.)@#:

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


1
#=1++/­­­­­­­
এনজিএন

1
(#=1++/)@(*|.)@#:
এনজিএন

1
1=1#.1-(*|.)@#:
এনজিএন

1
আমি এটি ব্যবহার করার জন্য পর্যাপ্ত জে জানি না তবে এটি সংক্ষিপ্ত করার চেষ্টা করে অন্য লোকের কোড থেকে শিখতে মজাদার
এনপিএন

1
-1 বাইট1=1#.(*:|.)@#:
ট্রু


2

সংযুক্তি , 22 বাইট

{Flip@_=_∧1=0~_}@Bin

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

বিকল্প

27 বাইট: {BitXor[2*_,2*_+3]^2=8*_+9}

27 বাইট: {BitXor@@(2*_+0'3)^2=8*_+9}

27 বাইট: {Palindromic@_∧1=0~_}@Bin

28 বাইট: {BitXor[...2*_+0'3]^2=8*_+9}

28 বাইট: {BitXor[…2*_+0'3]^2=8*_+9}

28 বাইট: {Same@@Bisect@_∧1=0~_}@Bin

29 বাইট: {_[#_/2|Floor]=0∧1=0~_}@Bin

30 বাইট: Same@Bin@{_+2^Floor[Log2@_/2]}

30 বাইট: {_[#_/2|Floor]=0and 1=0~_}@Bin


2

রেটিনা 0.8.2 , 38 37 বাইট

.+
$*
+`^(1+)\1
$+0
10
1
^((1+)0\2)?$

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। সম্পাদনা: স্পষ্টকরণের পরে, পূর্ববর্তী সমাধান শূন্যটি সঠিকভাবে পরিচালনা করতে পারেনি। ব্যাখ্যা:

.+
$*

দশমিক থেকে আনারিতে রূপান্তর করুন।

+`^(1+)\1
$+0
10
1

রেটিনা উইকি থেকে পদ্ধতিটি ব্যবহার করে অ্যানারি থেকে বাইনারি রূপান্তর করুন।

^((1+)0\2)?$

1এর আগে এবং পরে একই সংখ্যার জন্য অনুসন্ধান করুন 0বা একটি খালি স্ট্রিং (যা উপরের রূপান্তরটি শূন্যকে পরিচালনা করে)।


1

ব্যাচ, 39 37 বাইট

@cmd/cset/a"m=%1^-~%1,!(m/2*(m+2)-%1)

এন=(2+ +1)(2-1-1)মি=2-1এন=মি2(মি+ +2)এন


1

এক্সেল, 101 107 বাইট

-6 বাইটস @ ক্রোনোসিডালকে ধন্যবাদ।

=AND(ISEVEN(LOG(A1,2)),MID(DEC2BIN(A1),LEN(DEC2BIN(A1))/2+1,1)="0",LEN(SUBSTITUTE(DEC2BIN(A1),1,))=1)

3 টি পরীক্ষা করে:

  • বিজোড় দৈর্ঘ্য
ISEVEN(LOG(A1,2))
  • মাঝের চরিত্রটি 0
MID(DEC2BIN(A1),LEN(DEC2BIN(A1))/2+1,1)="0"
  • একটি একক আছে 0
LEN(SUBSTITUTE(DEC2BIN(A1),1,))=1

1
পরিবর্তন করে 6 বাইট সংরক্ষণ ISODD(LEN(DEC2BIN(A1)))করতেISEVEN(LOG(A1,2))
Chronocidal


1

ভিবিএ, 41 36 বাইট

x=2^Int([Log(A1,4)]):?[A1]=2*x^2-x-1

সুস্পষ্ট ঘোষণা বন্ধ করে সাথে সাথে উইন্ডোতে চালান। ইনপুট A1সক্রিয় শীটের সেল । তাত্ক্ষণিক উইন্ডোতে সত্য / মিথ্যা ফলাফল আউটপুট করে।

একই সংখ্যক বিটের সাইক্লোপ নম্বর (বা যদি একটি সংখ্যার সংখ্যা থাকে তবে 1 বিট সংক্ষিপ্ত!) এবং তারপরে ইনপুটটির সাথে তুলনা করে আমার এক্সেল উত্তর হিসাবে একই যুক্তি ব্যবহার করে ।

ফর্ম তাদের কমিয়ে কিছু বাইট যখন সাইক্লপ্স সংখ্যার গণক সংরক্ষণ y = 2x^2 - x - 1(যেখানে x = n-1জন্য n তম সাইক্লপ্স নম্বর, বা x = 2^Int(Log([A1])/Log(4))একটি পরিবর্তনশীল মধ্যে বিট একটি ক্ষুদ্রতর-অর-সমান নম্বর সহ বৃহত্তম সাইক্লপ্স সংখ্যা খুঁজে বের) এবং সংরক্ষণকারী এক্স

(-5 টেইলর স্কটকে বাইটস ধন্যবাদ !)


1
লগ বিভাগ ব্যবহার করে লগের বেস রূপান্তর না করে আপনি সরাসরি [...]স্বরলিপি ব্যবহার করে এটি পরিবর্তন করতে পারেন[(Log(A1,4)]
টেলর স্কট

1

পিএইচপি , 74 বাইট

function($x){return($c=strlen($a=decbin($x)))&1&&trim($a,1)===$a[$c/2|0];}

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

সম্পূর্ণ গাï় নয় অ গাণিতিক পদ্ধতির, কেবল স্ট্রিংস।

function cyclops( $x ) {
    $b = decbin( $x );     // convert to binary string (non-zero left padded)
    $l = strlen( $b );     // length of binary string
    $t = trim( $b, 1 );    // remove all 1's on either side
    $m = $b[ $l / 2 |0 ];  // get the middle "bit" of the binary string
    return 
        $l & 1 &&          // is binary string an odd length?
        $t === $m;         // is the middle char of the binary string the same as
                           // the string with left and right 1's removed? (can only be '0')
}

অথবা উপরে @ ক্রোনোকিডালের আলগোরিদিম ভিত্তিক 60 বাইট

function($x){return decbin($x)==str_pad(0,log($x,2)|1,1,2);}

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


1

হাস্কেল, 82 বাইট

import Text.Printf
(`all`[(==)<*>reverse,("0"==).filter(<'1')]).flip($).printf"%b"

এবং এক্সনোর পাইথন সমাধানের একটি বন্দর:

হাস্কেল, 47 বাইট

import Data.Bits
\n->(2*n`xor`(2*n+3))^2==8*n+9
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.