有效和清楚地评估六个条件

cca*_*mpo 0 c# algorithm validation performance nested-loops

我有以下(简化)条件需要验证我正在编写的表单:

a> b

a> c

a> d

b> c

b> d

c> d

从图形上看,这可以看作:

在此输入图像描述

用户可以自由输入a,b,c和d的值,这就是为什么需要对它们进行验证以确保它们遵守这些规则的原因.我遇到的问题是写一些清楚有效地评估每个陈述的东西.当然,最明显的方法是将每个语句分别作为if语句进行评估.不幸的是,这会占用很多代码行,而且我宁愿避免使用一堆if-blocks来完成同样的事情.我确实使用数组提出了以下嵌套的for循环解决方案.我构建了一个值数组,并将其循环两次(在类似Python的伪代码中演示):

A = [a, b, c, d]
for i in range(3):
    for j in range(i, 4):
        if i > j and A[i] >= A[j]:
            print("A[i] must be less than A[j]")
        else if i < j and A[i] <= A[j]:
            print("A[j] must be greater than A[i]")
Run Code Online (Sandbox Code Playgroud)

我对这个解决方案的问题是难以阅读和理解 - 解决方案并不清楚.

我有这种唠叨的感觉,那里有一个更好,更清晰的答案,但我无法想到它对我的生活.这不是家庭作业或任何事情 - 我实际上正在研究一个项目,这个问题(或它的微妙变化)不止一次出现,所以我想制作一个清晰有效的可重用解决方案.任何输入将不胜感激.谢谢!

f p*_*f p 6

if a > b > c > d:
    do ok
else:
    for x in range(3):
        if A[i] <= A[i+1]:
             print A[i], ' not greater than', A[i+1]
Run Code Online (Sandbox Code Playgroud)