এই সমস্যায়, আমাদেরকে একটি স্ট্রিং এক্সপ্রেশন দেওয়া হয়েছে যা একটি বুলিয়ান এক্সপ্রেশনকে উপস্থাপন করে। আমাদের কাজ হল স্ট্রিং হিসাবে উপস্থাপিত বুলিয়ান এক্সপ্রেশন মূল্যায়ন করা।
অভিব্যক্তিতে বৈধ অক্ষর হল −
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