আমাদেরকে দুটি বাইনারি স্ট্রিং দেওয়া হয়েছে, আসুন str_1 এবং str_2 বলি যাতে 1's এবং 0's এর সংমিশ্রণ রয়েছে এবং কাজটি হল প্রথমে সেট তৈরি করা, আসুন str_1 থেকে সম্ভাব্য বিভিন্ন পারমুটেশনের "SET" বলি এবং তারপরে আমরা XOR অপারেশনগুলি সম্পাদন করব। বাইনারি স্ট্রিং str_2 সহ উপাদান সেট করুন এবং তারপর XOR 0 রিটার্ন করছে কিনা তা পরীক্ষা করুন। যদি হ্যাঁ, তাহলে কেসটি বিবেচনা করুন অন্যথায় এটি উপেক্ষা করুন৷
৷আসুন উদাহরণ দিয়ে বোঝা যাক।
উদাহরণস্বরূপ
ইনপুট - string str_1 ="1111", string str_2 ="1111"
আউটপুট - 0 হিসাবে অন্যান্য বাইনারি স্ট্রিং সহ XOR সহ চক্রীয় স্থানচ্যুতিগুলির সংখ্যা হল:4
ব্যাখ্যা - আমরা স্ট্রিং str_2 ব্যবহার করে সেট তৈরি করব এবং সেট হবে {1111}। এখন আমরা স্ট্রিং str_1 ব্যবহার করে XOR অপারেশনগুলি সম্পাদন করব এবং সেট তৈরি করব এভাবে {1111} ^ “1111” =0। যেহেতু আমাদের স্ট্রিং str_2-এ 4টি অনুরূপ উপাদান রয়েছে তাই আমরা 4টি ভিন্ন পারমুটেশন তৈরি করতে পারি তাই আউটপুট 4।
ইনপুট - str_1 ="1101", string str_2 ="1101"
আউটপুট - 0 হিসাবে অন্যান্য বাইনারি স্ট্রিং সহ XOR সহ চক্রীয় পারমুটেশনের সংখ্যা হল:1
ব্যাখ্যা - আমরা স্ট্রিং str_2 ব্যবহার করে সেট তৈরি করব এবং সেটটি হবে {1101, 1110, 1011, 0111}। এখন আমরা স্ট্রিং str_1 ব্যবহার করে XOR ক্রিয়াকলাপ সম্পাদন করব এবং গঠিত সেট অর্থাৎ
{1101} ^ 1101 =0
{1110} ^ 1101 সমান নয় 0
{1011} ^ 1101 সমান নয় 0
{0111} ^ 1101 সমান নয় 0
আমরা যেমন করতে পারি আমরা শুধুমাত্র একটি 0 অর্জন করতে পেরেছি তাই গণনা হল 1।
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
- দুটি বাইনারি স্ট্রিং ইনপুট করুন, আসুন str_1 এবং str_2 বলি এবং পরবর্তী প্রক্রিয়াকরণের জন্য তাদের cyclic_permutation() ফাংশনে পাস করি।
- ফলাফল সংরক্ষণ করার জন্য একটি অস্থায়ী পরিবর্তনশীল তৈরি করুন এবং str_2 কে str_2 + str_2 হিসাবে সেট করুন এবং তারপর str_2 কে str_2.substr(0, str_2.size()-1 হিসাবে সেট করুন।
- একটি স্ট্রিং টাইপ ভেরিয়েবল str তৈরি করুন এবং এটিকে str_1 এবং str_2 এর সংমিশ্রণে সেট করুন তারপর স্ট্রিং str এর দৈর্ঘ্য গণনা করুন। স্ট্রিং str এর দৈর্ঘ্যের একটি অ্যারে তৈরি করুন।
- একটি আর্গুমেন্ট হিসাবে ফাংশনে স্ট্রিং স্ট্র এবং অ্যারে পাস করে ফাংশন চেক() কে কল করুন।
- ফাংশনের ভিতরে
- দুটি ভেরিয়েবল শুরু এবং শেষ ঘোষণা করুন এবং তাদের 0 এ সেট করুন
- স্ট্রিংয়ের দৈর্ঘ্য গণনা করুন।
- স্ট্রিং -1-এর জন্য i থেকে দৈর্ঘ্য পর্যন্ত লুপ শুরু করুন এবং পরীক্ষা করুন যদি i শেষের চেয়ে বড় তারপর i হিসাবে শুরু করুন এবং i হিসাবে শেষ করুন। এখন শুরু করুন যখন শেষ স্ট্রিং এর দৈর্ঘ্যের চেয়ে কম এবং str[end-start] সমান str[end] এবং শেষের মান 1 দ্বারা বৃদ্ধি করুন
- এখন arr[i] শেষ হিসাবে সেট করুন - শুরু করুন এবং শেষ 1 দ্বারা হ্রাস করুন
- অন্যথায়, একটি অস্থায়ী পরিবর্তনশীল টেম্প তৈরি করুন এবং এটিকে i হিসাবে সেট করুন - শুরু করুন এবং IF arr[temp] শেষের চেয়ে কম - i + 1 তারপর arr[i] কে arr[temp] হিসাবে সেট করুন। অন্যথায়, শুরুতে i সেট করুন এবং শুরু করুন যখন একটি স্ট্রিংয়ের দৈর্ঘ্যের চেয়ে কম শেষ করুন এবং str[এন্ড-স্টার্ট] হিসাবে str[এন্ড] তারপর শেষ 1 দ্বারা বৃদ্ধি করুন এবং arr[i] শেষ করুন - শুরু করুন এবং শেষটি 1 দ্বারা হ্রাস করুন .
- স্টার্ট লুপ FOR i থেকে 1 পর্যন্ত স্ট্রিং str -1 এর দৈর্ঘ্য এবং চেক করুন IF arr[i] স্ট্রিং str_1 এর দৈর্ঘ্যের সমান তারপর গণনা 1 দ্বারা বৃদ্ধি করুন
- রিটার্ন গণনা
- ফলাফল প্রিন্ট করুন
উদাহরণ
#include <bits/stdc++.h> using namespace std; void check(string str, int arr[]) { int start = 0, end = 0; int len = str.length(); for (int i = 1; i <= len - 1; i++) { if (i > end) { start = i; end = i; while (end < len && str[end - start] == str[end]) { end++; } arr[i] = end - start; end--; } else { int temp = i - start; if (arr[temp] < end - i + 1) { arr[i] = arr[temp]; } else { start = i; while (end < len && str[end - start] == str[end]) { end++; } arr[i] = end - start; end--; } } } } int cyclic_permutation(string str_1, string str_2) { int count = 0; str_2 = str_2 + str_2; str_2 = str_2.substr(0, str_2.size() - 1); string str = str_1 + "$" + str_2; int len = str.length(); int arr[len]; check(str, arr); for (int i = 1; i <= len - 1; i++) { if (arr[i] == str_1.length()) { count++; } } return count; } int main() { string str_1 = "1111"; string str_2 = "1111"; cout << "Count of cyclic permutations having XOR with other binary string as 0 are: " << cyclic_permutation(str_1, str_2); return 0; }
যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −
উৎপন্ন করবেআউটপুট
Count of cyclic permutations having XOR with other binary string as 0 are: 4