কম্পিউটার

পাইথনের নির্দিষ্ট পয়েন্টগুলি পর্যবেক্ষণ করার জন্য k মনিটরিং স্টেশনগুলি যথেষ্ট কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন একটি সেন্সর মডিউল আছে যা r ব্যাসার্ধ পর্যন্ত তার কাছাকাছি পরিবেশ পর্যবেক্ষণ করতে পারে। মডিউলের মনিটরিং সার্কেলের ল্যাটিস পয়েন্টে কিছু জিনিস রয়েছে যা পর্যবেক্ষণ করা দরকার। সুতরাং, কম-পাওয়ার মডিউলগুলির k সংখ্যা স্থাপন করা হয়েছে যাতে তারা শুধুমাত্র সেই নির্দিষ্ট পয়েন্টগুলি নিরীক্ষণ করতে পারে। ব্যাসার্ধের বর্গ এবং কম-পাওয়ার মডিউলের k সংখ্যার পরিপ্রেক্ষিতে, আমাদের খুঁজে বের করতে হবে যে বিন্দুগুলি সঠিকভাবে পর্যবেক্ষণ করা যায় কিনা। পর্যবেক্ষণ করা সম্ভব হলে আমরা সত্য ফেরত দিই, অন্যথায়, আমরা মিথ্যা ফেরত দিই।

সুতরাং, যদি ইনপুটটি ব্যাসার্ধের বর্গক্ষেত্রের মত হয় (j) =4, পর্যবেক্ষণ পয়েন্টের সংখ্যা(k) =3, তাহলে আউটপুট হবে False

j =4 হলে, পর্যবেক্ষণ বৃত্তের পরিধিতে 4টি বিন্দু আছে; যেগুলো হল:(0,2), (0,-2), (2,0), এবং (-2,0)। সুতরাং, যদি আমরা তিনটি নতুন মনিটরিং স্টেশন প্রবর্তন করি, আমরা পয়েন্টগুলি সম্পূর্ণরূপে নিরীক্ষণ করতে পারি না৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • square_set :=44721 পর্যন্ত মানের বর্গাকার সমন্বিত একটি সেট
  • i :=0
  • res :=0
  • যখন i <(j ^ 0.5), do
    • যদি (j - i ^ 2) স্কোয়ার_সেটে উপস্থিত থাকে, তাহলে
      • res :=res + 1
    • i :=i + 1
  • res :=res * 4
  • যদি k>=res হয়, তাহলে
    • সত্য ফেরান
  • অন্যথায়,
    • মিথ্যে ফেরত দিন

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

square_set = set([z ** 2 for z in range(44722)])
def solve(j, k):
    i = 0
    res = 0
    while i < (j ** 0.5):
        if j - i ** 2 in square_set:
            res += 1
        i += 1    
    res *= 4
    if k >= res:
        return True
    else:
        return False

print(solve(4, 3))

ইনপুট

4, 3

আউটপুট

False

  1. পাইথনের প্রত্যেকের দ্বারা গ্রাফটি অতিক্রম করা যায় কিনা তা খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে সমস্ত পয়েন্ট সংযোগ করার জন্য সর্বনিম্ন খরচ খুঁজে বের করার প্রোগ্রাম

  3. পাইথন ব্যবহার করে দুটি এক্সপ্রেশন ট্রি সমতুল্য কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম

  4. পাইথন প্রোগ্রাম কত কিউব কাটা হয় তা খুঁজে বের করতে