এই সমস্যায়, আমাদেরকে একটি স্ট্রিং এক্সপ্রেশন দেওয়া হয়েছে যা একটি বুলিয়ান এক্সপ্রেশনকে উপস্থাপন করে। আমাদের কাজ হল স্ট্রিং হিসাবে উপস্থাপিত বুলিয়ান এক্সপ্রেশন মূল্যায়ন করা।
অভিব্যক্তিতে বৈধ অক্ষর হল −
0 বা 1 বুলিয়ান মান নির্দেশ করে
এবং বোঝানো এবং অপারেশন
| বোঝানো বা অপারেশন
^ XOR অপারেশন নির্দেশ করে
আমাদের এই অভিব্যক্তিটি সমাধান করতে হবে এবং ফলাফলটি ফেরত দিতে হবে।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট: str =1&1|0^1^0&1
আউটপুট: 0
ব্যাখ্যা:
1&1|0^1^0&1
1 এবং 1 বা 0 XOR 1 XOR 0 এবং 1
1 বা 0 XOR 1 XOR 0 এবং 1
1 XOR 1 XOR 0 এবং 1
0 XOR 0 এবং 1
0 এবং 1
0
সমাধান পদ্ধতি:
একটি সহজ সমাধান হল বর্তমান মান পরীক্ষা করা এবং তারপর একে একে অপারেশন করা। এর জন্য আমরা স্ট্রিংটির 3-3টি অক্ষর বিবেচনা করব এবং তারপর তাদের ফলাফল ফিরিয়ে দেব।
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#include <iostream>
using namespace std;
int andOperation(int a, int b){
return a & b;
}
int orOperation(int a, int b){
return a | b;
}
int xorOperation(int a, int b){
return a^b;
}
char solveExpression(string s) {
int n = s.length();
for (int i = 0; i < n; i += 2) {
if (s[i + 1] == '&') {
s[i + 2] = andOperation(s[i], s[i + 2]);
}
else if (s[i + 1] == '+') {
s[i + 2] = orOperation(s[i], s[i + 2]);
}
else {
s[i + 2] = xorOperation(s[i], s[i + 2]);
}
}
return s[n - 1] ;
}
int main() {
string expr = "0^1+0+1&1";
cout<<"The result of expression "<<expr<<" is "<<solveExpression(expr);
return 0;
} আউটপুট −
The result of expression 0^1+0+1&1 is 1