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

C#-এ দুটি BitArray সমান কিনা যাচাই করা (Equals মেথড)


C#-এ BitArray.Equals() মেথডটি দুটি BitArray অবজেক্ট সমান কিনা তা যাচাই করতে ব্যবহৃত হয়। গুরুত্বপূর্ণ: BitArray-র জন্য Equals() রেফারেন্স সমতা (reference equality) চেক করে, বিট-বাই-বিট কন্টেন্ট সমতা (content equality) নয়।

উদাহরণ ১: একই রেফারেন্স (Reference equality)

using System; 
using System.Collections; 
public class Demo { 
    public static void Main(){ 
        BitArray arr1 = new BitArray(2); 
        BitArray arr2 = new BitArray(2); 
        arr1[0] = false; 
        arr1[1] = true; 
        Console.WriteLine("Elements in BitArray1..."); 
        foreach (bool res in arr1){ 
            Console.WriteLine(res); 
        } 
        arr2[0] = false; 
        arr2[1] = true; 
        Console.WriteLine("Elements in BitArray2..."); 
        foreach (bool res in arr2){ 
            Console.WriteLine(res); 
        } 
        BitArray arr3 = new BitArray(2); 
        arr3 = arr2; // একই রেফারেন্স
        Console.WriteLine("Is BitArray2 equal to BitArray3? = " + arr2.Equals(arr3)); 
    } 
}

আউটপুট

Elements in BitArray1... 
False 
True 
Elements in BitArray2... 
False 
True 
Is BitArray2 equal to BitArray3? = True

উদাহরণ ২: একই কন্টেন্ট কিন্তু আলাদা রেফারেন্স

using System; 
using System.Collections; 
public class Demo { 
    public static void Main(){ 
        BitArray arr1 = new BitArray(2); 
        BitArray arr2 = new BitArray(2); 
        arr1[0] = false; 
        arr1[1] = true; 
        Console.WriteLine("Elements in BitArray1..."); 
        foreach (bool res in arr1){ 
            Console.WriteLine(res); 
        } 
        arr2[0] = false; 
        arr2[1] = true; 
        Console.WriteLine("Elements in BitArray2..."); 
        foreach (bool res in arr2){ 
            Console.WriteLine(res); 
        } 
        Console.WriteLine("Is BitArray1 equal to BitArray2? = " + arr1.Equals(arr2)); 
    } 
}

আউটপুট

Elements in BitArray1... 
False 
True 
Elements in BitArray2... 
False 
True 
Is BitArray1 equal to BitArray2? = False

কন্টেন্ট সমতা (Content Equality) চেক করার উপায়

যেহেতু Equals() রেফারেন্স চেক করে, বিট-বাই-বিট তুলনার জন্য নিচের পদ্ধতিগুলো ব্যবহার করুন:

// পদ্ধতি ১: ম্যানুয়াল লুপ
bool AreBitArraysEqual(BitArray a1, BitArray a2) {
    if (a1.Count != a2.Count) return false;
    for (int i = 0; i < a1.Count; i++) {
        if (a1[i] != a2[i]) return false;
    }
    return true;
}

// পদ্ধতি ২: LINQ ব্যবহার করে
bool AreBitArraysEqualLinq(BitArray a1, BitArray a2) {
    return a1.Count == a2.Count && 
           a1.Cast<bool>().SequenceEqual(a2.Cast<bool>());
}

// পদ্ধতি ৩: CopyTo ব্যবহার করে বাইট অ্যারে-এ কনভার্ট করে
bool AreBitArraysEqualBytes(BitArray a1, BitArray a2) {
    if (a1.Count != a2.Count) return false;
    byte[] bytes1 = new byte[(a1.Count + 7) / 8];
    byte[] bytes2 = new byte[(a2.Count + 7) / 8];
    a1.CopyTo(bytes1, 0);
    a2.CopyTo(bytes2, 0);
    return bytes1.SequenceEqual(bytes2);
}

মূল পয়েন্টস

  • BitArray.Equals() ডিফল্ট Object.Equals() আচরণ বজায় রাখে (রেফারেন্স সমতা)।
  • একই বিট প্যাটার্নवाले দুটি আলাদা BitArray অবজেক্ট false রিটার্ন করবে।
  • কন্টেন্ট তুলনার জন্য কাস্টম লজিক বা LINQ-এর SequenceEqual() ব্যবহার করুন।
  • BitArray কম্প্যাক্ট বিট স্টোরেজের জন্য অপ্টিমাইজড (প্রতি বুল ১ বিট)۔
  • Count, Length প্রপার্টি বিট সংখ্যা রিটার্ন করে।
  1. পাইথন প্যান্ডাস - দুটি Index অবজেক্ট সমান কিনা তা নির্ধারণ করুন

  2. পাইথন: স্ট্রিং স্প্লিটের অংশগুলো সমান কিনা যাচাই করা

  3. পাইথন প্যান্ডাস: দুটি ডেটাফ্রেম অবজেক্ট সমান কিনা যাচাই করা

  4. পাইথন প্রোগ্রাম: দুটি নম্বর amical (Amicable Numbers) কিনা চেক করা