প্যারেন্টিফাইযোগ্য বাইনারি নম্বর


28

আপনি কোন বসানো শূন্যগুলি সঙ্গে কিছু ধনাত্মক পূর্ণসংখ্যা বাইনারি প্রকাশ এবং প্রত্যেক প্রতিস্থাপন যদি 1একটি সঙ্গে (এবং প্রতি 0একটি সঙ্গে ), তারপর সব প্রথম বন্ধনী ম্যাচে থাকবে?

বেশিরভাগ ক্ষেত্রে তারা তা করবে না। উদাহরণস্বরূপ, 9 টি 1001বাইনারি রয়েছে, যা হয়ে ওঠে ())(, যেখানে কেবল প্রথম দুটি প্রথম বন্ধনীর মিল রয়েছে।

তবে মাঝে মাঝে মিলবে তারা। উদাহরণস্বরূপ, 44 101100বাইনারিতে রয়েছে, যা হয়ে যায় ()(()), যেখানে সমস্ত বাম বন্ধনীর সাথে একটি ডান বন্ধনী রয়েছে।

এমন একটি প্রোগ্রাম বা ফাংশন লিখুন যা ধনাত্মক বেস দশ পূর্ণসংখ্যায় নিয়ে যায় এবং যদি সংখ্যার বাইনারি-বন্ধনী সংস্করণটিতে সমস্ত মিলে যায় এমন বন্ধনী থাকে তবে মুদ্রণ করে বা সত্যবাদী মান দেয়। যদি তা না হয় তবে মুগ্ধ করুন বা মিথ্যা মানটি ফিরিয়ে দিন

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

সম্পর্কিত OEIS ক্রম।

100 এর নীচে সত্যবাদী উদাহরণ:

2, 10, 12, 42, 44, 50, 52, 56

100 এর নীচে মিথ্যা উদাহরণ:

1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 45, 46, 47, 48, 49, 51, 53, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99


10
সব কিছুরই ধারাবাহিকতা রয়েছে ...
আর্কটরাস

উত্তর:


8

টিস্ক্রিপ্ট , 9 বাইট 16 18 20 22 24

2 বাইট সংরক্ষিত হয়েছে @ ইথ প্রডাকশনগুলির জন্য ধন্যবাদ

!x÷W(n,¢)

ওহো। সংক্ষিপ্ত। @ Xnor এর পদ্ধতির ব্যবহার করে। এটি পুনরাবৃত্তি প্রতিস্থাপন ফাংশন ( W) ব্যবহার করবে যা কিছুই না করে সমস্ত 10সমান প্রতিস্থাপন করবে ()। স্ট্রিং ফাঁকা থাকলে এটি ভারসাম্যযুক্ত।


এই চ্যালেঞ্জ পোস্ট হওয়ার পরে তৈরি টিস্ক্রিপ্টের একটি সংস্করণ ব্যবহার করে এটি 7 বাইটে পরিণত হতে পারে :

!x÷W(n)

Ungolfed

!xT(2)W(n,``)

ব্যাখ্যা

!      // NOT, returns true if empty string, else false
 xT(2)   // To binary
 W(n,``) // n is 10, reclusive replaces 10 or (), with nothing.

1
অসাধারণ! দুটি জিনিস যা সহায়তা করতে পারে: 1) উপরে উঠার সময় যদি এটি মিথ্যা হয় তবে ইতিমধ্যে এটি নিখোঁজ হয়ে পড়েছে, সুতরাং আপনার প্রথম টিলডের প্রয়োজন হবে না। 2) আমি বিশ্বাস করি ~--cঠিক একই দৃশ্যে মিথ্যাবাদী c--
ETH প্রচার

@ ইথ প্রডাকশনগুলি দুর্দান্ত, ধন্যবাদ! এখন আমি 16 বাইটে
নেমেছি

13

পাইথ, 10 বাইট

!uscG`T.BQ

ব্যবহার করে দেখুন এই পরীক্ষাটি স্যুট Pyth কম্পাইলার হবে।

কিভাবে এটা কাজ করে

              (implicit) Store the evaluated input in Q.
       .BQ    Return the binary string representation of Q.
 u            Reduce w/base case; set G to .BQ and begin a loop:
     `T         Return str(10) = "10".
   cG           Split G (looping variable) at occurrences of "10".
  s             Join the pieces without separators.
              Set G to the returned string.
              If the value of G changed, repeat the loop.
              This will eventually result in either an empty string or a
              non-empty string without occurrences of "10".
!             Return (and print) the logical NOT of the resulting string.

সমতা নিয়ে হাজির হলাম !u:G`Tk.BQ। তাত্ক্ষণিকভাবে বুঝতে সহজ।
orlp

হ্যাঁ, এটি অবশ্যই আরও প্রাকৃতিক পছন্দ।
ডেনিস

8

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

try:exec"print 1,"+"".join(["],","["][int(c)]for c in bin(input())[2:])
except:print 0

একটি ভয়ানক বাস্তবায়ন যা সিনট্যাক্স ত্রুটিগুলিকে আপত্তি করে।


3
এটি কোড গল্ফ। ভয়ঙ্কর একটি প্রশংসা হয়।
কর্সিকা

8

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

n=>![...n.toString(d=2)].some(c=>(d+=c*2-1)<2)*d==2

@ ভিউ এবং @ এক্সটকে বাইটস সংরক্ষণ করা হয়েছে !

ব্যাখ্যা

n=>
  ![...n.toString(    // convert the input to an array of binary digits
    d=2)]             // d = current depth (+2)
      .some(c=>       // iterate through the digits
        (d+=c*2-1)    // increment or decrement the parenthesis depth
          <2          // if the depth goes negative, return false
      )*
        d==2          // if we finished at a depth of 0, return true

1
প্রয়োজন বোধ না করে আপনি দুটি বাইট সংরক্ষণ করতে পারেন f=। আপনি পূর্ণসংখ্যার ক্ষেত্রে কেস করার +cপরিবর্তে ব্যবহারও করতে পারেন c|0। আপনি (+c?d++:d--)আরও ছোট যা ব্যবহার করতে পারেন
ডাউনগোট

@ Vɪʜᴀɴ ঠিক আছে। আমার কখন ব্যবহার করা দরকার সে সম্পর্কে কোনও ধরণের গাইড রয়েছে f=? কারণ সাইটে জাভা স্ক্রিপ্টের প্রচুর উত্তর তাদের ফাংশনগুলির নাম দেয়।
ব্যবহারকারী 81655

1
সাধারণত যদি আপনার চ্যালেঞ্জটির প্রয়োজন হয় তবে আপনার কেবলমাত্র ফাংশনটির একটি নাম দেওয়া দরকার। অন্যথায় এটি অননুমোদিত ফাংশনগুলি ঠিক আছে তা ধরে নেওয়া নিরাপদ।
অ্যালেক্স এ

ফায়ারফক্সে, এটির জন্য চলমান 11, ফিরে আসা trueউচিত ফিরে আসেfalse
ডাউনগোট

2
আমি জাভাস্ক্রিপ্ট জানি না, তবে আমি কয়েকটি বাইট কাটতে চেষ্টা করেছি এবং এটি ক্রোমে কাজ করে:n=>![...n.toString(d=2)].some(c=>(d+=c*2-1)<2)*d==2
xsot

7

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

f=lambda n,i=1:i*n>0<f(n/2,i+(-1)**n)or n<i<2

একটি পুনরাবৃত্তি ফাংশন। প্যারেন্সের বর্তমান নেস্টিং স্তরের nএকটি গণনা রেখে শেষ থেকে বাইনারি অঙ্কগুলি পড়ে i। যদি এটি নীচে পড়ে তবে 0প্রত্যাখ্যান করুন। আমরা যখন শুরুতে পৌঁছায়, গণনাটি কিনা তা যাচাই করে 0

প্রকৃতপক্ষে, আমরা গণনাটি শুরু করি i=1যাতে এটি কমেছে কিনা তা খতিয়ে দেখতে সহজ করে তুলতে 0। একমাত্র টার্মিনাল সাফল্যের কেস n==0এবং এর i==1সাথে চেক করা হয়েছে n<i<2। আমরা এই চেকটি জোর করে নিই n==0, বা যদি iপড়ে যায় তবে সেক্ষেত্রে 0এটি স্বয়ংক্রিয়ভাবে ব্যর্থ হয়।

Feersum শর্ট সার্কিট অসমতা সঙ্গে পুনরাবৃত্তি ক্ষেত্রে পুনর্গঠন করে দুটি বাইট সংরক্ষণ।


3
আরও শর্তযুক্ত নির্যাতনের প্রয়োজন। f=lambda n,i=1:n>0<i*f(n/2,i+(-1)**n) or n<i<2, কমপক্ষে, 1 টি সঞ্চয় করে
ফেরসাম

6

সিজেম, 11 বাইট

ri2b"}{"f=~

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

যেহেতু সি-জ্যামে খালি / খালি স্ট্রিংগুলি সত্য / মিথ্যা এবং মুদ্রিত আউটপুট সর্বদা একটি স্ট্রিং থাকে, এটি তর্কসাপেক্ষভাবে নিয়ম মেনে চলে। মোট 14 বাইটের জন্য আরও 3 বাইটের অতিরিক্ত মূল্যে , আমরা আসলে স্ট্যাকের উপরে সত্যবাদী বা মিথ্যা স্ট্রিং রাখতে পারি যা মুদ্রিত হবে:

Lri2b"}{"f=~]s

এটি এখনও প্যারেন্টিফিকেশনযোগ্য নম্বরের জন্য ক্র্যাশ হয়েছে, যা ডিফল্টরূপে অনুমোদিত

টেস্ট রান

$ cjam <(echo 'ri2b"}{"f=~') <<< 52 2>&-; echo
{{}{}}
$ cjam <(echo 'ri2b"}{"f=~') <<< 53 2>&-; echo

$ cjam <(echo 'ri2b"}{"f=~') <<< 54 2>&-; echo

$ cjam <(echo 'ri2b"}{"f=~') <<< 55 2>&-; echo

$ cjam <(echo 'ri2b"}{"f=~') <<< 56 2>&-; echo
{{{}}}

কিভাবে এটা কাজ করে

ri          e# Read an integer from STDIN.
  2b        e# Push the array of its binary digits.
    "}{"f=  e# Replace 0's with }'s and 1's with {'s.
          ~ e# Evaluate the resulting string.
            e# If the brackets match, this pushes one or more blocks.
            e# If the brackets do not match, the interpreter crashes.

সিজেম, 15 বাইট

ri2bs_,{As/s}*!

ব্যবহার করে দেখুন এই বেহালার CJam অনুবাদক অথবা একবার এ সব পরীক্ষার বিষয় যাচাই

কিভাবে এটা কাজ করে

ri               Read an integer from STDIN.
  2b             Push the array of its binary digits.
    s            Cast to string.
     _,          Push the string's length.
       {    }*   Do that many times:
        As/        Split at occurrences of "10".
           s       Cast to string to flatten the array of strings.
              !  Push the logical NOT of the result.


6

পাইথন, 51 বাইট

lambda n:eval("'0b'==bin(n)"+".replace('10','')"*n)

একটি বেনামে ফাংশন। দেখে মনে হচ্ছে এমন একটি অভিব্যক্তির মূল্যায়ন

'0b'==bin(n).replace('10','').replace('10','').replace('10','')...

প্রতিটি প্রতিস্থাপন সব মুছে ফেলা 10, যা অনুরূপ ()। পরে সব প্রতিস্থাপন করা হয়েছে, ফাংশন আয় কি চলে যাওয়ার মাত্র বাইনারি উপসর্গ কিনা 0b। এটা আরো যথেষ্ট করতে চেয়ে nপ্রতিস্থাপন, একটি যেহেতু kডাক আসবে সংখ্যা সর্বাধিক লাগে k/2পদক্ষেপ, এবং তার মান সবচেয়ে হয় 2**k


4

রুবি, 40

->i{n='%0b'%i;1while n.slice!'10';n<?0}

সরল স্ট্রিং ম্যানিপুলেশন। '10' ড্রপ করুন যতক্ষণ না বাকি থাকে।


4

সিরিয়াসলি , 17 বাইট

,;2@¡@`""9u$(Æ`nY

0মিথ্যা এবং 1সত্যের আউটপুট । এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

,      get value from stdin
;      dupe top of stack
2@¡    pop a: push a string containing the binary representation of a (swapping to get order of operands correct)
@      swap top two elements to get original input back on top
`""9u$(Æ` define a function:
  ""     push empty string
  9u$    push "10" (push 9, add 1, stringify)
  (      rotate stack right by 1
  Æ      pop a,b,c: push a.replace(b,c) (replace all occurrences of "10" in the binary string with "")
n      pop f,a: call f a times
Y      pop a: push boolean negation of a (1 if a is falsey else 0)

4

জাপট, 23 বাইট

Japt একটি সংক্ষিপ্ত সংস্করণ জা vaScri পর্তুগীজ ভাষায়অনুবাদক

Us2 a e@+X?++P:P-- &&!P

এটি আমাকে স্মরণ করিয়ে দেয় যে টেপস্ক্রিপ্টের তুলনায় জাপট এখনও কতদূর যেতে পেরেছে। পরের কয়েক দিনের মধ্যে দোভাষীকে নতুন করে তৈরি করার পরে, আমি ভিসের মতো "শর্টকাট" অক্ষর যুক্ত করতে চাই।

কিভাবে এটা কাজ করে

       // Implicit: U = input number, P = empty string
Us2 a  // Convert U to base 2, then split the digits into an array.
e@     // Assert that every item X in this array returns truthily to:
 +X?   //  If X = 1,
 ++P   //   ++P. ++(empty string) returns 1.
 :P--  //  Otherwise, P--. Returns false if P is now -1.
&&!P   // Return the final result && !P (true if P is 0; false otherwise).
       // Implicit: output final expression

এই চ্যালেঞ্জের অল্প অল্প সময়ের মধ্যেই, @ ভিɪʜᴀɴ (বর্তমানে @ ডাউনগোট নামে পরিচিত) আমাকে পুনরাবৃত্ত-প্রতিস্থাপন বৈশিষ্ট্যটি প্রয়োগ করতে সহায়তা করেছে, যেমন W টিস্ক্রিপ্ট উত্তরের । এর অর্থ এই চ্যালেঞ্জটি এখন মাত্র 5 বাইটে করা যেতে পারে:

!¢eAs  // Implicit: U = input integer, A = 10
 ¢     // Convert U to binary.
  eAs  // Recursively remove instances of A.toString().
!      // Return the logical NOT of the result (true only for the empty string).

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


3

গণিত, 49 বাইট

(#~IntegerDigits~2//.{x___,1,0,y___}:>{x,y})=={}&

আমি গণিত পড়তে পারি না। ব্যাখ্যা, দয়া করে? :)
কনর ও'ব্রায়েন

@ সিও'বিʀɪᴇɴ সংখ্যাটি বেস 2 তে রূপান্তর করুন (তালিকা হিসাবে), তারপরে বার বার 1,0তালিকা থেকে সরিয়ে ফেলুন এবং ফলাফলটি যদি খালি তালিকা হয় তবে পরীক্ষা করুন।
আলেফাল্ফ


3

সি ++, 104 94 বাইট

#include<iostream>
int n,c;int main(){for(std::cin>>n;n&c>=0;n>>=1)c+=n&1?-1:1;std::cout<<!c;}

এই সংকলকটি দিয়ে চালান , চালনার আগে অবশ্যই স্ট্যান্ডার্ড ইনপুট নির্দিষ্ট করতে হবে।

ব্যাখ্যা

  • মূল সূত্রপাতের বাইরে ঘোষণা 0 তে হয়।
  • দশমিক পাঠ পড়া স্পষ্টতই বাইনারিতে রূপান্তরিত হয়, কারণ এটি একটি কম্পিউটার।
  • আমরা বিট / প্রথম বন্ধনী পরীক্ষা ডান হতে বামে কারণn>>=1
  • c+=n&1?-1:1 খোলা বন্ধনী গণনা রাখে )
  • n&c>=0 যখন কেবল শীর্ষস্থানীয় 0 টি থাকে বা বন্ধকগুলি খোলার চেয়ে আরও বেশি বন্ধ হয় stop

3

হাস্কেল, 49 46 বাইট

0#l=l==1
_#0=2<1
n#l=div n 2#(l+(-1)^n)
f=(#1)

ব্যবহারের উদাহরণ: f 13-> False

আমি lঅন্যান্য অনেক উত্তরের মতো নীড়ের স্তরটি ট্র্যাক করছি keeping যাইহোক, "ভারসাম্যপূর্ণ" কেসটি প্রতিনিধিত্ব করে 1, সুতরাং "আরও- )থান- (" কেসটি 0

পিএস: l+(-1)^nএক্সনরের উত্তরে নেস্টিং লেভেল সামঞ্জস্য খুঁজে পেয়েছে ।


signumখুব জটিল মনে হয়, কিভাবে সম্পর্কে শুধু _#0=1<0?
xnor

@ এক্সনর: হ্যাঁ, ধন্যবাদ
নিমি

l>0তার বদলে কেন হবে না l==1?
মাইকেল ক্লেইন

@ মিশেলক্লেইন: কারণ কেবলমাত্র l==1ভারসাম্যহীন। যদি l>1, প্রথম বন্ধনীগুলি অপরিকল্পিত হয়।
নিমি

@ নিমি আমি দেখতে পেয়েছি, আমি কীভাবে এটি কাজ করে তা ভুল ব্যাখ্যা করেছিলাম
মাইকেল ক্লেইন

3

পাইথন 2, 60 57 56 55 53 52 50 49 বাইট

n=input()
i=1
while i*n:i+=1|n%-2;n/=2
print i==1

চূড়ান্ত বাইট গণনাটি 49 এ আনার জন্য দুটি বাইট এবং ফেয়ারসাম সংরক্ষণ করার জন্য xnor কে ধন্যবাদ!

ব্যাখ্যা

ইনপুট নম্বর, nএটি এর সর্বনিম্ন উল্লেখযোগ্য বিট থেকে প্রক্রিয়া করা হয়। iএটি এমন একটি কাউন্টার যা 0 এবং 1 এর সংখ্যার উপর নজর রাখে। নোট করুন এটি 1বাইট সংরক্ষণ করার জন্য শুরু করা হয়েছিল। n1 এর সংখ্যা 0 এর ( i<=0) এর সংখ্যার বেশি হলে লুপটি 0 এ পৌঁছানোর আগে বাতিল হয়ে যাবে ।

প্রথম বন্ধনীর ভারসাম্য বজায় রাখার জন্য, দুটি শর্ত প্রয়োজন:

  • 0 এবং 1 এর সংখ্যা সমান (যেমন i==1)
  • এই প্রক্রিয়া চলাকালীন 1 এর সংখ্যা কখনই 0 এর সংখ্যার বেশি হয় না (অর্থাত লুপ অকাল পূর্বে বাতিল না করে n==0)। সম্পাদনা: আমি বুঝতে পেরেছিলাম যে পূর্ববর্তী শর্তটি পর্যাপ্ত iহলে এই অবস্থাটি অবশ্যই ইতিবাচক নয় n!=0

যদি iএবং nnonnegative হয় তবে i==n==0হয় i+n==0
orlp

i লুপ অকালবিত্ত বন্ধ হলে নেতিবাচক হতে পারে।
xsot

আসলে, i|n==0সবসময় কাজ করা উচিত।
orlp

দুর্দান্ত পরামর্শ, সেই লাইনটি এখন আরও ভাল দেখাচ্ছে।
xsot

while i*nকাজ করা উচিত
xnor

3

জাভাস্ক্রিপ্ট ES5, 118 87 85 82 77 বাইট

আমার মতে আকর্ষণীয় কৌশল। মাইনাস অনেকগুলি পুরো হেক, @ETH প্রোডাকশনস এবং @ নোটহাট চার্লসকে ধন্যবাদ

function p(x){x=x.toString(2);while(/10/.test(x))x=x.replace(10,"");return!x}

জাভাস্ক্রিপ্ট ES6, 77 57 56 54 বাইট

ইটিএইচ প্রডাকশনগুলিতে -21 বাইট।

x=>[...x=x.toString(2)].map(_=>x=x.replace(10,""))&&!x

আমি প্রথম বন্ধনী অনুবাদ পছন্দ। যাইহোক, আপনি যদি এটি 1 এবং 0 এর হিসাবে রেখে দেন তবে এটি বেশ খানিকটা খাটো:function p(x){x=x.toString(2);r=/10/;while(x.search(r)>=0){x=x.replace(r,"")}return!x}
ETH প্রোডাকশন

পছন্দ করুন আমি মনে করি আমি অন্য কোডটি নীচে রেখে দেব, আমি সত্যিই অ্যালগরিদম পছন্দ করি ^ _ ^ ধন্যবাদ সাথী!
কনর ও ব্রায়ান

ES6 সংস্করণটি এখনও একগুচ্ছ গল্ফ করা যেতে পারে: x=>([...x=x.toString(2)].map(_=>x=x.replace(/10/,"")),!x)কৌশলটি হ'ল লুপটিকে একটিতে স্থানান্তর করা .map, যেহেতু এর দৈর্ঘ্যের চেয়ে কোনও ইনপুটে আর কখনও '10' থাকে না।
ইটিএইচ প্রডাকশন

@ ইথ প্রডাকশনস আবার ধন্যবাদ ^ _ with সাথে দুর্দান্ত কৌশল map
কনর ও'ব্রায়েন

কোনও সমস্যা নেই :) বিটিডাব্লু, অন্য বাইটটি এডকি 65 ব্যবহার করে একটি ট্রিক দিয়ে সংরক্ষণ করা যায়: IDK x=>[...x=x.toString(2)].map(_=>x=x.replace(/10/,""))&&!xযদি এটি আরও খাটো পেতে পারে।
ETH প্রোডাকশন

2

ডি, 209 170 বাইট

import std.stdio;import std.format;import std.conv;void main(char[][]a){string b=format("%b",to!int(a[1]));int i;foreach(c;b){i+=c=='1'?1:-1;if(i<0)break;}writeln(i==0);}

এটি কোনও সংযোজন বা সুবিধা ছাড়াই এটি করার কথা বলে ঠিক তা করে।


2

সি, 67 বাইট

n;main(i){for(scanf("%d",&n);n*i;n/=2)i+=1-n%2*2;putchar(48+!~-i);}

বেশ আমার পাইথন জমা দেওয়ার বন্দর।


2

প্রোলোগ, 147 বাইট

b(N,[X|L]):-N>1,X is N mod 2,Y is N//2,b(Y,L).
b(N,[N]).
q([H|T],N):-N>=0,(H=0->X is N+1;X is N-1),q(T,X).
q([],N):-N=0.
p(X):-b(X,L),!,q(L,0).

কিভাবে এটা কাজ করে

b(N,[X|L]):-N>1,X is N mod 2,Y is N//2,b(Y,L).
b(N,[N]).

দশমিক সংখ্যা N কে বাইনারি উপস্থাপনাকে একটি তালিকা হিসাবে রূপান্তর করে (বিপরীত)। অর্থ:

b(42,[0,1,0,1,0,1]) is true

তারপর:

q([H|T],N):-N>=0,(H=0->X is N+1;X is N-1),q(T,X).
q([],N):-N=0.

তালিকার উপর পুনরাবৃত্তি করে [এইচ | টি] এন ক্রম বৃদ্ধি করছে যদি প্রধান উপাদান 0 হয় অন্যথায় এটি হ্রাস পাচ্ছে।
যদি কোনও বিন্দুতে N নেতিবাচক হয়ে যায় বা শেষদিকে N 0 হয় তবে এটি মিথ্যা প্রত্যাবর্তন করে, অন্যথায় সত্য।

কাট ইন

p(X):-b(X,L),!,q(L,0).

বি (এন, [এন])

পরীক্ষা করার ব্যাকট্র্যাকিং এবং নন-বাইনারি সমাধানগুলি প্রতিরোধ করার জন্য কি এখানে
অনলাইনে চেষ্টা করে দেখুন এখানে
এমন প্রশ্নের সাথে চালনা করুন:

p(42).

2

পাওয়ারশেল, 106 বাইট

param($a)$b=[convert]::ToString($a,2);1..$b.Length|%{if($b[$_-1]%2){$c++}else{$c--}if($c-lt0){0;exit}};!$c

কোনও স্বল্পতম দৈর্ঘ্যের প্রতিযোগিতা জিততে হবে না, এটি অবশ্যই নিশ্চিত। তবে আরে, অন্তত জাভা মারছে?

[convert]::ToString($a,2)বাইনারি অঙ্কগুলি উপস্থাপন করে আমাদের ইনপুট নম্বরটিকে স্ট্রিংয়ে রূপান্তর করতে খুব দীর্ঘ .NET কল ব্যবহার করে । আমরা তখন সেই স্ট্রিংটির সাহায্যে লুপ করি 1..$b.length|%{..}। প্রতিটি লুপ, যদি আমাদের অঙ্ক হয় a1 অঙ্কটি হয় ( কয়েক বাইট সংরক্ষণের %2পরিবর্তে মূল্যায়ন করা হয় -eq1), তবে আমরা আমাদের কাউন্টারকে বাড়িয়ে তুলি; অন্যথায়, আমরা এটি হ্রাস। যদি আমরা কখনও নেতিবাচক পৌঁছায়, তার মানে এখন পর্যন্ত আরও )বেশি কিছু (মুখোমুখি হয়েছিল , সুতরাং আমরা আউটপুট 0এবং exit। একবার আমরা লুপ মাধ্যমে, $cহয় হয় 0বা কিছু নম্বর>0 , সুতরাং আমরা এর লজিকাল-না !করি, যা আউটপুট পায়।

এই আউটপুট আউট এর quirk আছে 0 যদি ডান বন্ধনী বেমানান কারণ আমরা আরো আছে ), কিন্তু outputting Falseযদি ডান বন্ধনী বেমানান কারণ আমরা আরো আছে (। মূলত কার্যকরীভাবে সমতুল্য জালিয়াতির বিবৃতি, কেবল আকর্ষণীয়। যদি প্যারেনস সব মিলে যায় তবে ফলাফল আউটপুট হয় True


ঠিক আছে, নিশ্চিত (ঠিক আছে, আমি যদি ভুল সমস্যাটি সমাধান করছি যে আমি এই সন্দেহের সমাধান করতে পারি তবে আমি করব)।
টেসেল্ল্যাটিংহেকলার

1

জিএনইউ শেড (ইওল এক্সটেনশন সহ), ২।

s/.*/dc -e2o&p/e
:
s/10//
t

শেডের সত্যবাদী এবং মিথ্যা সম্পর্কে কোনও সংজ্ঞায়িত ধারণা নেই, সুতরাং আমি এখানে দাবি করছি যে খালি স্ট্রিংটির অর্থ সত্যবাদী এবং অন্য সমস্ত স্ট্রিং মানে মিথ্যা y

যদি এটি গ্রহণযোগ্য না হয়, তবে আমরা নিম্নলিখিতগুলি করতে পারি:

জিএনইউ শেড (ইওল এক্সটেনশন সহ), 44

s/.*/dc -e2o&p/e
:
s/10//
t
s/.\+/0/
s/^$/1/

এটি সত্যবাদিতার জন্য 1 এবং অন্যথায় 0 ফলাফল দেয় uts


1

E (ইএসমিন), 21 টি চর / 43 বাইট

ô⟦ïßḂ]Ĉ⇀+$?⧺Ḁ:Ḁ‡)⅋!Ḁ)

Try it here (Firefox only).

নোট করুন যে এটি সংখ্যায় পূর্বনির্ধারিত ভেরিয়েবলগুলি ব্যবহার করে (বিশেষত 2 এবং 0)। 0 থেকে 256 পর্যন্ত পূর্বনির্ধারিত সংখ্যা ভেরিয়েবল রয়েছে।

19 অক্ষর / 40 বাইট, অ-প্রতিযোগিতামূলক

⟦ïßḂ]Ĉ⇀+$?⧺Ḁ:Ḁ‡)⅋!Ḁ

Try it here (Firefox only).

অন্তর্নিহিত আউটপুট বাস্তবায়ন করার সিদ্ধান্ত নিয়েছে ... তবে, পূর্ববর্তী আউটপুট ফর্মগুলি এখনও সমর্থিত, তাই আপনি বেশ কয়েকটি আউটপুট বিকল্প পান!


কারণ সকলেই চরের গণনা অনুসারে পরিমাপ করে
phase

1

জাভা, 129 131 বাইট

boolean T(int i){int j=0,k=0;for(char[]a=Integer.toString(i,2).toCharArray();j<a.length&&k>=0;j++){k+=a[j]=='1'?1:-1;}return k==0;}

সম্ভবত ছোট করা যেতে পারে। আসার ব্যাখ্যা। জিওবিটসকে 4 বাইট ছাড়ার জন্য ধন্যবাদ!


এটা একত্রিত করা সম্ভব int k=0;সঙ্গে int j=0;?
ইটিএইচ প্রডাকশনগুলি

না, জে লুপের জন্য একটি অভ্যন্তরীণ পরিবর্তনশীল এবং এর বাইরে উল্লেখ করা যায় না।
গ্যামার কর্পস

আপনার অন্য উপায়ে একত্রিত করতে সক্ষম হওয়া উচিত, যদিও: int k=0,j=0;for(...তারপরে আপনি char[]একটি সেমিকোলন সংরক্ষণ করতে লুপ ইনিশিয়ালাইজারের ভিতরেও ঘোষণাটি রাখতে পারেন ।
জিওবিটস

সবচেয়ে বড় সমস্যা হ'ল এটি মিথ্যা ধনাত্মকতা দেয়। উদাহরণস্বরূপ এটি 9, 35, 37, 38 এর ক্ষেত্রে সত্য হয়
জিওবিটস

@ জিওবিটস উফ, আমি বুঝতে পারি নি যে, সুযোগ পেলেই ঠিক হয়ে যাবে।
গ্যামারকম্পস

1

সি ++, 61 বাইট

আমি মনে করি বর্তমান সি ++ উত্তরটি ভুল: এটি সমস্ত সংখ্যার যেমন একটি সত্যবাদী মান প্রদান করে 4.. অস্বীকৃতি: আমি উল্লিখিত সংকলকটি ব্যবহার করতে সক্ষম নই, তাই আমি জি ++ ৪.৮.৪ ব্যবহার করেছি। সমস্যাটি লজিক্যাল এ্যান্ড এর পরিবর্তে বাইনারি অ্যান্ড অপারেটরের ব্যবহারের মধ্যে রয়েছে যা বন্ধ হওয়ার প্রথম বন্ধনীর সংখ্যা ছাড়িয়ে গেলে তাড়াতাড়ি বিরতিতে ব্যবহৃত হয়। trueএকটি সত্য সত্য বিট প্যাটার্ন সহ একটি শব্দ হিসাবে প্রতিনিধিত্ব করা হলে এই পদ্ধতির কাজ করতে পারে । আমার সিস্টেমে এবং সম্ভবত অন্যান্য সিস্টেমে trueসমান 1; শুধুমাত্র একটি বিট সত্য। এছাড়াও, n/=2চেয়ে কম হয় n>>=1। এখানে একটি ফাংশন হিসাবে উন্নত সংস্করণ রয়েছে:

int f(int n,int c=0){for(;c>=0&&n;n/=2)c+=n&1?-1:1;return c;}

0

Very (খুব অবিরাম), 6 টি চর / 8 বাইট

!ïⓑĦⅩ

Try it here (Firefox only).

আমি খুব, খুব দীর্ঘ সময় পরে এই চ্যালেঞ্জটি পুনরায় দেখা করার সিদ্ধান্ত নিয়েছে। আমি অনেক ভাল পেয়েছি।

এটির পৃথক উত্তর হওয়ার কারণ হ'ল দুটি সংস্করণ প্রায় সম্পূর্ণ আলাদা।

ব্যাখ্যা

ইনপুটটিকে বাইনারিতে রূপান্তরিত করে, 10 টির পুনরাবৃত্তভাবে প্রতিস্থাপন করে, ফলাফলটি খালি স্ট্রিং কিনা তা পরীক্ষা করে is


0

সি # 98 বাইট

bool f(int m){int i=0;foreach(char s in Convert.ToString((m),2)){if(s=='1')i+=2;i--;}return i==0;}

কোন পরামর্শের জন্য খুলুন। আমি এই চ্যালেঞ্জটি এমনকি এটি পুরানো-ইশও পছন্দ করি

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