এটি সাম্প্রতিক চ্যালেঞ্জের একটি সংস্করণ এই সংখ্যাটি কি -2 এর পূর্ণসংখ্যা শক্তি? সমস্যার আকর্ষণীয় প্রকৃতিটি হাইলাইট করতে এবং চ্যালেঞ্জটিকে আরও কঠিন করে তুলতে ডিজাইন করা বিভিন্ন মানদণ্ডের সাথে। আমি এখানে এটি কিছু বিবেচনা করা ।
সংযুক্ত প্রশ্নে টবি যে বিস্ময়করভাবে বলেছেন সেই চ্যালেঞ্জটি হ'ল:
কোনও পূর্ণসংখ্যা 2-এর সঠিক শক্তি কিনা তা নির্ধারণের চতুর উপায় রয়েছে That's এটি আর কোনও আকর্ষণীয় সমস্যা নয়, সুতরাং নির্ধারিত পূর্ণসংখ্যা -2 এর সঠিক শক্তি কিনা তা নির্ধারণ করি । উদাহরণ স্বরূপ:
-2 => yes: (-2)¹ -1 => no 0 => no 1 => yes: (-2)⁰ 2 => no 3 => no 4 => yes: (-2)²
নিয়মাবলী:
- একটি পূর্ণসংখ্যা হয় 64 বিট, স্বাক্ষরিত, দুটির পরিপূরক। এটি আপনার সাথে কাজ করতে পারে এমন একমাত্র ডেটা টাইপ।
- আপনি কেবল নিম্নলিখিত অপারেশনগুলি ব্যবহার করতে পারেন। এগুলির প্রত্যেককে একটি অপারেশন হিসাবে গণনা করা হয়।
n << k,n >> k: বিটnদ্বারা বাম / ডান স্থানান্তরk। ডান শিফটে সাইন বিট বাড়ানো হয়েছে।n >>> k: ডান শিফট কিন্তু সাইন বিট প্রসারিত করবেন না। 0 এর মধ্যে স্থানান্তরিত হয়।a & b,a | b,a ^ b: Bitwise এবং, অর, X অর।a + b,a - b,a * b: যোগ করুন, বিয়োগ, গুণ।~b: বিটওয়াইস উল্টানো।-b: দু'জনের পরিপূরক অবহেলা।a / b,a % b: ভাগ করুন (পূর্ণসংখ্যার ভাগফল, 0 টির দিকে রাউন্ড) এবং মডুলো।- Negativeণাত্মক সংখ্যার মডুলো C99 এ নির্দিষ্ট বিধিগুলি ব্যবহার করে :
(a/b) * b + a%bসমান হবেa। সুতরাং5 % -3হয়2, এবং-5 % 3হয়-2: 5 / 3হয়1,5 % 3হয়2যেমন 1 * 3 + 2 = 5।-5 / 3হয়-1,-5 % 3হয়-2, যেমন -1 * 3 + -2 = -5।5 / -3হয়-1,5 % -3হয়2, যেমন -1 * -3 + 2 = 5।-5 / -3হয়1,-5 % -3হয়-2, 1 * -3 + -2 = -5 হিসাবে।- লক্ষ করুন যে পাইথনের
//ফ্লোর বিভাগ অপারেটরটি এখানে বিভাগের "রাউন্ডের দিকে 0" সম্পত্তি%পূরণ করে না এবং পাইথনের অপারেটর প্রয়োজনীয়তাও পূরণ করে না either
- Negativeণাত্মক সংখ্যার মডুলো C99 এ নির্দিষ্ট বিধিগুলি ব্যবহার করে :
- অ্যাসাইনমেন্টগুলি অপারেশন হিসাবে গণনা করা হয় না। সি হিসাবে, অ্যাসাইনমেন্টগুলি অ্যাসাইনমেন্টের পরে বাম দিকের মানটির মূল্যায়ন করে:
a = (b = a + 5)সেটbকরেa + 5, তারপরে সেটaকরেbএবং একটি ক্রিয়াকলাপ হিসাবে গণনা করে। - যৌগিক কার্যভারগুলি
a += bঅর্থa = a + bহিসাবে ব্যবহৃত হতে পারে এবং একটি অপারেশন হিসাবে গণনা করা যেতে পারে ।
- আপনি পূর্ণসংখ্যার ধ্রুবক ব্যবহার করতে পারেন, তারা কোনও হিসাবে গণনা করে না।
- ক্রিয়াকলাপের ক্রম নির্দিষ্ট করার জন্য অভিভাবকরা গ্রহণযোগ্য।
- আপনি ফাংশন ঘোষণা করতে পারেন। ফাংশন ঘোষণাগুলি আপনার পক্ষে সুবিধাজনক যে কোনও স্টাইলে হতে পারে তবে মনে রাখবেন যে bit৪ বিট পূর্ণসংখ্যা শুধুমাত্র বৈধ ডেটা টাইপ। ফাংশন ঘোষণাগুলি অপারেশন হিসাবে গণনা করা হয় না, তবে একটি ফাংশন কল একটি হিসাবে গণনা করে। এছাড়াও, পরিষ্কার করার জন্য: কার্যক্রমে একাধিক
returnবিবৃতি থাকতে পারে এবং যেreturnকোনও বিন্দু থেকে অনুমোদিত হতে পারে ।returnনিজেই একটি অপারেশন হিসাবে গণনা করা হয় না। - আপনি বিনা ব্যয়ে ভেরিয়েবল ঘোষণা করতে পারেন।
- আপনি
whileলুপগুলি ব্যবহার করতে পারেন , তবে আপনি ব্যবহার করতে পারবেন নাifবা ব্যবহারও করতে পারেনfor।whileশর্তে ব্যবহৃত অপারেটররা আপনার স্কোরকে গণনা করে।whileলুপগুলি যতক্ষণ না তাদের শর্তটি একটি অ-শূন্য মানের (যে "ভাষায় এই ধারণার বৈধ ফলাফল নয়) তে" সত্যবাদী "0 মূল্যায়ন করে ততক্ষণ কার্যকর করা হয়। প্রারম্ভিক প্রত্যাবর্তন অনুমতি দেওয়া হয় সাল থেকে, আপনি ব্যবহার করার অনুমতি দেওয়া হয়breakহিসাবে ভাল - ওভারফ্লো / আন্ডারফ্লো অনুমোদিত এবং কোনও মান দমন করা হবে না। এটি চিকিত্সা করা হয় যেন অপারেশনটি আসলে সঠিকভাবে ঘটেছিল এবং তারপরে 64৪ বিটে ছাঁটাই হয়েছিল।
স্কোরিং / জয়ের মানদণ্ড:
আপনার কোডে অবশ্যই এমন মান তৈরি করতে হবে যা শূন্য নয়, যদি ইনপুটটি -2 এর পাওয়ার হয় এবং অন্যথায় শূন্য হয়।
এটি পরমাণু-কোড-গল্ফ । আপনার স্কোরটি আপনার কোডে উপস্থিত অপারেশনগুলির মোট সংখ্যা (উপরে সংজ্ঞায়িত হিসাবে), রান-টাইমে কার্যকর হওয়া মোট অপারেশনগুলির সংখ্যা নয় । নিম্নলিখিত কোড:
function example (a, b) {
return a + ~b;
}
function ispowerofnegtwo (input) {
y = example(input, 9);
y = example(y, 42);
y = example(y, 98);
return y;
}
5 টি অপারেশন রয়েছে: ফাংশনে দুটি এবং তিনটি ফাংশন কল।
আপনি কীভাবে আপনার ফলাফল উপস্থাপন করেন তা বিবেচনাধীন নয়, আপনার ভাষায় যা সুবিধাজনক তা ব্যবহার করুন, শেষ পর্যন্ত ফলাফলটি পরিবর্তনশীল হিসাবে সংরক্ষণ করুন, কোনও ফাংশন থেকে ফেরত দেওয়া হোক বা যাই হোক না কেন।
বিজয়ী হ'ল পোস্টটি যা প্রদর্শনযোগ্যভাবে সঠিক (প্রয়োজনীয় হিসাবে একটি নৈমিত্তিক বা আনুষ্ঠানিক প্রমাণ সরবরাহ করুন) এবং উপরে বর্ণিত হিসাবে সর্বনিম্ন স্কোর রয়েছে।
বোনাস খুব হার্ড মোড চ্যালেঞ্জ!
পার্টিতে লোকদের মুগ্ধ করার সম্ভাব্য ক্ষমতা ব্যতীত অন্য কিছুই জয়ের সুযোগের জন্য, whileলুপগুলি ব্যবহার না করে একটি উত্তর জমা দিন ! এর মধ্যে যদি যথেষ্ট পরিমাণ জমা দেওয়া হয় তবে আমি বিজয়ী দলগুলিকে দুটি বিভাগে ভাগ করতে (লুপগুলি সহ এবং ছাড়াও) বিবেচনা করতে পারি।
দ্রষ্টব্য: আপনি যদি এমন ভাষায় কোনও সমাধান সরবরাহ করতে চান যা কেবল 32-বিট পূর্ণসংখ্যার সমর্থন করে তবে আপনি তা করতে পারেন, তবে আপনি যদি যথেষ্ট প্রমাণ করেন যে এটি এখনও ব্যাখ্যায় 64৪-বিট পূর্ণসংখ্যার জন্য সঠিক হবে।
এছাড়াও: নির্দিষ্ট ভাষা-নির্দিষ্ট বৈশিষ্ট্যগুলি বিনা মূল্যে অনুমোদিত হতে পারে যদি তারা বিধিগুলি এড়ায় না তবে উপরের নিয়ম অনুসারে আপনার ভাষাকে বাধ্য করতে বাধ্য করা প্রয়োজন । উদাহরণ (কল্পিত) জন্য, আমি একটি বিনামূল্যে অনুমতি হবে না 0 সমান মধ্যে তুলনা whileযখন সামগ্রিকভাবে শর্ত প্রয়োগ রয়েছে যে, "truthy" 0 এর একটি ভাষার জন্য একটি কার্যসংক্রান্ত হিসাবে লুপ। এই ধরণের জিনিসগুলির সুবিধা নেওয়ার স্পষ্ট প্রচেষ্টা অনুমোদিত নয় - উদাহরণস্বরূপ উপরোক্ত রুলসেটটিতে "সত্যবাদী" 0 বা "অপরিজ্ঞাত" মানগুলির ধারণাগুলি বিদ্যমান নেই এবং তাই সেগুলির উপর নির্ভর করা যায় না।
m ^= s এখনও চিত্তাকর্ষক নয় এবং আমি মনে করি এটি আরও উন্নত করার জন্য প্রতিস্থাপন করা সম্পূর্ণ ঠিক হবে।
whileএবং breakতা করবে না if? if (x) { ... }সমতূল্য while (x) { ... break; }।
breakএবং প্রারম্ভিক রিটার্নগুলি দুঃখজনক অংশ) এবং এটি একটি দীর্ঘ গল্প এবং ভবিষ্যতের চ্যালেঞ্জগুলির জন্য নিয়মে শেখা একটি পাঠ। সর্বদা "বোনাস" সংস্করণ আছে! :)
ifএবং forনিষেধ করা হয়? int x=condition; while (x) { ... x=0; }বিনামূল্যে, আরও কোড। সি-স্টাইল সহ একই জিনিস for।