পটভূমি
সুতরাং, আমরা সকলেই এর মতো ক্লাসিক প্রমাণটি জানি:
a = b
a² = ab
a² - b² = ab - b²
(ab) (a + b) = b (ab)
(a + b) = b
b + b = b
2b = b
2 = 1 (হা হা!)
এর অবশ্যই, ভুলটি হল যে আপনি 0 দ্বারা ভাগ করতে পারবেন না, যেহেতু a = b, a - b = 0, সুতরাং 0 দ্বারা একটি গোপন বিভাগ ছিল।
চ্যালেঞ্জ
আপনাকে এই প্রমাণটি প্রতিলিপি করতে হবে। প্রথমে দুটি এবং দুটি পূর্ণসংখ্যা ঘোষিত করুন (আপনি তাদেরকে কী বলবেন তা বিবেচ্য নয়) এটি সমান। তারপরে aMod এবং bMod কে a এবং b এর সংশোধনযোগ্য সংস্করণ হিসাবে ঘোষণা করুন এবং প্রথমে যথাক্রমে a এবং b এর সমান। আপনাকে অবশ্যই উভয়কে একটি দ্বারা গুণিত করতে হবে, তারপরে উভয় থেকে বি * বি বিয়োগ করুন। তারপরে আপনাকে অবশ্যই খ - বি দ্বারা ভাগ করতে হবে এবং তারপরে বি (বা ক) দ্বারা ভাগ করতে হবে। তারপরে, এ্যামড এবং বিএমডের মধ্যে একটি সমান চিহ্ন সহ প্রিন্ট আউট করুন।
আন্ডারহ্যান্ডড
অবশ্যই, যেহেতু আপনি a এবং b কে সমান ঘোষণা করেছেন, a - b = 0, এবং 0 দিয়ে ভাগ করলে ত্রুটির কারণ হয়। সুতরাং আপনি অবশ্যই এটি সৃজনশীল জাল। এছাড়াও, আপনি প্রমাণটি প্রতিলিপি করার চেষ্টা করছেন বলে, মোড এবং বিমডের সমস্ত ক্রিয়াকলাপের ফলাফল মুদ্রিত হওয়ার পরে অবশ্যই সমান হবে না। তাদের ঠিক 2 এবং 1 সমান করতে হবে না, কেবল দুটি সংখ্যা যা সমান নয়।
এখানে একটি উদাহরণ:
#include <iostream>
#define subtract(a, b) a - b
using namespace std;
int main()
{
int a = 4, b = 4;
int a_2 = a, b_2 = b;
a_2 *= a;
b_2 *= b;
a_2 -= b * b;
b_2 -= b * b;
a_2 = a_2 / subtract(a, b);
b_2 = b_2 / subtract(-b, -a); // a - b == (-b) - (-a)
a_2 /= a;
b_2 /= a;
cout << a_2 << " = " << b_2 << " because I did the same operations on both of them.";
return 0;
}
সেরা নাও হতে পারে তবে এটি পয়েন্টটি চিত্রিত করে।
আন্ডারহ্যান্ডড বোনাস
সমান চিহ্নটি মুদ্রণের পরিবর্তে, আপনি কেবল দুটি ভেরিয়েবল (এমড এবং বিএমড) মুদ্রণ করতে পারেন এবং তারপরে এমন কোড রয়েছে যা দুটি ভেরিয়েবলের সাথে সাম্যের জন্য তুলনা করে তবে বাস্তবে সত্য যে এগুলি সমান হয় (এবং কিছু রূপ মুদ্রণ করে true
)।
মনে রাখবেন, এটি একটি জনপ্রিয়তা প্রতিযোগিতা, সুতরাং সর্বোচ্চ সংখ্যক আপভোট জিতেছে।
এছাড়াও, গণিত 2.0 নামে গণিতের একটি নতুন সংস্করণ স্ট্যান্ডার্ড লুফোলগুলি স্বয়ংক্রিয়ভাবে প্রমাণকে অকার্যকর করে তুলেছে।