هل من الممكن لتبسيط هذا التعبير العادي إلى أبعد من ذلك؟

StackOverflow https://stackoverflow.com/questions/1434993

  •  07-07-2019
  •  | 
  •  

سؤال

وأنا أعمل على بعض الواجبات المنزلية لبلدي فئة مترجم ولدي مشكلة التالية:

وكتابة التعبير العادي لجميع سلاسل من في الصورة و<م> ب الصورة التي تحتوي على عدد فردي من في الصورة أو عدد فردي من ب الصورة (أو كليهما).

وبعد الكثير من العمل السبورة جئت مع الحل التالي:

(aa|bb)* (ab|ba|a|b) ((aa|bb)* (ab|ba) (aa|bb)* (ab|ba) (aa|bb)*)*

ولكن، هل هو الأكثر مبسطة هذا يمكنني الحصول عليه؟ لقد فكرت في إنشاء وزارة الشؤون الخارجية في محاولة للحد من عدد من الدول هناك لمعرفة ما اذا كان من شأنها أن تساعد لي تبسيط لكنني أحسب أود أن أطلب معلمو رجإكس على SO أولا.

هل كانت مفيدة؟

المحلول

واتخاذ توصية جريج D'ق بدءا من (أأ) *، والذهاب من هناك. Sepp2k ديها ما يقرب من ذلك الحق، ولكن النظر الحقيقي هو أنك لا تبالي حرف آخر. ما أعنيه هو، عندما كنت تبحث في "عدد فردي من ل" القيد، كنت لا تهتم على الإطلاق حول ما ب في سلسلة الخاص بك. وهكذا، عصا ب * الصورة في أي مكان يمكنك:)

والجواب Sepp2k هي الصحيحة تقريبا، ولكن هذا هو واحد الصحيح:

b* a b* (a b* a b* )* | a* b a* (b a* b a* )*

لوضع، وشخصيات هذه التعابير المنطقية من كل السلاسل مع عدد فردي من ل(القسم الأول)، وأور تلك السلاسل مع أي سلاسل تحتوي على عدد فردي من لب.

نصائح أخرى

وهذا يجب أن تعمل:

b* a b* (a b* a b*)* |  a* b a* (b a* b a*)*

وأخشى أن لا أعتقد أن التعابير المنطقية الخاصة بك كما هو مكتوب هو الصحيح. النظر في سلسلة:

aba

لدينا بضعة خيارات للمباريات، ولكن الحقيقة أنه من الغريب طول يعني أننا يجب أن تتطابق مع وحيد في الجبهة، لذلك:

(a)(ba)

ولكن، للأسف، فإنه من المستحيل لتجميع بلدكم الثاني الرئيسي هناك لمباراة (BA).

عند التعامل مع القيد من هذا القبيل، لقد وجدت أنه من الأسهل أن نبدأ من القيد الأساسية والذهاب من هناك. في هذه الحالة، القيد الخاص بك هو "الغريب"، بحيث تبدأ مع

a(aa)*

وإجبار عدد فردي من a والذهاب من هناك. :)

وأعتقد أنك بحاجة إلى معالجة المشكلة بشكل مختلف.

وأنت تحاول تطابق أي شيء ليس لديها أرقام الزوجية من كلا a وb.

وربما يكون من الأسهل أن تبدأ مع شيء يطابق <م> حتى أعداد a وb. فإن كل ما عليك القيام به في تلك المرحلة يكون لإضافة شيء على الطرف الذي يطابق أصغر السلسلة التي تريد فعلا للمباراة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top