টাস্কটি এমন কোড লেখা যা বিটগুলির পরিমাণের জন্য ছোট লজিকাল সূত্রগুলি খুঁজে পেতে পারে।
সামগ্রিক চ্যালেঞ্জটি হ'ল y বাইনারি 0/1 ভেরিয়েবলের যোগফল কিছু মান x সমান কিনা তা পরীক্ষা করতে আপনার কোডটি সবচেয়ে ছোট সম্ভাব্য প্রজোজিক লজিকাল সূত্রটি সন্ধান করা। আসুন x1, x2, x3, x4 ভেরিয়েবলগুলিকে কল করুন আপনার অভিব্যক্তি যোগফলের সমতুল্য হওয়া উচিত। অর্থাত্, যৌক্তিক সূত্রটি সঠিক হওয়া উচিত এবং যদি যোগফল x এর সমান হয়।
এটি শুরু করার জন্য এখানে একটি নিষ্পাপ উপায়। Y = 15 এবং x = 5 বলুন 5 টি ভেরিয়েবল বাছাই করার সমস্ত 3003 টি বিভিন্ন উপায়ে বাছুন এবং প্রত্যেকের জন্য সেই ভেরিয়েবলগুলির AND এবং অবশিষ্ট ভেরিয়েবলগুলির উপকারের সাথে একটি নতুন ধারা তৈরি করুন। 45054 এর মোট ব্যয়ের জন্য আপনি 153 দৈর্ঘ্যের প্রতিটি দৈর্ঘ্যের 3003 টি ধারা দিয়ে শেষ করেছেন।
আপনার উত্তরটি এই ধরণের একটি যৌক্তিক প্রকাশ হওয়া উচিত যা কেবলমাত্র অজগরকে আটকে দেওয়া যায়, বলুন, তাই আমি এটি পরীক্ষা করতে পারি। যদি দু'জন লোক একই আকারের অভিব্যক্তি পায় তবে দ্রুততম কোডটি চালিত কোডটি।
আপনার সমাধানে আপনাকে নতুন ভেরিয়েবল প্রবর্তন করার অনুমতি দেওয়া হয়। সুতরাং এই ক্ষেত্রে আপনার যৌক্তিক সূত্রে y বাইনারি ভেরিয়েবল, এক্স এবং কিছু নতুন ভেরিয়েবল রয়েছে of পুরো সূত্রটি সন্তুষ্টিজনক হবে যদি এবং শুধুমাত্র যদি y ভেরিয়েবলগুলির যোগফল x এর সমান হয়।
শুরু করার অনুশীলন হিসাবে কিছু লোক x = 2 যুক্ত করে y = 5 ভেরিয়েবল দিয়ে শুরু করতে চাইতে পারেন। নিষ্পাপ পদ্ধতিটি তখন 50 টির দাম দেয়।
কোডটিকে ইনপুট হিসাবে দুটি মান y এবং x নেওয়া উচিত এবং আউটপুট হিসাবে সূত্র এবং তার আকার আউটপুট করা উচিত। সমাধানের ব্যয় হ'ল এর আউটপুটে কেবল ভেরিয়েবলের কাঁচা গণনা। সুতরাং (a or b) and (!a or c)
4. হিসেবে গন্য করা কেবল অনুমোদিত অপারেটার হয় and
, or
এবং not
।
আপডেট এটি দেখা যাচ্ছে যে এই সমস্যাটি সমাধানের জন্য একটি চতুর পদ্ধতি রয়েছে যখন x = 1, কমপক্ষে তত্ত্বে।
z[0] = y[0] and y[1]
, আপনি কীভাবে এটি নির্দেশিত চান?
z[0]
উপস্থাপন y[0] or y[1]
করতে চাই তবে আমার কাছে এমন একটি ধারাটি প্রবর্তন করা দরকার যা দেখতে (y[0] or y[1]) or not z[0]
(বা অনুমোদিত 3 অপারেটর ব্যবহার করে কোনও সমতুল্য বিবৃতি)।