我正在尋找一種已知方法(如果有)將長條件表達式拆分爲獨立語句。以編程方式拆分條件表達式
例如,我有這樣的長期表現:
*IF (
(*VALUE K01_PROCESS_COUNTS.Process_Name *EQ 'python'
*OR *VALUE K02_PROCESS_COUNTS.Process_Name *EQ 'java')
*AND
(*VALUE K01_PROCESS_COUNTS.Process_Count *LT 1
*OR *VALUE K02_PROCESS_COUNTS.Process_Count *LT 2)
)
我想所有這說法可能的組合是真實的。手動我可以遍歷第一時間得到這個:
*IF (
(*VALUE K01_PROCESS_COUNTS.Process_Name *EQ 'python')
*AND (*VALUE K01_PROCESS_COUNTS.Process_Count *LT 1
*OR *VALUE K02_PROCESS_COUNTS.Process_Count *LT 2))
*IF (
(*VALUE K02_PROCESS_COUNTS.Process_Name *EQ 'java')
*AND (*VALUE K01_PROCESS_COUNTS.Process_Count *LT 1
*OR *VALUE K02_PROCESS_COUNTS.Process_Count *LT 2))
,第二次我將有全套組合:
*IF ((*VALUE K01_PROCESS_COUNTS.Process_Name *EQ 'python')
*AND (*VALUE K01_PROCESS_COUNTS.Process_Count *LT 1))
*IF ((*VALUE K01_PROCESS_COUNTS.Process_Name *EQ 'python')
*AND (*VALUE K02_PROCESS_COUNTS.Process_Count *LT 2))
*IF ((*VALUE K02_PROCESS_COUNTS.Process_Name *EQ 'java')
*AND (*VALUE K01_PROCESS_COUNTS.Process_Count *LT 1))
*IF ((*VALUE K02_PROCESS_COUNTS.Process_Name *EQ 'java')
*AND (*VALUE K02_PROCESS_COUNTS.Process_Count *LT 2))
我想就從頭開始這樣做,但我想知道,有沒有任何算法可用於這種類型的操作?我一直在尋找一段時間,但我無法找到它。我在Java中工作,但任何其他語言也可以工作。
謝謝!
我不知道你是否正在尋找設計模式而不是算法。也許屬於戰略模式類別的狀態機設計模式可能會有所幫助。 https://en.wikipedia.org/wiki/State_pattern 另外,當你使用Java時,如果你更喜歡if else結構,你可以嘗試嵌套的switch語句。 http://www.java-examples.com/nested-switch-statements-example –
是的:任何布爾表達式可以表示爲產品(AND)的總和(OR)。基本上,需要將A和(B或C)形式的每個子表達式重寫爲(A和B)或(A和C)。 –
即,要將公式轉換爲https://en.wikipedia.org/wiki/Disjunctive_normal_form。 –