এই সংখ্যাটি কি মন্দ?


34

ভূমিকা

সংখ্যা তত্ত্ব অনুসারে, এর বাইনারি উপস্থাপনায় 1 এর একটিও সংখ্যাসমূহ থাকলে কোনও সংখ্যাকে মন্দ বলে বিবেচনা করা হয়। আজকের চ্যালেঞ্জে, আপনি প্রদত্ত সংখ্যাটি খারাপ কিনা তা চিহ্নিত করবেন।

চ্যালেঞ্জ

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

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

    3 => True
    11 => False
    777 => True
    43 => True
    55 => False
    666 => False
    

লিডারবোর্ড

পৃষ্ঠার নীচে একটি স্ট্যাক স্নিপেট রয়েছে এই প্রশ্নের জন্য লিডারবোর্ডযুক্ত। (ধন্যবাদ, @ মার্টিন এন্ডার)

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করার জন্য, দয়া করে নীচের মার্কডাউন টেম্পলেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes

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

# Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও বানাতে পারেন যা লিডারবোর্ড স্নিপেটে প্রদর্শিত হবে:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes

সম্পাদনা করুন: আমি বিশ্বাস করি এই প্রশ্ন সদৃশ নয় এই যেহেতু যে প্রশ্ন বেশী সংখ্যা গণনা জিজ্ঞেস করছে, এই প্রশ্ন জিজ্ঞাসা করা হয়, কারণ বেশী সংখ্যা এমনকি কিনা। আপনি কেবল বিটগুলি গণনা করে এই প্রশ্নটি সম্পাদন করতে পারবেন , তবে অন্যান্য পদ্ধতিও রয়েছে


2
সম্পর্কিত (প্রতিটি বাইনারি ডিজিটের এক্সওআর-আইং যোগ করা মডুলো -২ যোগ করার মতো)।
কেভিন ক্রুইজসেন


2
@ বেটাডেকে কিন্তু এটি বিপরীতে কাজ করে না: যেমন আপনি এই সমস্ত উত্তর নিতে এবং মোড ২ সরাতে পারবেন না Therefore সুতরাং, এই চ্যালেঞ্জটি কিছু নতুন পদ্ধতি আমন্ত্রণ জানিয়েছে।
উভচর

13
আমি বিশ্বাস করি এটি 666 => Falseএকটি পরীক্ষার কেস হওয়া উচিত।
ব্যবহারকারী 2390246

3
লিডারবোর্ডটি আমার জন্য নষ্ট হয়ে গেছে
জো কিং

উত্তর:


35

জেড 80 এসেম্বলি (8-বিট), 2 বাইট

নিম্নলিখিত কোডটি কেবল 255 পর্যন্ত মান সহ কাজ করে:

; Input is given in register A.
; P flag is set if A is evil.
B7     or A
C9     ret


16-বিট সংস্করণ (সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে), 3 বাইট

এটি 65535 অবধি মান সহ কাজ করে।

; Input is given in BC.
; Output is the same as above.
78     ld A,B
A9     xor C
C9     ret

আপনি দু: সাহসিক বোধ করছি, তাহলে আপনি ইনপুট মজুত করে 1 বাইট বন্ধ শেভ করতে Aএবং Cতাই মত

      ld BC, 777
C5    push BC
F1    pop AF

এবং তারপর চলমান

A9    xor C
C9    ret

যাইহোক, এটি কলারের উপরে বোঝা ফেলেছে, তাই এটিও হতে পারে যে দুটি বাইট ( push BCএবং pop AF) পাশাপাশি গণনা করা উচিত।


আমি এটি পছন্দ করি তবে এটি কীভাবে কাজ করে? সমাবেশের জন্য আমার স্মৃতি (6502 + আর্ম) যে or2 অপারেটরগুলির সাথে সামান্য দিকের
উত্তর-ব্র্যাডলে

2
@ উত্তর-ব্র্যাডলি জেড ৮০-তে, এটি বোঝানো হয়েছে যে স্মৃতিবিদ্যার দ্বিতীয় অপারেন্ডটি orহ'ল সংযোজক এ। এই ক্ষেত্রে, কমান্ডটি এ পরিবর্তন করে না এটি কেবল স্থিতি রেজিস্টারকে (এবং বিশেষত প্যারিটি পতাকা) সতেজ করে এ এর বিষয়বস্তু প্রতিফলিত করুন
cschultz2048

1
হয় Pঅনুযায়ী অনুমতি codegolf.meta.stackexchange.com/a/8509/29560 ? এটি F(পতাকাগুলি) নিবন্ধের মধ্যে একটি মাত্র যা এতে কেবল তিন জোড়া নির্দেশাবলী দ্বারা প্রভাবিত রয়েছে। এছাড়াও, এই উত্তরটি উল্লেখ করতে ব্যর্থ হয়েছে যে এটি কেবল 8-বিট মানগুলির জন্য প্রতিযোগিতা করছে, যেহেতু A8-বিট রেজিস্টার। এর অর্থ এটি 777255 এর চেয়ে বেশি বা অন্য কোনও স্বাক্ষরিত মানের জন্য কোনও উত্তর দিতে অক্ষম
সিজে ডেনিস

2
জঘন্য বিল্ট-ইনস:P
জো কিং

1
@ cschultz2048 এর Aসাথে জুটিবদ্ধ F, তাই আমি গ্রহণ করব না ABবা BA16-বিট মান হিসাবে করব। BC16-বিট হয় তবে তার পরে Aঅন্যটি এক্সওরিংয়ের আগে সেগুলির মধ্যে একটি লোড করার জন্য আপনার অতিরিক্ত নির্দেশের প্রয়োজন । আমি সবসময় কেবল উল্লেখ করেছি যে আমার জেড 80 উত্তরগুলি প্রশ্নের উপর নির্ভর করে 255 বা 65535 পর্যন্ত পুরোপুরি কাজ করে। সম্ভবত একটি 16-বিট সংস্করণ যুক্ত করুন? সুতরাং 8-বিট মানগুলির জন্য 2 বাইট, 16-বিট মানগুলির জন্য 3 বাইট
সিজে ডেনিস

25

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

f=n=>n?!f(n&~-n):1

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

ব্যাখ্যা

বিটওয়াইজ যুক্তি এইভাবে চলে:

  • পূর্ণসংখ্যার জন্য, ~-nএর সমতুল্য -(-n)-1, যাতে করার অন্য একটি উপায় n-1। যে বিশেষ ক্ষেত্রে, আমরা আসলে ব্যবহার করতে পারে n-1
  • n & (n-1)অন্তত গুরুত্বপূর্ণ বিট সেট সরিয়ে ফেলা হবে 1 মধ্যে এন কারণ decrementing এন সব trailing সক্রিয় 0 'মধ্যে গুলি 1 s' এর এবং মুছে ফেলা হবে 1 (প্রসারণ বহন করে) যে অবিলম্বে অনুসরণ করে, যখন সবকিছু কিছুকে শেষে অপরিবর্তিত রাখবে।

    এন = 24 (বাইনারি 11000) এর উদাহরণ:

      11000 (24)                  11000 (24)
    -     1                   AND 10111 (23)
    -------                   ---------
    = 10111 (23)              =   10000 (16)
       ^                           ^
       |                           |
       +--- this bit is cleared ---+
    

অতএব, আমরা যত আছে অনেক recursive কল হিসাবে প্রক্রিয়া 1 'এর বাইনারি প্রতিনিধিত্ব গুলি এন , সঙ্গে প্রতিটি সময় ফল ইনভার্টারিং !। সর্বশেষ কলটি সর্বদা 1 প্রদান করে

উদাহরণ:

f(24) = !f(16) = !!f(0) = !!1 = true
f(7) = !f(6) = !!f(4) = !!!f(0) = !!!1 = false

হ্যালো, আমি কোডটি কী তা বুঝতে পেরেছি, তবে আমি বিটওয়াইজ অপারেশন সম্পর্কে বেশ কয়েকটি নিবন্ধ পড়া সত্ত্বেও, কোনও সংখ্যা 2 এর শক্তি কিনা তা পরীক্ষা করে etc. ইত্যাদি আমি জানি যে পুনরাবৃত্তির কাজটি কী । আমি কেন পাই না কেন এটি এইভাবে ব্যবহৃত হয়েছে এবং কেন এটি ধাঁধাটির উত্তর দিতে কাজ করে, অর্থাত্ পুনরাবৃত্তি এবং! এফ (দুইটির শক্তি) এর মধ্যে সংযোগ <==> দুষ্ট সংখ্যা। আপনার যদি সময় থাকে তবে ব্যাখ্যাটি স্বাগত হবে :) ধন্যবাদ!
সুফফ্লাই

1
@ সাফফ্লাই আমি একটি ব্যাখ্যা যুক্ত করেছি এবং বিটিডাব্লু: পিপিসিজিতে আপনাকে স্বাগতম!
আর্নল্ড

প্রক্রিয়াজাতকরণ এখন খুব পরিষ্কার। তবুও ধারণা / যুক্তি আসলেই যাদু! ব্যাখ্যা করার জন্য আপনাকে ধন্যবাদ!
সুফফ্লাই

13

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

lambda n:int(bin(n),13)%2

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

bin(n)মত একটি ফলাফল দেয় '0b10101'। এটি একটি বেস -13 পূর্ণসংখ্যা হিসাবে পড়া, আমরা পাই

যা মডিউল 2 কে হ্রাস করে 1 1 5 + 1 1 4 + 0 1 3 + 1 1 2 + 0 1 1 + 1 1

11135+1134+0133+1132+0131+1130
1 + 1 + 0 + 1 + 0 + 1
115+114+013+112+011+110(mod2)
1+1+0+1+0+1(mod2).

সুতরাং int(bin(n),13)%21 + সমান (এর মধ্যে সংখ্যা bin(n)) মডুলো 2।

যদি nমন্দ হয় তবে ফলাফলটি 1; অন্যথায় এটি 0 হয়।

আমি নুডল 9 থেকে এই কৌশলটি তুলেছি


যেহেতু এই পাইথন 2, কোড আরো অননুমোদিত repr ব্যাকটিক সিনট্যাক্স সঙ্গে সংক্ষিপ্ত করা যেতে পারে: lambda n:int(`n`,13)%2এটি অনলাইন চেষ্টা করুন!
গ্যারেথপিডব্লিউ

হ্যাঁ, সেখানে একটি মস্তিষ্কের অল্প দূরত্ব ছিল এবং int এর বেস আর্গুমেন্টের উদ্দেশ্য ভুলে গিয়েছিল। উপস!
গ্যারেথপিডাব্লু

11

জাপট -h!, 5 4 3 বাইট

¤å^

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


ব্যাখ্যা

¤       :Convert to base-2 string
 å^     :Cumulatively reduce by XORing
        :Implicitly output the last element negated

আপনি যদি এর জন্য চেষ্টা করতে চান তবে @ লুইসফেলিপডিজেস মুনোজ, কেভিনের 05 এএবি 1 ই দ্রবণটি পোর্ট করে 5 বাইটেও কাজ করে।
শেগি

¤¬x vএটি কেভিনের উত্তর
লুইস ফেলিপ দে জেসুস মুনোজ

@ লুইসফেলিপ ডেজেসাস মুনোজ, হ্যাঁ, এটাই।
শেগি

8

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 43 38 বাইট


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

i=>Convert.ToString(i,2).Sum(c=>c)%2<1

Ungolfed

i => Convert.ToString( i, 2 ).Sum( c => c ) % 2 < 1

পরীক্ষার সাথে সম্পূর্ণ কোড

Func<Int32, Boolean> f = i => Convert.ToString( i, 2 ).Sum( c => c ) % 2 < 1;

Int32[] testCases = { 3, 11, 777, 43, 55 };

foreach( Int32 testCase in testCases ) {
    Console.Write( $" Input: {testCase}\nOutput: {f(testCase)}" );
    Console.WriteLine("\n");
}

Console.ReadLine();

রিলিজ

  • v1.1 - -5 bytes- প্রতিস্থাপিত CountকরতেSum
  • v1.0 - 43 bytes- প্রাথমিক সমাধান।

নোট

  • না

2
আপনার "অলগল্ড" সংস্করণ আমাকে উপহার দেওয়ার জন্য উত্সাহিত।
জ্যাক ব্রাউনস্টাইন

8

বাশ (কোনও বাহ্যিক উপযোগ নেই), 56 44 বাইট

while(($1));do set $(($1/2)) $(($2+$1%2));done;!(($2%2))

(($1))&&exec $0 $[$1/2] $[$2+$1%2];!(($2%2))

এটি ধরে নিয়েছে যে সংখ্যাটি পাওয়া গেছে $1, প্রথম কমান্ড লাইনের যুক্তি হিসাবে পাস করা হয়েছে। এটিও ধরে নিয়েছে যে এটি একটি শেল স্ক্রিপ্ট (যাতে এটি execনিজেই করতে পারে)।

এটি একটি ফ্যাশনের পরে পুনরাবৃত্তি করে, ব্যবহার করে exec $0, যতক্ষণ না সংখ্যা (ইন $1) শূন্যে পৌঁছায়, প্রতিটি পুনরাবৃত্তিতে এটি দুটি দ্বারা ভাগ করে। এটি বিজড়িত $2যে সংখ্যার আমরা পাই তার সংখ্যারও পরিমাণ ( সংখ্যায়) থাকে। শেষে, আসল সংখ্যাটি ছিল "দুষ্ট" যদি যোগফলটি $2বিজোড় না হয়।

অনুরোধের উদাহরণ:

$ ./script 3 && echo evil
evil

$ ./script 11 && echo evil

$ ./script 777 && echo evil
evil

$ ./script 43 && echo evil
evil

$ ./script 55 && echo evil

এর জন্য 0:

$ ./script 0 && echo evil
./script: line 1: ((: %2: syntax error: operand expected (error token is "%2")
evil

পাশে কিছুটা অতিরিক্ত দিয়ে সঠিক ফলাফল।


7

আর , 37 26 বাইট

!sum(scan()%/%2^(0:31))%%2

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

একটি বিকল্প রবার্ট এস এর উত্তরের , এটি অন্তর্নির্মিত বিট বিভক্তকরণকে রক্ষা করে তবে কম গোল্ফির সমাপ্ত হয় এবং জেসি এবং ডিগএমএলকে ধন্যবাদ দিয়ে সামান্য গল্ফিয়ারে এসে পৌঁছায়।

231-1


লগ 2 এর পরিবর্তে হার্ডকোড 31 না কেন? এটি অনলাইন চেষ্টা করুন!
digEmAll

@ ডিগএমল যার পরিবর্তে এর অর্থ x সংজ্ঞায়িত করার দরকার নেই
জয়সি

231-1%/%%%

এছাড়াও ইনটোবিটস কেবল 2 ^ 31-1% অবধি পূর্ণসংখ্যার মানকে সমর্থন করে
DigEmAll

6

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

bSOÈ

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

ব্যাখ্যা:

b       # Convert to binary string
        #  i.e. 777 → 1100001001
 S      # Change it to a list of 0s and 1s
        #  i.e. 1100001001 → ['1','1','0','0','0','0','1','0','0','1']
  O     # Take the sum
        #  i.e. ['1','1','0','0','0','0','1','0','0','1'] → 4
   È    # Check if it's even (1 as truthy, 0 as falsey)
        #  i.e. 4 → 1


5

আর , 99 98 44 34 28 বাইট

-1 কেভিন ক্রুইজসেনকে ধন্যবাদ! -54 এনজিএম ধন্যবাদ! -10 জিউসেপ্পিকে ধন্যবাদ! -6 জয়সি ধন্যবাদ!

!sum(intToBits(scan())>0)%%2

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


বিকল্পভাবে, binaryLogicপ্যাকেজটি ব্যবহার করে (39 বাইট):

!sum(binaryLogic::as.binary(scan()))%%2

2
আমি আর খুব ভাল জানি না, তবে আমি নিশ্চিত ==0হতে পারি <1:)
কেভিন ক্রুইজসেন



1
এটি একই সাথে কাজ করে বলে আমি মনে করি: 32 বাইট তবে এর কিছুটা ব্যাখ্যা দরকার :)
digEmAll


5

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

c;f(n){for(c=0;n;c++)n&=n-1;n=~c&1;}

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

কেএন্ডআর থেকে পদ্ধতি https://ographicics.stanford.edu/~seender/bithacks.html# অ্যাকাউন্টবিটসেটকার্নিঘান

অপটিমাইজেশন স্তর 0 দিয়ে সংকলন করতে হবে


জিসিসি 5.4.0 এ সংকলন করে না: error: expected constructor, destructor, or type conversion before '(' token(তীরটি fফাংশনটির নামটির দিকে নির্দেশ করছে )। আমার কী সংকলক পতাকা (গুলি) দরকার?
ভিলপ্যাক্স

1
সঙ্গে কাজ করে না -O
nwellnhof

2
"সত্যের জন্য 0 প্রত্যাবর্তন করে, 1 টি ভুয়া" এই আইনী কি? আপনার উত্তরটি অসম্মানিত করার চেষ্টা করছেন না, কেবল কৌতূহলী এবং কারণ এটি আমার একটি বাইট সংরক্ষণ করবে। দ্রষ্টব্য: প্রশ্নের সত্যবাদী শব্দটি এই উত্তরের সাথে লিঙ্ক করেছে । এবং এই মন্তব্যটিতে সত্যতার কথাও উল্লেখ করা হয়েছে।
বোরকা 223

@ ননহ্নহফ @ ভিলাপএক্স আমার .3.৩.০ তে জরিমানা সংকলন করেছেন - ঠিক নিশ্চিত করুন যে আপনি -O0সংকলক পতাকাটি মিস করছেন না ।

@ বোরকা ২৩৩ হুম্ম এই সাইটটি অনুধাবন করার কয়েক মাস পরে, আমি এই ধারণার মধ্যে ছিলাম যে সত্যবাদী এবং মিথ্যা যে কোনও কিছু হতে পারে, যতক্ষণ না তারা আপনার সমাধানের সাথে সামঞ্জস্য থাকে। তবে, আপনি যে উত্তরটি যুক্ত করেছেন তা অবশ্যই এর বিরোধিতা বলে মনে হচ্ছে। আমি এগিয়ে গিয়ে বাইট যুক্ত করলাম। ধন্যবাদ
ওয়াজ টু

5

ওল্ফ্রাম ভাষা (গণিত) , ২৪ 22 বাইট

2|DigitCount [#, 2,1] &

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



4

পিএইচপি, 37 36 বাইট

<?=1&~substr_count(decbin($argn),1);

এটি চালানোর জন্য:

echo '<input>' | php -nF <filename>

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

ছাপে 1সত্যের জন্য , এবং0 মিথ্যা ।

বোনয়েট এসনার্ডকে -1 বাইট ধন্যবাদ !


1
আমার মনে হয় আপনি মডিউল অপারেশন সরিয়ে এক বাইট সংরক্ষণ করতে পারেন: <?=1&~substr_count(decbin($argn),1);। এটি একটি মিথ্যা জন্য 0 প্রিন্ট করে।
বেনোইট এসনার্ড 11

ধন্যবাদ @ বেনোইটসনার্ড! এটা খুব চালাক, আমি আমার উত্তর আপডেট করেছি :) আপনি প্রতিদিন নতুন কিছু শিখেন!
ডেভিড

4

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

ḃo-0

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

একাধিক পরীক্ষার কেস সহ (evil মন্দ এবং 👼 তা নয় 👼)

এর সম্পর্কে আমি সম্প্রতি আবিষ্কার করা কিছু ব্যবহার করে - শিকারী : এর ডকুমেন্টেশনটি কেবল "[ইনপুট] এর উপাদানগুলির পার্থক্য" বলে, তবে এটি যা করে তা "ইনপুট সমান সূচকযুক্ত উপাদানের যোগফল (0 তম থেকে শুরু), বিয়োগের যোগফলকে বিয়োগ করে ইনপুট এর সূচিযুক্ত উপাদান "।

এখানে,

সংখ্যাটিকে বাইনারি অঙ্কের অ্যারে রূপান্তর করে,

o সমস্ত 1 টি একসাথে আনতে তাদের বাছাই করে।

এখন, যদি 1 এর সমান সংখ্যা হত তবে সম সূচক এবং বিজোড় সূচকগুলিতে সমান সংখ্যক 1s থাকত। তাহলে-তারপরে পরে একটি 0 দেবে 1 তবে 1s এর বিজোড় সংখ্যা থাকলে এখানে একটি অতিরিক্ত 1 স্টিকিং থাকত যার ফলে পার্থক্য হয় -1 বা 1 হয়।

সুতরাং, অবশেষে, আমরা দৃsert়ভাবে বলছি যে পার্থক্যটি রয়েছে 0এবং সে অনুসারে একটি সত্য বা মিথ্যা ফলাফল পান। সঙ্গে নমনীয় আউটপুট প্রয়োজনীয়তা , এই truthy আউটপুট এবং -1 এবং উভয় falsey আউটপুট হিসাবে 1 একটি 3 বাইট উত্তরের জন্য মুছে যেতে পারে, 0 সঙ্গে।


4

ইন্টারকল , 90 65 63 বাইট

DOWRITEIN:1
DO:2<-'#0$#65535'~?':1~:1'
DOREADOUT:2
PLEASEGIVEUP

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

সি স্টাইলের মন্তব্যে অসমাপ্ত এবং প্রসারিত (এটির জন্য মূল্য)

DO WRITE IN :1 //Store user input in 1
DO :2<-:1~:1 //Select just the ones. So will convert binary 10101 to 111
DO :3<-:?2 //Run the unary xor over the result. Essentially, xor with the right bitshifted
           //(with wraparound) value).
DO :9<-#0$#65535 //Intermingle the 16 bit values of all 0's and all 1's, to create a
                 //32 bit number with 1's in the odd positions.
DO :4<-:9~:3 //It turns out that at this point, evil numbers will have no bits in odd
             //positions, and non-evil numbers will have precisely one bit in an odd
             //position. Therefore, the ~ will return 0 or 1 as appropriate.
PLEASE READ OUT :4 //Politely output
PLEASE GIVE UP //Polite and self explanatory

এন্টার্কালে এটিকে সম্ভবযোগ্য করার জন্য আমাকে কয়েকটি ছাড় দেওয়া হয়েছিল। প্রথমটি হ'ল সমস্ত ইন্টারকল প্রোগ্রামগুলির মতো, সংখ্যাগত ইনপুট অবশ্যই লিখতে হবে। আপনি যদি ইনপুট করতে চান707 তবে সরবরাহ করবেন SEVEN OH SEVEN

দ্বিতীয়টি হ'ল ইন্টারকলের সত্যিকারের যথাযথ সত্যতা বা মিথ্যা মান নেই। পরিবর্তে, এটি রোমান অঙ্ককে আউটপুট দেবেI (1) যদি সংখ্যাটি খারাপ না হয়, বা 0 (সাধারণত -রোমান সংখ্যাগুলি সাধারণত 0 উপস্থাপন করতে পারে না বলে প্রতিনিধিত্ব করে)।

যদি আপনি সেগুলি ফ্লিপ করতে চান যাতে অশুভ সংখ্যাগুলি 1 এবং অ-অশুভ সংখ্যা 0 ফিরে আসে, আপনি নীচে বর্ণা version্য সংস্করণ থেকে 4 এবং 5 লাইন পরিবর্তন করতে পারেন, যদিও এটি 3 বাইট যুক্ত করে না।

DO:9<-#65535$#0
DO:4<-#1~:9~3

3

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

Even@Sum@Bin

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

(ওল্ড 13 বাইট Even@1&`~@Bin:)

এটি তিনটি ফাংশনের সংমিশ্রণ:

  1. Bin
  2. Sum
  3. Even

এই চেক যে Sumএর Binইনপুটের এআরওয়াই সম্প্রসারণ হয় Even


: | আমার কোনও শব্দ নেই
ASCII- কেবল

@ এএসসিআইআই-কেবল যথেষ্ট সংহত, তাই না? C:
কনর ও'ব্রায়ান

3

ডিসি , 18 16 বাইট

[2~rd1<M+]dsMx2%

দুষ্টের জন্য 0 এবং স্ট্যাকের দিকে 0 ফিরে আসে

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

মোটামুটি সোজা - পুনরাবৃত্তভাবে ~নতুন ভাগফলের সাথে সংযুক্ত ভাগফল / বাকী অপারেটর প্রয়োগ করে এবং সমস্ত অবশিষ্টাংশ একসাথে যুক্ত করে, তারপরে মোডগুলি 2 অংশকে (একটি স্ট্যান্ডার্ড ট্রুটি / ফালসিতে ফ্লিপ করতে দুটি বাইট ব্যয় করার পরে)

Conকমত্যের প্রতিফলিত করার জন্য সম্পাদিত যে 0 সত্যবাদী এবং 1 মিথ্যাচারের জন্য 1 ঠিক আছে, বিশেষত এমন ভাষায় যার কোনও ধরণের if(boolean)নির্মাণ নেই।


3

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

lambda n:~bin(n).count('1')&1

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

সত্য হলে 1 প্রদান করে, অন্য 0

সংখ্যাটিকে '0 বি 11' এর মতো বাইনারি স্ট্রিংয়ে রূপান্তর করে, 1 এস সংখ্যা গণনা করে, ফলাফলের পরিপূরক পান এবং পরিপূরকের শেষ বিটটি প্রদান করে (ধন্যবাদ, https://codegolf.stackexchange.com/users/53560/cdlane !) (1 ​​যদি মূল সংখ্যাটি সমান হত তবে 0 এটি বিজোড় হলে)।


1
কোনও কম বাইট নেই তবে lambda n:~bin(n).count('1')&1সম্ভাব্য কম ব্যয়বহুল কিছু দিয়ে মডিউলার বিভাগটি প্রতিস্থাপন করে।
সিডিলেট

3

x86-16, 3 বাইট

এনএএসএম তালিকা:

 1                                  parity16:
 2 00000000 30E0                        xor al,ah
 3 00000002 C3                          ret

এএক্স-এ 16-বিট ইন্টিজার ফাংশন আর্গ (যা ধ্বংস হয়), পিএফ-এ রিটার্ন মান।

হার্ডওয়্যার x86 এর প্যারিটি ফ্ল্যাগে আমাদের জন্য ফলাফলের সমতা গণনা করে । কলার শাখাতে jp/ jnpবা তাদের পছন্দ মতো যা ব্যবহার করতে পারে ।

@ Cschultz এর Z80 / 8080 উত্তরের মতো ঠিক কাজ করে ; 8080 বাস্তব 8080 সহজ থেকে যান্ত্রিক উত্স-পোর্টিং করতে ডিজাইন করা হয়েছিল ।

নোট করুন যে পিএফটি কেবলমাত্র বিস্তৃত ফলাফলের লো বাইট থেকে সেট করা আছে, তাই test edi,edix86-64 সংস্করণের জন্য কাজ করবে না। আপনাকে 16 বিটের নিচে অনুভূমিক-জোর করতে হবে, বাpopcnt eax, edi / and al,1(যেখানে 0 টি সত্য)।


3

সি ++ ( জিসিসি) (-O0),  36  31 বাইট

int f(int i){i=!i||i%2-f(i/2);}

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


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

int f(int i){return!i||i%2-f(i/2);}

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


কোড গল্ফিং এ আমার প্রথম প্রচেষ্টা, আশা করি আমি যে কোনও নিয়ম মিস করেছি তা ভঙ্গ করি না।

সম্পাদনা:
- সংরক্ষিত 5 @Jonathan Frech ধন্যবাদ বাইট: প্রতিস্থাপিত !=দ্বারা -এবং returnদ্বারা i=(শেষ প্রতিস্থাপন ঝনঝন যদিও এর সাথে কাজ করা বলে মনে হচ্ছে না)
- যেহেতু একটি বিতর্ক কিনা আমি ব্যবহার করা উচিত জিসিসি -O0 অপব্যবহার বলে মনে হয়, আমি মনে আমি পারতাম শুধু উভয় সংস্করণ দিন


পিপিসিজিতে আপনাকে স্বাগতম! আপনি golfing দ্বারা একটি বাইট সংরক্ষণ করতে সক্ষম হতে পারে !=জন্য -এবং golfing দ্বারা অন্য চার returnথেকে i=
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ আমি সি ++ করেছি এমন দীর্ঘ সময় হয়ে গেছে, যদি কোনও রিটার্নের বিবৃতি না থাকে তবে এটি কি স্পষ্টভাবে কোনও কার্যক্রমে শেষ নির্ধারিত অভিব্যক্তিটি ফিরিয়ে দেবে? আমি অনুমান করছি এটি একটি জিসিসি জিনিস?
- মনিকা পুনরায় ইনস্টল করুন 2'18

1
এটি অপ্টিমাইজেশন লেভেল O0 এ একটি সিসি নির্দিষ্ট নির্দিষ্ট অপরিজ্ঞাত আচরণের অপব্যবহার।
জোনাথন ফ্রেচ

কেএন্ডআর সিটিতে স্যুইচ করে আপনি এটিকে 23 বাইটে নামিয়ে আনতে পারেন (খুব চিত্তাকর্ষক!) অনলাইনে চেষ্টা করে দেখুন!
এরিক এফ

@ জোনাথনফ্রেচ: লোকেরা কেন এই বোকা gcc -O0হ্যাক ব্যবহারের জন্য জোর দেয় ? বাস্তবায়ন তুলনা করার সময় এটি কোনও ভাষার মোট বয়লারপ্লেটের দৈর্ঘ্যের মতো নয়। এছাড়াও, returnবনাম কল-বাই-রেফারেন্স ( *iজায়গায় আপডেট করা) এর মধ্যে চয়ন করা এটি আরও আকর্ষণীয় করে তোলে । আমি বরং সি বা সি ++ উত্তরগুলি লিখব, কেবলমাত্র অপ-অনুকূলিতকরণ-জিসিসি-র উত্তর নয়, কারণ আন-অপ্টিমাইজড-জিসিসি খুব কার্যকর ভাষা নয়।
পিটার কর্ডস

3

এসএমএল , 32 বাইট

fun%0=1| %n=(n+ %(n div 2))mod 2

Explaination:

  • % ফাংশন নাম
  • Repl এ ইনপুট নেয় এবং খারাপ হলে 1 প্রদান করে, অন্যথায় 0 করে
  • n ইনপুট, রিটার্ন (এন +% (এন // 2))% 2

2 উদাস কার্নেগি মেলন শিক্ষার্থী দ্বারা তৈরি by


পিপিসিজিতে আপনাকে স্বাগতম, এবং ভাল প্রথম উত্তর!
mbomb007

2

ফোর্থ (গফার্থ) , 53 বাইট

: f 1 swap begin 2 /mod -rot xor swap ?dup 0= until ;

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

ব্যাখ্যা

সংখ্যার বাইনারি ফর্মের অঙ্কগুলির সংখ্যার জোর-সমষ্টি গ্রহণ করে। (বারবার 2 দ্বারা বিভক্ত হয় এবং অবশিষ্টাংশটি "যোগফল" মান সহ)

কোড ব্যাখ্যা

: f              \ begin a new word definition
  1 swap         \ place 1 on the stack below the input (n)
  begin          \ start an indefinite loop
    2 /mod       \ get the quotient and remainder of dividing n by 2
    -rot         \ move the sum and remainder to the top of the stack
    xor          \ xor the sum and remainder
    swap         \ move the quotient back to the top of the stack
    ?dup         \ duplicate if > 0
    0=           \ get "boolean" indicating if quotient is 0
  until          \ end the loop if it is, otherwise go back to the beginning
;                \ end the word definition

2

জাভা 8, 40 36 বাইট

n->n.toString(n,2).chars().sum()%2<1

-4 বাইটস @ ওকেক্সকে এমন কোনও কিছুর জন্য ধন্যবাদ যা আমি নিজেকে ভুলে যাব না ..

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

ব্যাখ্যা:

n->                // Method with Integer parameter and boolean return-type
  n.toString(n,2)  //  Convert the integer to a binary String
   .chars()        //  Convert that to an IntStream of character-encodings
   .sum()          //  Sum everything together
    %2<1           //  And check if it's even

উল্লেখ্য যে চরিত্রটি এনকোডিং করছে 0এবং 1তা 48এবং 49তবে তাদের সংমিশ্রণ এবং মডিউলো -২ নেওয়া এখনও সঠিক ফলাফল রাখে কারণ 48%2 = 0এবং 49%2 = 1


1
n.toString(n,2)4 বাইট সঞ্চয়
Okx

@ ওকএক্স নিশ্চিত নন যে আমি কীভাবে সেই সম্পর্কে ভুলে গেছি, হ্যাঁ .. ধন্যবাদ! ;)
কেভিন ক্রুইজসেন

আপনি যদি সত্য এবং মিথ্যা (জাভা এর জন্য নিশ্চিত নন) এর পরিবর্তে 1 এবং 0 ব্যবহারের অনুমতি পেয়ে থাকেন তবে ~n.toString(n,2).chars().sum()%2একটি বাইট সংরক্ষণ করতে আপনি এতে পরিবর্তন করতে পারেন:
মারিও ইসহাক

1
@ মারদেভ দুর্ভাগ্যক্রমে 0এবং জাভাতে সত্য / মিথ্যা1 নয় , কেবল / রয়েছে। যদি একটি চ্যালেঞ্জ দুটি পৃথক আউটপুট জানায় তবে 2 বাইট সংরক্ষণ করতে পারা যায় removed :)booleansBooleans<1
কেভিন ক্রুইজসেন 21

2

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

*.base(2).comb(~1)%%2

এটা পরীক্ষা করো

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

*\        # WhateverCode lambda (this is the parameter)
.base(2)  # Str representing the binary
.comb(~1) # find the "1"s

%% 2      # is the count of "1"s divisible by 2?


আহ, এটি 9 টিরও বেশি বিটের সংখ্যার জন্য কাজ করে না ...
জো কিং

1
{:3(.base(2))%%2}
nwellnhof

2

রেটিনা 0.8.2 , 28 বাইট

.+
$*
+`(1+)\1
$+0
0

11

^$

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার কেস অন্তর্ভুক্ত রয়েছে। ব্যাখ্যা:

.+
$*

অ্যানারিতে রূপান্তর করুন।

+`(1+)\1
$+0

আংশিক বাইনারি রূপান্তর (অতিরিক্ত শূন্যগুলি ছেড়ে যায়)।

0

সমস্ত শূন্য মুছুন।

11

দু'জন করে মডুলো

^$

ফলাফলটি শূন্য কিনা তা পরীক্ষা করে দেখুন।


2

x86 সমাবেশ, 12 11 বাইট

F3 0F B8 44 24 04  popcnt      eax,dword ptr [esp+4] ; Load EAX with the number of ones in arg
F7 D0              not         eax ; One's complement negation of EAX
24 01              and         al,1 ; Isolate bottom bit of EAX
C3                 ret             

-1 বেল্ট @ সিলিংক্যাট এর পরামর্শের জন্য ধন্যবাদ



1
এর inc eaxপরিবর্তে পরামর্শ দিন not eax। এছাড়াও এটি উল্লেখ করতে চাইতে পারেন যে এই popcntনির্দেশের জন্য সমর্থন সহ প্রসেসর প্রয়োজন ।
সিলিংক্যাট

1
এছাড়াও আপনি স্ট্যাক থেকে আর্গুমেন্ট নিতে হবে না। অনুমোদিত কলিং কনভেনশনগুলি দেখুন কোডগল্ফ.স্ট্যাকেক্সেঞ্জঞ্জ.com / a / 161497 / 17360 (পিটার কর্ডেসের আরও গভীর-উত্তর উত্তর কোডগল্ফ.স্ট্যাকেক্সেঞ্জঞ্জ.com
a

1
নোট করুন যে আপনি FLAGS স্ট্যাকওভারফ্লো. com/a/48382679/ 3163618 এ একটি বুলেটিয়ান ফিরতে পারেন
Qwr

666 পরীক্ষার কেস হওয়া উচিত নয়?
আর্কিনিস্ট লুপাস

2

বাশ + জিএনইউ ইউটিলিটিস, 33

dc -e2o?p|tr -d 0|wc -c|dc -e?2%p

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

এসটিডিআইএন থেকে ইনপুট পড়ে। সত্যের জন্য আউটপুট 1 এবং ভুজের জন্য 0।

  • dc ইনপুটটিকে বাইনারি স্ট্রিতে রূপান্তর করে
  • tr শূন্যগুলি সরিয়ে দেয়
  • wc অবশিষ্টগুলিকে গণনা করে (এবং পেছনের নতুন লাইন, যা যুক্তির বোধকে সংশোধন করে
  • dc গণনা মোড 2 গণনা করে উত্তরটি আউটপুট করে

2

পাইথন 2, 28 27 বাইট

f=lambda n:n<1or n&1^f(n/2)

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

এর মধ্যে একটি সত্য the ones-bit is a 1এবং the result of calling this function on n/2 is truthyসত্য হলে (বা।) সত্যবাদী মান প্রদান করেn==0 ) । এটি কাজ করে কারণn/2 মেঝে বিভাগের সাথে ডান বিটশীফ্টের সমান (তাই কেবল পাইথন 2)।

বিকল্প সংস্করণ, এছাড়াও 28 27 বাইট

g=lambda n:n<1or g(n&n-1)^1

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

ভ্যাট দ্বারা রেফারেন্স সেট বিট গণনা করার কেএন্ডআর পদ্ধতির ভিত্তিতে।

যদি আউটপুট মিথ্যাটিকে খারাপ বলতে দেয় তবে এগুলি উভয়ই দুটি বাইট সংক্ষিপ্ত হতে পারে।

সম্পাদনা: একটি বাইট সংরক্ষণের জন্য উভচর ধন্যবাদ!


আপনি +1 বাইট সংরক্ষণ করার জন্য 1এবং এর মধ্যে থাকা স্পেসগুলি সরাতে পারেন or। চমৎকার সমাধান!
উভচর

মানুষ, আমি ভেবেছিলাম আমি চেষ্টা করেছিলাম। ভালো বল ধরা!
জ্যাক ব্রাউনস্টেইন

2

এপিএল (ডায়ালগ ইউনিকোড) , 10 বাইট এসবিসিএস

অজ্ঞাতনামা যুক্তি হিসাবে কোনও পূর্ণসংখ্যার অ্যারে নিতে পারে।

≠⌿12∘⊥⍣¯1

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

2∘⊥⍣¯1 বাইনারি রূপান্তর করুন, বৃহত্তম অক্ষর দ্বারা প্রয়োজনীয় হিসাবে যতগুলি সংখ্যা ব্যবহার করে, প্রাথমিক অক্ষের সাথে পৃথক অঙ্ক করুন

1⍪ প্রাথমিক অক্ষ বরাবর প্রিপেন্ড করুন

≠⌿ প্রাথমিক অক্ষ বরাবর XOR হ্রাস


2

জে , 9 বাইট

অজ্ঞাতনামা আর্গুমেন্ট হিসাবে কোনও পূর্ণসংখ্যার অ্যারে নিতে পারে।

1-2|1#.#:

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

1- এক বিয়োগ (যেমন যৌক্তিক অবহেলা)

2| এর Mod-2

1#. এর যোগফল (লিটার। বেস -১ মূল্যায়ন)

#: বাইনারি প্রতিনিধিত্ব


সুন্দর! বিরক্তিকর পদ্ধতির 9 বাইট রয়েছে:2|1+1#.#:
কনর ও'ব্রায়েন

এটি কেবল কাজ করে বলে মনে হচ্ছে ইনপুটটিতে 777 প্রতিটি সংখ্যা 10 বিটে উপস্থাপন করে। উদাহরণস্বরূপ 480 এর সাথে এটি প্রতিস্থাপন করুন এবং আউটপুট উল্টবে।
ফ্রাউনফ্রোগ

@ কনরও ব্রায়ান বোরিং ট্রাম্পগুলি ভুল।
অ্যাডম

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