আপনাকে লজিক স্টেটমেন্টগুলির একটি সেট দেওয়া হয়েছে। আপনার চ্যালেঞ্জটি হ'ল অন্যকে বিরোধী যে কোনও একটি অপসারণ করা, তবে অনুকূল উপায়ে (অর্থাত্ ন্যূনতম সংখ্যার বিবৃতি অপসারণ)।
চ্যালেঞ্জ
আপনি এমন একটি প্রোগ্রাম বা একটি ফাংশন লিখবেন যা ইনপুট হিসাবে বিবৃতিগুলির তালিকা নেয়, ন্যূনতম সংখ্যার বিবৃতি সরিয়ে দেয় যে কোনও সমাধান রয়েছে এবং বাকী অংশগুলি আউটপুট করে।
যুক্তিবিদ্যা
বিবৃতিগুলির মধ্যে ভেরিয়েবল A-Z এবং অপারেটর থাকে।
5 জন অপারেটর রয়েছে : -(না), v(বা), ^(এবং), ->(যদি) এবং <->(আইএফএফ)।
সঠিক তালিকা:
A | B | -A | AvB | A^B | A->B | A<->B
0 | 0 | 1 | 0 | 0 | 1 | 1
0 | 1 | 1 | 1 | 0 | 1 | 0
1 | 0 | 0 | 1 | 0 | 0 | 0
1 | 1 | 0 | 1 | 1 | 1 | 1
এই অপারেটরগুলি প্রথম বন্ধনের সাথে একত্রিত হতে পারে ():
A | B | -(AvB) | Av(-A) | A^(-A) | (AvB)->(-B)
0 | 0 | 1 | 1 | 0 | 1
0 | 1 | 0 | 1 | 0 | 0
1 | 0 | 0 | 1 | 0 | 1
1 | 1 | 0 | 1 | 0 | 0
লজিক সিস্টেমগুলি 1 বা আরও বেশি বিবৃতি নিয়ে গঠিত ।
একটি সমাধান করার জন্য যুক্তিবিজ্ঞান সিস্টেম একটি রাষ্ট্র যেখানে সব বিবৃতি একযোগে সত্য।
লজিক সিস্টেমগুলির উদাহরণ:
AvB
-(A<->B)
(AvB)->(-B)
শুধুমাত্র সমাধান হল A = 1, B = 0।
A^B
-(B<->A)
এটির কোনও সমাধান নেই ; কোন সমন্বয় Aএবং Bউভয় বিবৃতি সত্য।
ইনপুট
আপনি ইনপুট হিসাবে বিবৃতি একটি সেট পাবেন । এটি STDIN বা ফাংশন আর্গুমেন্টগুলির মাধ্যমে নেওয়া যেতে পারে, অ্যারে হিসাবে ফর্ম্যাট করা (সুবিধাজনক বিন্যাসে) অথবা একটি নতুন লাইন দ্বারা পৃথক করা বা স্থান-পৃথক স্ট্রিং।
বিবৃতিগুলি নিম্নলিখিত ফর্মের হবে ( প্রায়- এবিএনএফ ):
statement = variable / operation
operation = not-operation / binary-operation
not-operation = "-" operand
binary-operation = operand binary-operator operand
operand = variable / "(" operation ")"
variable = "A"-"Z"
binary-operator = "v" / "^" / "->" / "<->"
উদাহরণ বিবৃতি:
A
Av(-B)
(A<->(Q^C))v((-B)vH)
আউটপুট
আপনি অবশ্যই (সম্ভবত) হ্রাসিত বিবৃতিগুলির সেটটি ফিরে পেয়েছেন, যা সেগুলি পেয়েছে ঠিক সেই আকারে। আবার, তালিকাটি স্ট্রিংগুলির একটি অ্যারে বা একটি নিউলাইন-বিচ্ছিন্ন বা স্থান-পৃথক স্ট্রিং হিসাবে ফর্ম্যাট করা যেতে পারে।
বিধি
- আপনার সর্বদা সর্বনিম্ন সংখ্যার বিবৃতি অপসারণ করা উচিত। যদি একাধিক সম্ভাব্য সমাধান হয় তবে তার মধ্যে একটি আউটপুট নিন।
- আপনি ধরে নিতে পারেন ইনপুটটিতে সর্বদা কমপক্ষে 1 টি স্টেটমেন্ট থাকে এবং ইনপুটটিতে কোনও বিবৃতি পুনরাবৃত্তি হয় না।
- আপনি ধরে নিতে পারেন না যে আউটপুটটিতে সর্বদা একটি বিবৃতি থাকে। (উদাহরণ দেখুন)
- আপনার উত্তরটি বৈধ হওয়ার সাথে মানক লুফোলগুলি ব্যবহার করে এবং এর মধ্যে একটি অপসারণ করতে হবে।
- এটি কোড-গল্ফ , তাই বাইটের মধ্যে সংক্ষিপ্ত উত্তর ins
উদাহরণ
ইনপুট:
A^(-A)
আউটপুট:
(nothing)
ইনপুট:
A^B A<->(-B) A<->B
আউটপুট:
A^B A<->B
ইনপুট:
["AvB","A^B"]
আউটপুট:
["AvB","A^B"]
(AvB)->-Bহওয়া উচিত (AvB)->(-B))
A<->(Q^C))v((-B)vHহ'ল মশকযুক্ত।