কম্পিউটার টিউটোরিয়াল

প্রশ্নের জন্য সর্বাধিক XOR খুঁজে বের করার প্রোগ্রাম পাইথনে


আমাদের একটি প্রিসর্টেড অ্যারে আছে যাকে nums বলা হয়েছে এবং এর আকার n, আর একটি মান b রয়েছে। আমাদের নিচের কোয়ারী n বার সম্পাদন করতে হবে:

  • একটি অ-নেগেটিভ মান k খুঁজে বের করুন যাতে k < 2^m এবং nums-এর সব উপাদানের সাথে k-এর XOR সর্বাধিক হয়। এই k হবে i-তম কোয়ারীর উত্তর।

  • বর্তমান অ্যারে nums-এর শেষ উপাদানটি সরিয়ে দিন।

  • একটি answer অ্যারে তৈরি করতে হবে, যেখানে answer[i] হবে i-তম কোয়ারীর উত্তর।

উদাহরণস্বরূপ, ইনপুট nums = [0,1,1,3], m = 2 হলে আউটপুট হবে [0,3,2,3], কারণ:

  • nums = [0,1,1,3], k = 0 যেহেতু 0 XOR 1 XOR 1 XOR 3 XOR 0 = 3।

  • nums = [0,1,1], k = 3 যেহেতু 0 XOR 1 XOR 1 XOR 3 = 3।

  • nums = [0,1], k = 2 যেহেতু 0 XOR 1 XOR 2 = 3।

  • nums = [0], k = 3 যেহেতু 0 XOR 3 = 3।

সমাধানের ধাপসমূহ

  • x := 2^m - 1

  • i = 0 থেকে nums-এর আকার - 1 পর্যন্ত লুপ চালান:

    • nums[i] := nums[i] XOR x

    • x := nums[i]

  • nums-কে উল্টে ফেরত দিন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালোভাবে বুঝার জন্য:

def solve(nums, m):
    x = 2**m - 1
    for i in range(len(nums)):
        nums[i] ^= x
        x = nums[i]
    return nums[::-1]

nums = [0,1,1,3]
m = 2
print(solve(nums, m))

ইনপুট

[0,1,1,3], 2

আউটপুট

[0, 3, 2, 3]
  1. Python-এ সর্বোচ্চ বিল্ডিং হাইট বের করার প্রোগ্রাম

  2. পাইথনে সারি ফ্লিপ করে বাইনারি ম্যাট্রিক্সের সর্বোচ্চ যোগফল বের করার প্রোগ্রাম

  3. পাইথনে প্রতিটি কনডোমিনিয়ামের উচ্চতা সর্বাধিক সম্ভাব্য উচ্চতায় বৃদ্ধি করার জন্য ম্যাট্রিক্স খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে সংলগ্ন সাবঅ্যারের সর্বোচ্চ গুণফল খুঁজে বের করার প্রোগ্রাম