এই সংখ্যাটি -2 এর পূর্ণসংখ্যা শক্তি?


41

আছে চালাক উপায়ে নির্ণয় একটি সংখ্যা আর একটি আকর্ষণীয় সমস্যা যে 2. একটি ক্ষমতা কিনা তাই আসুন নির্ধারণ একটি প্রদত্ত পূর্ণসংখ্যা এর একটি পূর্ণসংখ্যা শক্তি কিনা, -2 । উদাহরণ স্বরূপ:

-2 => yes: (-2)¹
-1 => no
0 => no
1 => yes: (-2)⁰
2 => no
3 => no
4 => yes: (-2)²

বিধি

  • আপনি কোনও প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন এবং ইনপুট গ্রহণ এবং আউটপুট সরবরাহের মানক পদ্ধতিগুলির কোনও ব্যবহার করতে পারেন ।

  • আপনার ইনপুটটি একটি একক পূর্ণসংখ্যা এবং যদি পূর্ণসংখ্যা -2 এর পূর্ণসংখ্যা শক্তি এবং অন্যথায় মিথ্যা মান হয় তবে আউটপুট অবশ্যই সত্যবাদী মান হতে পারে। অন্য কোনও আউটপুট (যেমন সতর্কতা বার্তা) অনুমোদিত নয়।

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

  • আপনি যে কোনও প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন তবে নোট করুন যে এই ফাঁকগুলি ডিফল্টরূপে নিষিদ্ধ করা হয়েছে।

জয়ের শর্ত

এটি একটি প্রতিযোগিতা: সবচেয়ে কম বাইট রয়েছে এমন উত্তর (আপনার নির্বাচিত এনকোডিংয়ে) বিজয়ী।


17
@ ক্রিতিক্সিলিথোস আমি দেখতে পাচ্ছি না কেন এটি করা উচিত। এর iমতো কোনও পূর্ণসংখ্যা নেই(-2)^i = 2
ফ্যাটালাইজ করুন

2
ক্ষয়কারীরা কি ইতিবাচক হয় বা -0.5এটি 2 ^ (- 1) হওয়ার পরে বৈধ হওয়া উচিত ?
মিঃ এক্সকোডার

1
@ মিঃ এক্সকোডার, যেহেতু ইনপুটগুলি সর্বদা পূর্ণসংখ্যার মান হয় , তাই নেতিবাচক এক্সপোনেন্টের প্রয়োজন হবে না (বা সম্ভব)।
টবি স্পিড

1
@ সিআইজিএসইজিভি সম্ভবত iএটি প্রাকৃতিক নয়
মিঃ এক্সকোডার

2
@ জেসন, আপনার ভাষায় যতজন সমর্থিত / প্রাকৃতিক - তৃতীয় নিয়মটি দেখুন। এবং এটি কোড-গল্ফ কারণ এখানে বিষয়বস্তু হওয়ার জন্য এটি একটি উদ্দেশ্যমূলক বিজয়ী মানদণ্ডের প্রয়োজন - "একটি আকর্ষণীয় সমাধান" এটি কাটবে না (যদিও আমি ম্যাথামেটিকার উত্তরটি পছন্দ করি - এটি আমাকে অবাক করে দিয়েছিল)।
টবি স্পিড

উত্তর:


26

গণিত, 22 বাইট

EvenQ@Log2@Max[#,-2#]&

এটি অনলাইন চেষ্টা করুন! (পরিবর্তে গণিত ব্যবহার করুন, যেখানে এই সমাধানটিও কার্যকর হয় works)

আমি কিছুক্ষণের জন্য বিটওয়াইজ অপারেটরগুলির সাথে সমাধান সন্ধান করার চেষ্টা করেছি এবং এর মধ্যে অবশ্যই একটি উপস্থিত থাকার পরে আমি এমন কিছু সন্ধান করেছি যা সম্ভবত সহজ is

  • Max[#,-2#]the ণাত্মক হলে ইনপুটটিকে -2 দ্বারা গুণ করে । -2 এর অন্য একটি ফ্যাক্টরের সাথে গুণ করলে মান -2 এর পাওয়ার বা না পাওয়ার কোনও পরিবর্তন হয় না। কিন্তু এখন সব বিজোড় ক্ষমতা -2 এমনকি ক্ষমতা পরিণত হয়েছে -2
  • এমনকি -2 এর শক্তিগুলি এমনকি 2 এর শক্তিও , তাই আমরা একটি সহজ ব্যবহার করতে পারি Log2@...এবং ফলাফলটি পূর্ণসংখ্যা কিনা তা পরীক্ষা করতে পারি (এটি 2 এর শক্তি কিনা তা পরীক্ষা করতে )। এটি ইতিমধ্যে দুটি বাইট ওভার সাশ্রয় করেছে Log[4,...]( -2 এর এমনকি শক্তির দিকে তাকানোর অন্য উপায় )।
  • একটি যোগ বোনাস হিসাবে, পরীক্ষণ কোনো একটি মান একটি এমনকি পূর্ণসংখ্যা শুধু চেক কিনা এটা একটি পূর্ণসংখ্যা চেয়ে খাটো হয়: আমরা ব্যবহার করে আরও তিনজন বাইট সংরক্ষণ করতে পারবেন EvenQপরিবর্তে IntegerQ

এটি কী বিবেচনা করতে সহায়তা করে যে -2 এর শক্তিগুলি 4 এর পূর্ণসংখ্যা শক্তি? আমি সব কিছুকে ইতিবাচক পেতে -2 দিয়ে গুণ করার ধারণা পছন্দ করি - যদিও এখনও অবধি কোনও বিড়বিড় করে না দেখে হতাশ হয়েছি।
টবি স্পিড 13

5
@ টবিস্পাইট তাদের 2 টির ক্ষমতা হিসাবে আচরণ করা 5 টি বাইট সংরক্ষণ করে। আমি প্রথমে 4 এর শক্তি ব্যবহার করেছি তবে Log[4,...]তার চেয়ে বেশি Log2@...এবং IntegerQতার চেয়ে বেশি দীর্ঘ EvenQ
মার্টিন এন্ডার


12

পাইথন , 46 বাইট

-২ বাইট @ ওওএসকে ধন্যবাদ

def g(x):
 while x%-2==0!=x:x/=-2
 return x==1

ব্যবহার সহ ফাংশন:

g(4) # put your number between the brackets

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



2
@ ফিলিপনার্দিবাটিস্তা এটি করা উচিত নয়?
মিঃ এক্সকোডার 13

2
দুঃখিত, আমার উদাহরণটি খারাপ ছিল, print g(4)একই কাজ করে
ফিলিপ নারদী বাটিস্তা

অপেক্ষা করুন, খুব শীঘ্রই এটি ঠিক করাতে একটি ছোট ত্রুটি রয়েছে
মিঃ এক্সকোডার

1
আমি ;একটি নতুন লাইনের পরিবর্তে একটি রেখেছি ... এর জন্য দুঃখিত। ফিক্সড @ ফিলিপনার্দিবাটিস্তা
মিঃ এক্সকোডার

11

জেলি , 6 বাইট

b-2S⁼1

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

এভাবেই জেলি একটি পূর্ণসংখ্যা পরিবর্তন করে উপর ভিত্তি করে তৈরি এন কোনো অবাধ বেস বি , রূপান্তর দ্বারা এমনটি এন একটি অ্যারের, যা প্রতিটি পূর্ণসংখ্যা একটি অঙ্ক হয় এর ( এন ) বি , যা একটি মান 0≤ থাকতে পারে ভী < বি । এখানে, আমরা ডান থেকে 0-সূচক অঙ্কগুলি করব, সুতরাং প্রতিটি অঙ্কটি N গঠনে V d B d যুক্ত করে । ভী < বিভী বি < বিবি = বি + 1 , অতএব প্রতি সম্ভবN এর একটি মাত্র অনন্য উপস্থাপনা রয়েছে, যদি আমরা ( N ) বি তে শীর্ষস্থানীয় 0 টি উপেক্ষা করি ।

এখানে, ডি = ইনপুট, বি = -2। N = B d = 1 B d = V d B d ⇔1 = V dV d = 1, এবং, যেহেতু আমরা বি এর অন্য কোন গুণকে যোগ করছি না, তাই অন্য সমস্ত ভি 0 হবে Right এখনই, অ্যারের একটি 1 ঘনিভূত হওয়া উচিত 0 সেঃ। বাম দিক থেকে জেলি 1-সূচকগুলি থেকে, অ্যারের 1 ম উপাদানটি 1 এবং আমাদের অন্যান্য উপাদান 0 আছে কিনা তা আমাদের পরীক্ষা করা উচিত।

হুম ... ঠিক আছে, ঠিক আছে? কোন? কি হচ্ছে? ওহ হ্যাঁ, আমি আরও ভাল ধারণা আছে! প্রথমে অ্যারেতে সমস্ত পূর্ণসংখ্যার যোগফল নেওয়া যাক, এটির সাথে এটি চিকিত্সা করা যেমন এটি কোনও পূর্ণসংখ্য অ্যারে এবং বেস -২ তে সংখ্যা নয়। যদি এটি 1 হয় তবে এর অর্থ হ'ল কেবল 1 টি আছে এবং অন্যান্য সমস্ত সংখ্যার সংখ্যা 0 হয় যেহেতু 0 -2 এর ক্ষেত্রে ব্যতীত শীর্ষস্থানীয় জিরো হতে পারে না(যেখানে যাইহোক যোগফল 0 ≠ 1 হবে), প্রথম সংখ্যার অবশ্যই শূন্য নয়। অ্যারেতে কেবল অ-শূন্য পূর্ণসংখ্যা 1, সুতরাং এটি অবশ্যই প্রথম হওয়া উচিত। সুতরাং, এটি একমাত্র ক্ষেত্রে যে অ্যারেতে সমস্ত পূর্ণসংখ্যার যোগফল 1 হবে কারণ ক্ষুদ্রতম ধনাত্মক পূর্ণসংখ্য 1 হওয়ায় যেহেতু ধনাত্মক পূর্ণসংখ্যার জোড়গুলির মধ্যে সবচেয়ে ছোট যোগফলটি 1 1 {1,1} = 2 হয় একটি বেস উপস্থাপনায় প্রতিটি পূর্ণসংখ্যা অ-নেতিবাচক হয়, সুতরাং সমষ্টি 1 এর একমাত্র উপায়টি কেবল একটিতে 1 থাকে এবং অন্যান্য সমস্ত সংখ্যার 0 হয়। সুতরাং, আমরা কেবলমাত্র সমস্ত সংখ্যার যোগফলের যোগফল পরীক্ষা করতে পারি অ্যারে হয় 1।

কোডটি যা করে তা এখানে:

b-2S⁼1 Main link. Arguments: d
b-2    Convert d to base -2.
   S   Take the sum.
    ⁼1 Check if the sum is equal to 1.

1
ভাই, সেই ব্যাখ্যাটি লেখার জন্য সময় নিয়েছিল ...
এরিক দ্য আউটগল্ফার

একটি দীর্ঘ প্রোগ্রামের ব্যাখ্যাটি তখন দেখতে কেমন হবে তা দেখতে আমি ঘৃণা করব ...
ববাকাকাক

1
@ বাবাকোয়াক এখানে আমি ব্যাখ্যা করছি যে আমি কেন বেস রূপান্তর স্টাফ ব্যবহার করি। আমি মনে করি না দীর্ঘ প্রোগ্রামের ব্যাখ্যাটি এত দীর্ঘ হবে। একটি পোস্টে 30000 অবধি মার্কডাউন অক্ষর থাকতে পারে এবং দীর্ঘ প্রোগ্রামের ব্যাখ্যা যাই হোক না কেন আরও ক্ষতিকারক হবে। এছাড়াও, আমি অনেক দীর্ঘ বিবরণ পড়েছি, এবং সেগুলি বিরক্তিকর নয়।
এরিক আউটগলফার



10

এক্সেল, 40 36 বাইট

কলুমডিএ দ্বারা 4 টি বাইট সংরক্ষণ করা হয়েছে

এক্সেল অবশ্যই এটি করতে পারে তবে ত্রুটিগুলি সংশোধন করলে 11 বাইট যুক্ত হয়

=IFERROR(-2^IMREAL(IMLOG2(A1)),1)=A1

ইনপুটটি ঘরে রয়েছে A1। আউটপুট হয় TRUEবাFALSE

যদি এটি মিথ্যা মানগুলির জন্য কোনওটি ফেরত দেওয়ার FALSEবা #NUM!ত্রুটিযুক্ত হওয়ার অনুমতি দেওয়া হয় তবে এটি কেবল 25 বাইট হবে:

=-2^IMREAL(IMLOG2(A1))=A1

তিনি এখানে একটি ছোট উন্নতি করেছেন:=IFERROR(-2^IMREAL(IMLOG2(A1)),1)=A1
কলুমডেডি

1
@ কলামদা ধন্যবাদ! আমি জটিল সংখ্যা ফাংশনগুলি ব্যবহার করার জন্য একটি উপায় চিহ্নিত করার চেষ্টা করেছি তবে আমি যে সবকিছু নিয়ে এসেছি তা দীর্ঘ ছিল।
ইঞ্জিনিয়ার টোস্ট

9

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

Y(IÄÝm¹å

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

ব্যাখ্যা

Y(         # push -2
  IÄÝ      # push range [0 ... abs(input)]
     m     # element-wise power
      ¹å   # check if input is in the resulting list

ডাউনটা কেন?
ক্রিটসি লিথোস

@ ক্রিটিক্সিলিথোস: দেখে মনে হচ্ছে কেউ কোনও গল্ফিংয়ের ভাষাকে কমিয়ে দিয়েছে।
Emigna

6
সেটাও লক্ষ্য করা গেছে। যদিও আমি পিপিসিজির কাছাকাছি ছিলাম না, আমি শিখেছি যে স্ট্যান্ডার্ড ভাষাগুলিতে সৃজনশীল এবং আকর্ষণীয় সমাধানগুলি গল্ফিং ভাষায় 3-বাইট সমাধানের চেয়ে অনেক বেশি প্রশংসাযোগ্য। যাইহোক, কিছু লোক আছে যারা (দুর্ভাগ্যক্রমে) গল্ফিং ভাষায় খুব সৃজনশীল সমাধানকে নীচে ফেলেছিলেন, কারণ তারা মনে করে যে সবকিছুই অন্তর্নির্মিত, এবং অ্যালগরিদমগুলি (যদিও গল্ফিং ল্যাজেজে লেখা আছে) কতটা ভাল তা বোঝেন না। অবিশ্বাস্য সমাধানের জন্য +1 @ এমিগনা
মিঃ এক্সকোডার

ÄLY(småO8 এর Y(sÄLm¢Zজন্য 8 ... সর্বদা স্মরণীয় নয়
ম্যাজিক অক্টোপাস উরন

9

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

f=x=>!x|x%2?x==1:f(x/-2)

আরনাউল্ডকে 4 টি বাইট সংরক্ষণ করা হয়েছে।

f=x=>!x|x%2?x==1:f(x/-2)

console.log(f(-2));
console.log(f(-1));
console.log(f(0));
console.log(f(1));
console.log(f(2));
console.log(f(3));
console.log(f(4));


আমি যখন "রান কোড স্নিপেট" ক্লিক করি তখন কেন আমি কিছু ত্রুটি দেখতে পাই (সত্য / মিথ্যা মানগুলির আগে)?
নম্বরমানিয়াক

@ সংখ্যামারাক আমি নিশ্চিত নই, সম্ভবত আপনি এমন একটি ব্রাউজার ব্যবহার করছেন যা ES6 কে পুরোপুরি সমর্থন করে না?
টম

স্বাগতম, রিফ্রেশ এবং আবার চেষ্টা করুন, কোনও ত্রুটি নেই। প্রথমবার কী হয়েছিল তা নিশ্চিত নয়।
নম্বরমানিয়াক


8

এমএটিএল , 9 8 বাইট

2_y|:q^m

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

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

-8উদাহরণ হিসাবে ইনপুট বিবেচনা করুন

2_    % Push -2
      % STACK: -2
y     % Implicit input. Duplicate from below
      % STACK: -8, -2, -8
|     % Absolute value
      % STACK: -8, -2, 8
:     % Range
      % STACK: -8, -2, [1 2 3 4 5 6 7 8]
q     % Subtract 1, element-wise
      % STACK: -8, -2, [0 1 2 3 4 5 6 7]
^     % Power, element-wise
      % STACK: -8, [1 -2 4 -8 16 -32 64 -128]
m     % Ismember. Implicit display
      % STACK: 1

যদি আমি আপনার ব্যাখ্যাটি সঠিকভাবে বুঝতে পারি তবে প্রদত্ত ইনপুট n, এটি nমধ্যবর্তী পদক্ষেপ হিসাবে আকারের একটি অ্যারে তৈরি করে । দক্ষতা এখানে দক্ষতা একটি মানদণ্ড নয়!
টবি স্পিড

2
@ টবি অবশ্যই! এই কোড গল্ফ, দক্ষতা কে যত্নশীল? :-D
লুইস মেন্ডো


6

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

for(;$argn%-2==0;)$argn/=-2;echo$argn==1;

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

echo($l=log(abs($argn),2))==($i=$l^0)&&$argn>0^$i%2;

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

একটি রেজেক্সের সাথে কাজ করা

echo preg_match("#^".($argn>0?1:"1+0")."(00)*$#",decbin($argn));


5

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

একটি recursive ফাংশন যে আয় 0বা true

f=n=>n==1||n&&f(n/-2)

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

এতে ইনপুট -2 এর সঠিক শক্তি না হয়ে তাড়াতাড়ি পুনরাবৃত্তি বন্ধ করার জন্য nবিজোড় হওয়া বা abs(n)একের চেয়ে কম হওয়া - এর মতো কোনও সুস্পষ্ট পরীক্ষা অন্তর্ভুক্ত নয়

আমরা কেবলমাত্র প্রস্থান যখন nঠিক করতে পারেন সমান 1বা 0

এটি কাজ করে কারণ কোনও আইইইই -754 ফ্লোট শেষ পর্যন্ত 02 (বা -2) দ্বারা অঙ্কিত হওয়ার পরে অঙ্ক করা হবে কারণ পাটিগণিত আন্ডারফ্লোর কারণে ।

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



4

জাভা 7, 55 বাইট

boolean c(int n){return n==0?0>1:n%-2==0?c(n/-2):n==1;}

ব্যাখ্যা:

boolean c(int n){  // Method with integer parameter and boolean return-type
  return n==0 ?    //  If n is zero:
    0>1//false     //   Return false
   : n%-2==0 ?     //  Else-if n mod -2 is zero:
    c(n/-2)        //   Recursive call for the input divided by -2
   :               //  Else:
    n==1;          //   Return if n is one
}                  // End of method

পরীক্ষার কোড:

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

class M{
  static boolean c(int n){return n==0?0>1:n%-2==0?c(n/-2):n==1;}

  public static void main(String[] a){
    for(int i = -2; i <= 4; i++){
      System.out.println(i + ": " + c(i));
    }
  }
}

আউটপুট:

-2: true
-1: false
0: false
1: true
2: false
3: false
4: true

অ রিকার্সিভ পথ 5 বাইট খাটো: boolean c(int n){while(0==n%-2)n/=-2;return 1==n;}
অলিভিয়ের গ্রাগোয়ার 14

@ অলিভিয়ারগ্রোওয়ের দুর্ভাগ্যক্রমে যে n=0জাভাতে কেউ কাজ করে না , কারণ 0%-2==0হবে trueএবং 0/-2এখনও আছে 0, একটি অসীম লুপ সৃষ্টি করে, এ কারণেই আমি n==0?0>1আমার পুনরাবৃত্ত পদ্ধতিতে অংশটি যুক্ত করেছি।
কেভিন ক্রুইজসেন 14

দুর্দান্ত দাগ!
অলিভিয়ের গ্রাগোয়ার 14


3

জাভাস্ক্রিপ্ট (ES7), 45 বাইট

x=>-1**Math.log2(Math.abs(x))*Math.abs(x)==x

ম্যাথ.এবস (এক্স) x> 0? X: -x, 11 বাইট থেকে 8 বাইটের চেয়ে দীর্ঘ দ্বিতীয় ম্যাথ.এবস (এক্স)
f tonɛtɪk

এতে ES7 নির্দিষ্ট কী?
অর্জুন

@ ডবিফ্রি-এলফ, **হ'ল।
কিওয়ারটি

3

পার্ল 6 , 21 বাইট

{$_==(-2)**(.lsb//0)}

চেষ্টা করে দেখুন

সম্প্রসারিত:

{  # bare block lambda with implicit parameter 「$_」

  $_                  # is the input
  ==                  # equal to
  (-2)**( .lsb // 0 ) # -2 to the power of the least significant bit of the input
}

নোট করুন যে 0.lsbরিটার্নগুলি Nilএকটি সংখ্যা হিসাবে ব্যবহৃত হওয়ার সময় সতর্কতা তৈরি করে, তাই সংজ্ঞায়িত বা অপারেটর  //ব্যবহৃত হয়।
( অন্যরকম তির্যক //হিসাবে চিন্তা করুন ||)

কোনও পদক্ষেপ প্রত্যাশিত যেখানে কোনও প্রার্থীর বিহীন পদ্ধতিতে কল স্পষ্টভাবে কল করা হয় $_। ( .lsb)

সঙ্গে কাজ করে.msb


আমার এটা ভাল লেগেছে!
tale852150


3

পাইথন , 24 বাইট

lambda n:n*n&n*n-1<n%3%2

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

বিট ট্রিক 2 (বা ) এর পাওয়ার k&k-1==0কিনা তা পরীক্ষা করে । এই পরীক্ষা করা হচ্ছে হিসাবে আমাদের বলে কিনা 2 একটি শক্তি।kk==0k=n*nn*n&n*n-1==0abs(n)

n-2 এর পাওয়ার কিনা তা আরও দেখতে আমাদের কেবল এটি পরীক্ষা করা দরকার n%3==1। এটি কাজ করে কারণ মোড 3, মান -2 1 এর সমান, সুতরাং এর শক্তিগুলি 1 হয় বিপরীতে, তাদের অবহেলাগুলি 2 মোড 3, এবং অবশ্যই 0 0 মড 3 দেয়।

আমরা চেকগুলিকে একত্রিত করি n*n&n*n-1==0এবং n%3==1একটি একক অভিব্যক্তিতে পরিণত করি। প্রথম লেখা যেতে পারে <1জন্য ==0, যেহেতু এটি কখনো নেতিবাচক নয়। দ্যn%3==1সমতূল্য n%3%20 বা 1. সুতরাং, আমরা তাদের একত্রিত করতে পারেন দান, n*n&n*n-1<n%3%2


2

আর, 22 বাইট

স্টিডিন থেকে ইনপুট নেয়, ততক্ষণে ফেরত দেয় TRUEবা FALSEতদনুসারে।

scan()%in%(-2)^(0:1e4)

আমি 100% নিশ্চিত নই যে এটি একটি বৈধ উত্তর, কারণ এটি কেবলমাত্র আর এর আকার সীমা পর্যন্ত পূর্ণসংখ্যার জন্য কাজ করে এবং যদি পূর্ণসংখ্যাগুলি সীমাহীন হয় তবে এটি কাজ করবে না। তবে, বিধিগুলি বলে:

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

যা আর একটি কল্পিত সংস্করণে নেই সীমাবদ্ধ পূর্ণসংখ্যার, তাহলে আমরা নিম্নলিখিত কোড, একই বাইট গণনা জন্য ব্যবহার করতে পারে মঞ্জুরি দিন:

scan()%in%(-2)^(0:Inf)

অবশ্যই, রিয়েল আর এ, উপরের কোডটি কেবল দেয় Error in 0:Inf : result would be too long a vector


2

বিসি 88 বাইট

bc -l <<< "n=$1;q=l(sqrt(n*n));p=4*a(1);((n<1)*c(q/l(2)*p/2)+(n>1)*(s(q/l(4)*p)))^2==0"

আমার কাছে neg2.shএটি একটি ফাইলে রয়েছে এবং এটি 1ক্ষমতা -2এবং 0অন্যথায় প্রিন্ট করে

আমি জানি এটি আসলেই দীর্ঘ, তবে মজাদার ছিল

পরীক্ষা

$ for i in {-129..257}; do echo -n "$i: "; ./neg2.sh $i; done | grep ': 1'
-128: 1
-32: 1
-8: 1
-2: 1
1: 1
4: 1
16: 1
64: 1
256: 1

ব্যাখ্যা

মূল সংস্থার দুটি অংশ রয়েছে, উভয়ই শক্তির শক্তির জন্য শূন্যের সমান চেষ্টা করছে -2

q=l(sqrt(n*n))               % ln of the absolute value of the input
p=4*a(1)                     % pi: arctan(1) == pi/4
q/l(2) -> l(sqrt(n*n))/l(2)  % change of base formula -- this gives
                             % the power to which 2 is raised to equal
                             % sqrt(n*n). It will be an integer for 
                             % numbers of interest
n<1                          % 1 if true, 0 if false. for negative
                             % numbers check for powers of 2
n>1                          % for positive numbers, check for powers
                             % of 4
c(q/l(2)*p/2)                % cos(n*pi/2) == 0 for integer n (2^n)
s(q/l(4)*p)                  % sin(n*pi) == 0 for integer n (4^n)
(....)^2==0                  % square the result because numbers are
                             % not exactly zero and compare to 0

আমি কখনই ত্রিকোণমিতির প্রত্যাশা করিনি! ভাল উত্তর!
টবি স্পিড


2

ফুরিয়ার , 53 বাইট

I~X1~N~G0(0-2*G~GX*X~PG*G>P{1}{0~O~N}G{X}{1~O0~N}N)Oo

আমি এটি পরে গল্ফিংয়ে কাজ করব, তবে এর রূপরেখাটি হ'ল:

X = User input
G = N = 1
Loop until N = 0
    G = -2 * G
    P = X*X 
    If G*G > P then
        N = O = 0
    End if
    If G = X then
        O = 1
        N = 0
    End if
End loop
Print O

কোথায় আউটপুট 0জন্য falsey এবং 1জন্য truthy

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


আলগো বর্ণনায় পি ভেরিয়েবল ব্যবহার না করে লেখার চেয়ে ভাল হবে যদি G * G> X * X হয় তবে ...?
রোজলুপি

@ রোসলুপি এটি আরও ভাল হবে তবে ফুরিয়ার কেবল এটিরূপে আচরণ করবে(G*G > X)*X
বিটা ডেকে

2

ক্যাসিও বেসিক , 76 বাইট

মনে রাখবেন যে 76 বাইট এটি আমার ক্যালকুলেটরটিতে যা বলে।

?→X
0→O
While Abs(X)≥1
X÷-2→X
If X=1
Then 1→O
IfEnd
WhileEnd
O

এটি ক্যাসিও বেসিকের আমার প্রথম উদ্যোগ ... আমি কখনই বুঝতে পারি না যে আমি কোনও ক্যালকুলেটরে এই জাতীয় শালীন প্রোগ্রাম লিখতে পারি: ডি


1

পাইথন 2.7, 40 বাইট

a=input()
while a%-2==0:a/=-2
print a==1

ক্রেডিট জনাব Xcoder মূল জন্য কোড দৈর্ঘ্য 43 বাইটের। আমার মন্তব্য করার মতো খ্যাতি নেই বলে আলাদা উত্তর হিসাবে পোস্ট করতে হয়েছিল।


এটি একই ধরণের, যেহেতু আমি আমার উত্তরটি সংস্করণ-সর্বজনীন তৈরি করেছি তাই এটি পাইথন 2 এবং 3 উভয় ক্ষেত্রেই কাজ করে যদি আপনি পাইথন 3-এ এটি করতে থাকেন তবে আপনাকে যুক্ত করা উচিত ছিল int(input())যা সীমা ছাড়িয়ে যেত def-একটি ফাংশন। অতিরিক্তভাবে, পাইথন 3 এ আপনাকে অবশ্যই print()1 টি বাইট নষ্ট করতে হবে । এজন্য আমি
সেভাবেই

1

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

+`(1+)\1
$1_
^(1|-1_)(__)*$

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

আনারিতে ইনপুট নেয়, যা রেটিনার পক্ষে মোটামুটি মান। প্রথম দুই লাইন থেকে কোড প্রথম দুই লাইন উপর ভিত্তি করে বাইনারি রূপান্তর করার আংশিক ইউনারী না টিউটোরিয়াল এন্ট্রি (যে কোন বিদেশী 1গুলি যাহাই হউক না কেন ব্যর্থ ম্যাচ কারণ হবে), এবং চার একটি ক্ষমতা বা নেতিবাচক বিজোড় ক্ষমতার শেষ লাইনটি চেক দুই.

+`(1+)\1\1\1
$1_
^(-1)?1_*$

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

এবার আমি চারটি রূপান্তরকে ভিত্তি করে আংশিক একাকার করব do চারটি সমাপ্তির ^1_*$শক্তি যেমন দুটি শেষের নেতিবাচক বিজোড় শক্তিগুলি ^-11_*$

+`\b(1111)*$
$#1$*
^(-1)?1$

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

এবার আমি কেবল যতটা পারি তার দ্বারা চারটি ভাগ করে নিচ্ছি এবং শেষে 1বা -11তার জন্য যাচ্ছি ।

+`\b(1+)\1\1\1$
$1
^(-1)?1$

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

চারটি দিয়ে ভাগ করার আর একটি উপায়। এবং এখনও বিরক্তিকরভাবে 27 বাইট ...


1

স্কিম, 60 বাইট

(define(f n)(cond((= 1 n)#t)((<(abs n)1)#f)(#t(f(/ n -2)))))

পুনরাবৃত্তির সমাধান।

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