কোনও পূর্ণসংখ্যা 2, + ব্যবহার না করেই 2 পাওয়ার পাওয়ার কিনা তা পরীক্ষা করুন - ক্রিয়াকলাপ [বন্ধ]


30

একটি প্রোগ্রাম লিখুন যা পূর্ণসংখ্যা 2 এর শক্তি কিনা তা পরীক্ষা করে।


নমুনা ইনপুট:

8

নমুনা আউটপুট:

Yes

নমুনা ইনপুট:

10

নমুনা আউটপুট:

No

নিয়মাবলী:

  • ব্যবহার করবেন না +, -অপারেশন।

  • নম্বর পেতে কোনও ধরণের ইনপুট স্ট্রিম ব্যবহার করুন। ইনপুট প্রাথমিকভাবে কোনও ভেরিয়েবলের মধ্যে সঞ্চয় করার কথা নয়।

  • সবচেয়ে সংক্ষিপ্ততম কোড (বাইটে) জিতেছে।

আপনি যে কোনও সত্য / মিথ্যা প্রতিক্রিয়া ব্যবহার করতে পারেন (উদাহরণস্বরূপ, true/ false)। আপনি ধরে নিতে পারেন যে ইনপুট সংখ্যাটি এর চেয়ে বেশি 0


1
এটি কি "হ্যাঁ" এর পরিবর্তে "সত্য" এবং "" না "এর পরিবর্তে" মিথ্যা "আউটপুট দেওয়ার অনুমতি রয়েছে?
প্রোগ্রামফক্স

2
হ্যাঁ, আপনি যে কোনও ইতিবাচক / নেতিবাচক প্রতিক্রিয়া ব্যবহার করতে পারেন। প্রশ্ন আপডেট করা হয়।
gtcoder

1
predফাংশন, যখন একটি পূর্ণসংখ্যা এন প্রয়োগ, আয় N - 1. যেমন এই হিসাবে ফাংশন, যা নিষিদ্ধ অপারেটর প্রায় পাতলা ছদ্মবেশধারণকারী হয়, এছাড়াও হারাম?
ওয়েইন কনরাড

1
@ ওয়েইন ঠিক গল্ফস্ক্রিপ্ট )বা বেশিরভাগ সি-ভিত্তিক ভাষা 'এর মতো --
ডুরকনব

2
আমি জানি আমরা এখন ভবিষ্যতে 3 বছর বটে, তবে "+/- অপারেটরগুলি" পর্যবেক্ষণযোগ্য নয়, বা খুব কম দুর্বল সংজ্ঞায়িত।
এটাকো

উত্তর:


13

গল্ফস্ক্রিপ্ট, 6 টি অক্ষর, কোনও হ্রাস নেই

~.3/&!

এখানে এমন একটি সমাধান রয়েছে যা কোনও রূপে x & (x-1)পদ্ধতিটি ব্যবহার করে না । এটি পরিবর্তে ব্যবহার করে। ;-) যদি সত্য হয় তবে আউটপুটগুলি ।x & (x/3)01

ব্যাখ্যা:

  • ~ ইনপুট স্ট্রিংটিকে এটিকে একটি সংখ্যায় পরিণত করতে দেখায়,
  • .এটি সদৃশ (পরবর্তী জন্য &),
  • 3/ এটিকে তিনটি দিয়ে বিভক্ত করুন
  • & বিটওয়াইড এবং বিভক্ত মানের মূলটির সাথে গুণন করে, যা শূন্য হলে কেবল এবং যদি ইনপুট শূন্য হয় বা দুটি এর শক্তি হয় (যেমন সর্বাধিক এক বিট সেট থাকে), এবং
  • ! যৌক্তিকভাবে এটিকে অবহেলা করে শূন্যকে এক এবং অন্য সমস্ত মানকে শূন্যে ম্যাপ করে।

নোট:


আমি মনে করি এটি সত্যিই কিছুটা নিরীহ, গল্ফস্ক্রিপ্ট একটি বিধি প্রকৃত নিয়মগুলি ভঙ্গ না করে বাদ দিতে চেয়েছিল এমন সঠিক সমাধানটি লেখার অনুমতি দেয়।
টিম সেগুইন

1
@ টিম: ঠিক আছে, এখানে কোনও হ্রাস ছাড়াই রয়েছে। ;)
ইলমারি করোনেন

কিভাবে এই কাজ করতে পারেন? উদাহরণস্বরূপ 7/3 = 2 (0010), 7 & 2 = 0111 & 0010 = 0010যা পরিষ্কারভাবে শেষ বিটটি 1 নয়
ফুক্লিভি

@ লুভানহ্ফ্যাক: না, তবে দ্বিতীয়টি হ'ল। বাইনারিতে 3 দ্বারা দীর্ঘ বিভাগ করার চেষ্টা করুন এবং লভ্যাংশের যদি একাধিক বিট সেট থাকে তবে এটি কেন সর্বদা স্পষ্ট pretty
ইলমারি করোনেন

আহ আমি এটিকে "2 বিভাজ্য" দিয়ে ভুল
লিখেছি

15

এপিএল (7)

হ্যাঁ, এটি 7 বাইট । এই মুহুর্তের জন্য ধরে নিন যে আমি ইউনিকোডের পরিবর্তে আইবিএম কোডপেজ 907 ব্যবহার করছি এবং তারপরে প্রতিটি অক্ষর একটি বাইট :)

0=1|2⍟⎕

অর্থাত 0 = mod(log(input(),2),1)


শুধু ভাবছি, 0 বা নেতিবাচক নম্বর দিলে কী হয়?
অদিতসু

@ অ্যাডিটসু আমি জানি না অনন্ত মড 1 কী, তবে এটি অবশ্যই শূন্য হওয়া উচিত নয়
টিম সেগুইন

1
Indeterminateআমি যখন চেষ্টা করি তখন @ টিমসুগেইন ম্যাথমেটিকা ​​আমাকে দেয় ।
LegionMammal978

7

গল্ফস্ক্রিপ্ট, 11 (1 (সত্য) এবং 0 (মিথ্যা) এর জন্য

.,{2\?}%?0>

স্ট্যাকের উপর নম্বরটি রাখুন এবং তারপরে চালান।

গল্ফস্ক্রিপ্ট, ২২ (হ্যাঁ / না জন্য)

.,{2\?}%?0>'Yes''No'if

আমি চ্যালেঞ্জ হিসাবে যতটা কোড রূপান্তর 1/ 0টু Yes/ Noগ্রহণ করি তা পছন্দ করি : ডি

সতর্কতা: অত্যন্ত অকার্য;) এটি 10000 পর্যন্ত সংখ্যার জন্য কাজ করে ঠিকই, তবে আপনি যখন এই উচ্চটি পেয়ে যান তবে আপনি সামান্য পিছিয়ে পড়তে শুরু করবেন।

ব্যাখ্যা:

  • .,: nরূপান্তরিত হয় n 0..n( .সদৃশ, ,0..n ব্যাপ্তি)
  • {2\?}: 2 পাওয়ার
  • %: মানচিত্র "2 পাওয়ার" "ওভার" 0..n "তাই এটি হয়ে যায় n [1 2 4 8 16 ...]
  • ?0>: অ্যারেতে সংখ্যাটি রয়েছে কিনা তা পরীক্ষা করে দেখায় (0 টি সূচকের চেয়ে বড়)

1
1 বাইট জন্য হ্যাঁ / না খাটো: .,{2\?}%?0<'YesNo'3/=; এছাড়াও আমি মনে করি আপনি "স্ট্যাকের উপর নম্বর রাখুন" জিজ্ঞাসা করে প্রতারণা করছেন, আপনার একটি দিয়ে শুরু করা উচিত ~
অদিতসু

1
1 এ ব্যর্থ হয়, যা 2 ^ 0
জোছিম ইসাকসন

6

গণিত 28

Numerator[Input[]~Log~2]==1

2 এর পূর্ণসংখ্যার ক্ষমতার জন্য, বেস 2 লগের অঙ্ক 1 হবে (মানে লগটি একক ভগ্নাংশ)।

এখানে আমরা অনুমান করা ইনপুট প্রদর্শনের জন্য ফাংশনটি সামান্য পরিবর্তন করব। আমরা একটি খাঁটি ফাংশন সংজ্ঞায়িত করার #জায়গায় ব্যবহার করি Input[]এবং যুক্ত &করি। উপরের ফাংশনে যদি ব্যবহারকারী ইনপুট করে তবে এটি একই উত্তরটি ফিরে আসবে।

    Numerator[#~Log~2] == 1 &[1024]
    Numerator[#~Log~2] == 1 &[17]

সত্য
মিথ্যা

একসাথে বেশ কয়েকটি সংখ্যার পরীক্ষা করা।

    Numerator[#~Log~2] == 1 &&/@{64,8,7,0}

{সত্য, সত্য, মিথ্যা, মিথ্যা}


4

পার্ল 6 (17 টি অক্ষর)

say get.log(2)%%1

এই প্রোগ্রামটি STDIN getফাংশন থেকে একটি লাইন পেয়েছে, এটিতে বেস 2 সহ লোগারিথম গণনা করে ( log(2)) এবং ফলাফলটি 1 দ্বারা বিভক্ত হয় কিনা তা পরীক্ষা করে দেখায় ( %%1যেখানে %%অপারেটর দ্বারা ভাগ হয়)। গল্ফস্ক্রিপ্ট সমাধানের মতো সংক্ষিপ্ত নয়, তবে আমি এই গ্রহণযোগ্যটি খুঁজে পাই (গল্ফস্ক্রিপ্ট যেভাবেই হোক সবকিছুই জয়ী করে) তবে দ্রুত গতিতে (এমনকি পার্ল 6 এখনই ধীর গতিতে বিবেচনা করে)।

~ $ perl6 -e 'say get.log(2)%%1'
256
True
~ $ perl6 -e 'say get.log(2)%%1'
255
False

2
এই চ্যালেঞ্জের জন্য যে কারণটি +এবং -নিষিদ্ধ, কারণ এটি যদি x & (x - 1)সমান হয় 0তবে x2 এর শক্তি
প্রোগ্রামফক্স

@ প্রোগ্রামফক্স: আমি দেখছি। আকর্ষণীয় কৌশল।
কনরাড বোরোস্কি

1
@ প্রোগ্রামগ্রামফক্স তবে x&~(~0*x)এখনও কাজ করে। এটি কেবলমাত্র 2 অক্ষর দীর্ঘ।
অরল্প

4

অক্টাভা ( 15 23)

সম্পাদনা: ব্যবহারকারী ইনপুট প্রয়োজনীয়তার কারণে আপডেট হয়েছে;

~mod(log2(input('')),1)

ব্যবহারকারীকে ইনপুটটিকে একটি মান দেয় এবং সত্যের জন্য 1 আউটপুট দেয়, 0 টি মিথ্যা বলে।

অক্টাভে পরীক্ষিত, মতলবেও কাজ করা উচিত।


মতলব-এও কাজ করে :)
jub0bs

4

আর, 13 11

পার্ল সমাধানের উপর ভিত্তি করে। রিটার্ন FALSEবা TRUE

!log2(i)%%1

পরামিতি iইনপুট ভেরিয়েবলের প্রতিনিধিত্ব করে।

ব্যবহারকারী ইনপুট সহ একটি বিকল্প সংস্করণ:

!log2(scan())%%1

4

গল্ফস্ক্রিপ্ট, ৫

আউটপুটস সত্যের জন্য 1, ভুটের জন্য 0। ব্যবহারকারী3142747 এর ধারণার ভিত্তিতে:

~.(&!

দ্রষ্টব্য: (হ্রাস হ'ল, আশা করি এটি গণনা করা হয় -না :)
যদি এটি হয় (এবং ওপির মন্তব্যগুলি সম্ভবত এটির প্রস্তাব দেয়) তবে দয়া করে পরিবর্তে ইলমারি করোনেনের সমাধানটি দেখুন
ওয়াই / এন আউটপুট জন্য, সংযোজন'NY'1/= শেষে যুক্ত করুন (আরও 7 বাইট)।


4

পাইথন, 31

print 3>bin(input()).rfind('1')

31 আপনি যদি করেনbin(input()).rfind('1')<3
ব্লেন্ডার

@ ব্লেন্ডার ভাল দাগী আমি ব্যবহার করতাম 2==কারণ আমি অনুভব করেছি যে এটি অ-সংখ্যার পক্ষেও কাজ করা উচিত।
এগুলি

1
+1 টি। আমি print bin(input()).count('1')<2মোট 31 টি অক্ষর পোস্ট করতে যাচ্ছিলাম , তবে এটি আপনার মতো similar
স্টিভেন রাম্বালস্কি

4

সি, 48

main(x){scanf("%i",&x);puts(x&~(x*~0)?"F":"T");}

যদি অ্যানারি নেগেটের অনুমতি দেওয়া হয় তবে সংক্ষিপ্ত হতে পারে, যদি নেতিবাচক ধ্রুবককে অনুমতি না দেওয়া হয় তবে এটি আরও দীর্ঘ। দুটি এর পরিপূরক ধরে।
orlp

*বাইনারি তুলনায় উচ্চতর প্রাধান্য রয়েছে &, আপনার প্যারেন্স দরকার নেই। এবং যদি রিটার্নের মান গৃহীত হয় (কেবল জিজ্ঞাসা করা হয়েছে) exit(x&x*-1)এটি আরও কম হবে।
কেভিন

একটা হল -: x*-1
ক্লিংটনেট

@ ক্লিংটটনেট হ্যাঁ, তবে এটি একটি সংখ্যার ধ্রুবকের অংশ। প্রযুক্তিগতভাবে, এটি এখন যেমনটি বলা হয়, কেবল অপারেটর -নিষিদ্ধ।
কেভিন

1
@ ক্লিংটটনেট এটি কোনও সংস্করণ দিয়ে প্রতিস্থাপন করেছে যা কোনও চিহ্ন ব্যবহার করে না।
orlp

4

জনসংখ্যার গণনা বা পাশের রাতের योगের উপর ভিত্তি করে আমি অন্য পদ্ধতির ব্যবহার করার সিদ্ধান্ত নিয়েছি (1-বিটের সংখ্যা) এর । ধারণাটি হল যে দুটি এর সমস্ত শক্তির ঠিক এক 1বিট থাকে এবং অন্য কোনও সংখ্যা থাকে না। আমি একটি জাভাস্ক্রিপ্ট সংস্করণ যুক্ত করেছি কারণ আমি এটি মজাদার পেয়েছি, যদিও এটি অবশ্যই কোনও গল্ফিং প্রতিযোগিতা জিততে পারে না।

জে, ১৪ 15 টি অক্ষর (0 বা 1 আউটপুট)

1=##~#:".1!:1]1

জাভাস্ক্রিপ্ট, 76 টি অক্ষর (সত্য বা মিথ্যা আউটপুট দেয়)

alert((~~prompt()).toString(2).split("").map(Number).filter(Boolean).length)

এটি সংযোজন ব্যবহার করে, যা চ্যালেঞ্জের দ্বারা আবদ্ধ।
FUZxxl

হাহ। আমি যখন এটি লিখলাম তখন আমি কী ভাবছিলাম তা আমার কোনও ধারণা নেই ... আমি এখনই এটি ঠিক করেছি যাতে এটি আসলে বিধিগুলি অনুসরণ করে।
ফায়ারফ্লাই

4

ক্লিপ , 9 8 7

!%lnxWO

স্টাডিনের কাছ থেকে একটি নম্বর পড়ে।

ব্যাখ্যা:

সঙ্গে শুরু করার জন্য, Z= 0, W= 2এবং O= 1. এই এর স্থাপন পারবেন Wএবং Oএকে অপরের পাশে, যেহেতু ব্যবহার 2এবং 1একটি পৃথক স্থান (একটি অবাঞ্ছিত অতিরিক্ত চরিত্র) ছাড়া সংখ্যা 21 হিসেবে ব্যাখ্যা করা হবে। ক্লিপ-এ, মডুলো ফাংশন ( %) অ-পূর্ণসংখ্যার উপর কাজ করে, সুতরাং, কিছু মান vপূর্ণসংখ্যা হয় তা নির্ধারণের জন্য, আপনি vমোড 1 = 0 পরীক্ষা করে দেখুন, ক্লিপ সিনট্যাক্স ব্যবহার করে এটি লিখিত আছে =0%v1। তবে, বুলিয়ানগুলি 1(বা অন্য যে কোনও কিছু হিসাবে ) সংরক্ষণ করা হয় এবং কোনও কিছুর 0সমান কিনা তা পরীক্ষা করা 0কেবল এটি 'না' হিসাবে চিহ্নিত করা হয়। এই জন্য, ক্লিপ !অপারেটর আছে। আমার কোড ইন, vহয়lnx2xস্টিডিনের ইনপুট,nএকটি স্ট্রিংকে একটি সংখ্যায় রূপান্তর করে এবং labলগ বেস ।bএর a। প্রোগ্রামটি তাই অনুবাদ করে (আরও পঠনযোগ্য)0 = ((log base 2 of parseInt(readLine)) mod 1)

উদাহরণ:

8

আউটপুট

1

এবং

10

আউটপুট

0

সম্পাদনা করুন 1: প্রতিস্থাপিত 0, 1এবং 2সঙ্গে Z, OএবংW

সম্পাদনা করুন 2: প্রতিস্থাপিত =Zসঙ্গে!

এছাড়াও:

Pyth , ৫

ক্লিপ সংস্করণটিকে আরও আরও সংকুচিত করে, যেমন পাইথের ইতিমধ্যে মূল্যায়িত ইনপুট এবং কেবলমাত্র সাধারণ লগ (এ, বি) এর পরিবর্তে একটি লগ 2 (এ) ফাংশন রয়েছে।

!%lQ1

3

জাভাস্ক্রিপ্ট (37)

a=prompt();while(a>1)a/=2;alert(a==1)

সরল স্ক্রিপ্ট যা কেবল 2 দ্বারা বারবার বিভাজন করে বাকী অংশগুলি পরীক্ষা করে।


1
একটি forলুপের সাথে একই ধারণা (এছাড়াও 37 টি অক্ষর)for(i=prompt();i>1;i/=2){}alert(i==1)
ম্যাথ চিলার

3

গণিত (21)

IntegerQ@Log2@Input[]

ইনপুট ছাড়া এটি কিছুটা খাটো

IntegerQ@Log2[8]

সত্য

IntegerQ@Log2[7]

মিথ্যা


⌊#⌋==#&@Log2@Input[]
আলেফাল্ফ

1
ইউএলএফ -8 অক্ষরের জন্য 24 বাইট ব্যবহার করে শেষ করুন আরেকটি 21-বাইট প্রোগ্রাম Log2@Input[]~Mod~1==0
LegionMammal978

2

জাভাস্ক্রিপ্ট, 41 40 টি অক্ষর

l=Math.log;alert(l(prompt())/l(2)%1==0);

এটি কীভাবে কাজ করে: আপনি বেস 2 ব্যবহার করে লগারিদম গ্রহণ করেন l(prompt()) / l(2) এবং যদি ফলাফলটি মডুলো 1 শূন্যের সমান হয়, তবে এটি 2 এর শক্তি।

উদাহরণস্বরূপ: বেসে 8 এর লগারিদম নেওয়ার পরে 2, আপনি পাবেন 33 modulo 10 এর সমান, সুতরাং এটি সত্য।

বেস 2 তে 7 এর লগারিদম নেওয়ার পরে আপনি পাবেন 2.8073549220576042.807354922057604 modulo 1সমান 0.807354922057604, তাই এটি মিথ্যা প্রত্যাবর্তন করে।


আপনাকে কোনও সংখ্যায় ইনপুট কাস্ট করার দরকার নেই; Math.logএটি ইতিমধ্যে তা করবে : "নিম্নলিখিত ম্যাথ অবজেক্টের প্রতিটি ফাংশন তার প্রতিটি আর্গুমেন্টে টনবার অ্যাবস্ট্রাক্ট অপারেটর প্রয়োগ করে ..."
অ্যাপসিলারস 4:34

এটি সংখ্যাসূচক ভুল দ্বারা ভোগেন না?
মার্ক জেরোনিমাস

@ মার্ক জেরনিমাস: আমি আসলে জানি না। এটি হতে পারে তবে আমি এখনও একটি ভুল ফলাফলের মুখোমুখি হই নি।
প্রোগ্রামফক্স

2

জাভাস্ক্রিপ্ট, 35

বাইট জন্য কাজ করে।

alert((+prompt()).toString(2)%9==1)

46 অক্ষর সংস্করণ , 16 বিট সংখ্যার জন্য কাজ করে।

x=(+prompt()).toString(2)%99;alert(x==1|x==10)

কৌশলটি বেশিরভাগ গতিশীল ভাষায় কাজ করে।

ব্যাখ্যা: সংখ্যাটি বেস 2 তে রূপান্তর করুন, সেই স্ট্রিংটিকে বেস 10 হিসাবে ব্যাখ্যা করুন, ডিজিটের যোগফল পেতে 9 মডিউল করুন, যা অবশ্যই 1 হবে।


সম্পর্কে কি 0x2ff, বেস 2 যা 1111111111?
পিটার টেলর

@ পিটারটেলর আপনি ঠিক বলেছেন, স্থির
অনুলিপি করুন

সুতরাং আপনার কাজটি আসল কাজটি হল বাকিগুলি ছাড়াই 10 মডিউল পরীক্ষা করা, তবে আপনি আপনার কোডের একটি অক্ষর শেভ করতে 9 টি ব্যবহার করেছেন +1,!
ম্যাথ চিলার

এটি কিন্ডা প্রতারণা তবে অন্য একটি পদ্ধতি:alert(!(Number.MAX_VALUE%prompt()))
প্লুটো

2

পার্ল 5.10+, 13 + 1 = 14 অক্ষর

say!($_&$_/3)

আমার গল্ফস্ক্রিপ্ট এন্ট্রি হিসাবে পুরানো FWP থ্রেড থেকে একই পদ্ধতি ব্যবহার করে । ছাপে1ইনপুট দুটি পাওয়ার এবং অন্যথায় খালি লাইন হলে করে।

সঙ্গে চালানো প্রয়োজন perl -nE; n এক অতিরিক্ত গৃহস্থালির কাজ খরচ , 14 অক্ষর মোট জন্য। বিকল্পভাবে, এখানে একটি 18-চরিত্রের সংস্করণ রয়েছে যাটির প্রয়োজন নেই n:

say!(($_=<>)&$_/3)

2

অজগর 3, 38

print(1==bin(int(input())).count('1'))

অজগর, 32

তবে কোডটি প্রতিটি সংস্করণে কাজ করে না।

print 1==bin(input()).count('1')

লক্ষ্য করুন যে সমাধানটি 0 (মুদ্রণ ফলস) এর জন্যও কাজ করে।


উত্সাহিত কারণ এটি আমার সমাধানও ছিল।
জোশ ক্যাসওয়েল 4'14

1
আপনি কি ==সঙ্গে প্রতিস্থাপন &?
সাইমনটি

@ সিমোনটি এটি সত্য নয়। '==' কে 'ও' এর সাথে প্রতিস্থাপন করা তার বাইনারি উপস্থাপনায় '1' এর বিজোড় সংখ্যা রয়েছে এমন প্রতিটি সংখ্যার জন্য 1 মুদ্রণ করবে। উদাহরণস্বরূপ 7 = 111 দেখুন। 3 = 11 টি রয়েছে। এটি 11 এবং 1 = 1 এ ফিরে আসবে
গ্যারি বিএন

2

রুবি - ১ characters টি অক্ষর (চতুর্থ চেষ্টা)

p /.1/!~'%b'%gets

আমার বর্তমান সেরাটি আমার নিজের সাথে @ স্টেনস্লাগের উত্তরের ফিউশন। নীচে আমার আগের চেষ্টা আছে।

রুবি - 19 টি অক্ষর (তৃতীয় চেষ্টা)

p /10*1/!~'%b'%gets

রুবি - 22 টি অক্ষর (দ্বিতীয় চেষ্টা)

p !('%b'%gets)[/10*1/]

রুবি - 24 টি অক্ষর (প্রথম চেষ্টা করুন)

p !!('%b'%gets=~/^10*$/)

আপনার প্রোগ্রামটিতে এখনও একটি "+" আছে
ফুক্লভ

আমি জানি. : - / আমি '+' এবং '-' কঠোরভাবে নিষিদ্ধ কিনা, বা এগুলি সংযোজন এবং বিয়োগফল ছাড়াও অন্য প্রসঙ্গে ব্যবহার করা যেতে পারে কিনা সে বিষয়ে স্পষ্টতা চেয়েছি। আমি নির্বিশেষে পুনরায় লেখার প্রক্রিয়াধীন।
ওআই

মহান উন্নতি. দেখে মনে হচ্ছে এটি এখন পর্যন্ত সেরা রুবির ফলাফল। আমি প্রশ্নের টেক্সটে নেতাদের টেবিল আপডেট করেছি।
gtcoder

@gthacoder আমার বাইনারি ফর্ম্যাটিংয়ের সাথে সবেমাত্র স্টেনস্লাগের রেজেক্সকে একত্রিত করেছে। অবশ্যই সমস্ত কৃতিত্ব নিতে পারে না।
ওআই

2

কে / কোনা ( 24 17)

d:{(+/(2_vs x))~1

সত্য হলে 1 এবং মিথ্যা হলে 0 প্রদান করে। 2 এর যে কোনও পাওয়ারের 1 এর সমান একক বিট থাকে

2_vs'_(2^'(!10))
(,1
1 0
1 0 0
1 0 0 0
1 0 0 0 0
1 0 0 0 0 0
1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0)

(এটি বাইনারি 2 এর সমস্ত ক্ষমতা (0 থেকে 9 পর্যন্ত মুদ্রণ করে)

সুতরাং আমি এর বাইনারি এক্সপ্রেশন এর সমস্ত উপাদান সংযুক্ত করে xদেখুন এবং এটি 1 এর সমান কিনা; যদি হ্যাঁ হয় x=2^n, অন্যথায় না।

... জানতাম আমি এটিকে আরও ছোট করতে পারি


@ গ্যাথাকোডার: আমি কোডটি আরও ছোট করেছি, আশা করি আপনি এটি প্রতিফলিত করতে মূল পোস্টটি আপডেট করতে পারবেন!
কাইল কানোস

এটি ব্যবহার করে না? এবং প্রশ্ন না, ভুল, যে নিষেধ?
zgrep

2

সি # (54 টি অক্ষর)

 Math.Log(int.Parse(Console.ReadLine()),2)%1==0?"Y":"N"

টাস্কটি স্পষ্টভাবে জানিয়েছে যে ইনপুটটি কোনও ভেরিয়েবলের মধ্যে সঞ্চয় করা হয় না, এটি কোনও ধরণের ইনপুট স্ট্রিমের (স্টিডিনের মতো) থেকে নেওয়া উচিত, এটিও কোড-গল্ফ , আপনার কোডটি কিছুটা ছোট করার চেষ্টা করুন, কমপক্ষে সাদা স্থান সরিয়ে দিয়ে
এমনিপ

আমি মনে করি আপনি ঠিক বলেছেন Int32, না ToInt32...
ক্রিস

ইয়া ইয়া ক্রিস দেখানোর জন্য ধন্যবাদ। আগে এটি কনভার্ট ছিল oToInt32 এবং আমি এটি পরিবর্তন করতে চেয়েছিলাম Int32. পার্স এটি ছোট করার জন্য। : ডি
মেরিন নকরমি

2
2 টি কম অক্ষরের intপরিবর্তে ব্যবহার করুন Int32
রিক

2

রেব্মু (9 টি অক্ষর)

z?MOl2A 1

পরীক্ষা

>> rebmu/args [z?MOl2A 1] 7
== false

>> rebmu/args [z?MOl2A 1] 8 
== true

>> rebmu/args [z?MOl2A 1] 9 
== false

রেবমু রেবোলের একটি সংকীর্ণ উপভাষা। কোডটি মূলত:

z? mo l2 a 1  ; zero? mod log-2 input 1

বিকল্প

14 টি অক্ষর — রেবমুতে 'মোশ' কিছুটা ও নেই AND AND

z?AND~aTIddA 3

রেবলে:

zero? a & to-integer a / 3


1

পাইথন, 35

print bin(input()).strip('0')=='b1'

কেবলমাত্র +/- অপারেশনগুলিই ব্যবহার করে না, তবে কোনও গণিত ক্রিয়াকলাপ বাইনারি আকারে রূপান্তর করা বাদ দেয় aside

অন্যান্য জিনিস (আকর্ষণীয় তবে প্রতিযোগিতার জন্য নয়):

আমার একটি রিজেপ্স্প সংস্করণও রয়েছে ()) :

import re;print re.match(r'^0b10+$',bin(input())) is not None

(ধারণাটি পছন্দ করুন, তবে আমদানি করুন এবং ম্যাচের ক্রিয়াকলাপটি এটিকে দীর্ঘ করে দেয়)

এবং দুর্দান্ত, তবে বিরক্তিকর বিটওয়াইজ অপারেশন সংস্করণ (31) :

x=input();print x and not x&~-x

(হ্যাঁ, এটি খাটো, তবে এটি হ্রাসের জন্য x -x ব্যবহার করে যা উপভোগ করে - পরিচালনা করে)


বুথবাইয়ের উত্তরগুলি আমার প্রথম হিসাবে একই ধারণা ব্যবহার করে, তবে সংক্ষিপ্ত :(
ইভান আনিশুক

1

পাইথন 2.7 ( 30 29 39 37)

সম্পাদনা: ব্যবহারকারী ইনপুট প্রয়োজনীয়তার কারণে আপডেট হয়েছে;

a=input()
while a>1:a/=2.
print a==1

নিষ্ঠুর বল, = 1 (সাফল্য) বা <1 (ব্যর্থ) হওয়া পর্যন্ত ভাগ করার চেষ্টা করুন


1
not a%2হিসাবে লেখা যেতে পারে a%2==0। মঞ্জুর, এটি বহু ভাষায় দীর্ঘ হবে তবে পাইথন নয়।
কনরাড বোরোস্কি

@ এক্সফিক্স ধন্যবাদ, পরীক্ষিত এবং আপডেট হয়েছে।
জোয়াকিম ইসাকসন

1
বা আরও ভাল a%2<1,।
বুথবি

2.অপসারণের পরে আপনার কাছে একটি জায়গা রয়েছে যা একটি বাইট সংরক্ষণ করতে পারে!
কীর্তন প্রভাকরণ



1

এপিএল (0/1 এর জন্য 12, হ্যাঁ / না 27 এর জন্য)

≠/A=2*0,ιA←⍞ 

বা, যদি আমাদের পাঠ্য আউটপুট করতে হয়:

3↑(3x≠/A=2*0,ιA←⍞)↓'YESNO '

এ পড়ুন 0.A একটি ভেক্টর গঠন করুন, তারপরে একটি ভেক্টর 2 0 ..2 (হ্যাঁ, যে পথ বেশি প্রয়োজনীয়), তারপর একটি ভেক্টর সেই (অধিকতম 0 এবং একটি ভেক্টর ফলে প্রতিটি সঙ্গে একটি তুলনা এক 1), তারপরে জোর করুন (এপিএলে কোনও জোর অপারেটর নেই, তবে boo বুলিয়ানদের জন্য প্রয়োগ হিসাবে এটি এক হিসাবে কাজ করবে)) আমাদের এখন 0 বা 1 আছে।

হ্যাঁ বা NO পেতে: 0 বা 1 কে 3 দ্বারা গুণ করুন, 'হ্যাঁ' থেকে এই সংখ্যাটি ফেলে দিন, তারপরে এর প্রথম 3 টি অক্ষর নিন।


1

সি, 65 বাইট

main(k){scanf("%i",&k);while(k&&!(k%2))k/=2;puts(k==1?"T":"F");}

অন্তর্ভুক্ত টাইপিংয়ের main(k){...উপর নির্ভর করে আপনি 5 টি অক্ষর কেটে ফেলতে পারেন int। এটি ইউবি হতে পারে, তবে এটি কোড গল্ফ। প্রযোজনায় অবশ্যই এর আগে কিছু ব্যবহার করা উচিত নয়।
কেভিন

1

হাস্কেল ( 52 50)

k n=elem n$map(2^)[1..n]
main=interact$show.k.read
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.