我正在寻找一种已知方法(如果有)将长条件表达式拆分为独立语句。以编程方式拆分条件表达式
例如,我有这样的长期表现:
*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。 –