基本上,如果我有这样的功能:
function foo (int a, int b, int c) {
return true if two out of the three variables are true otherwise false
}
Run Code Online (Sandbox Code Playgroud)
有没有一种简单而简洁的方法来确定是否有n个数字在一组中是相等的?那只有三个项目呢?有没有我可以利用的数学运算?我知道我可以做一个迭代的方法来解决,我只是好奇是否有其他解决方法更清楚.
这是条件的细分,因为我很难表达问题:
if no numbers are equal, return false
if two numbers out of three are equal, return true
if all three numbers are equal, return false
Run Code Online (Sandbox Code Playgroud)
And*_*ark 12
一种方法是将参数添加到集合中,然后查看该集合的长度是否等于2(如果它们全部相等则返回true则小于3).例如,在Python中:
def foo(a, b, c):
return len(set((a, b, c))) == 2
Run Code Online (Sandbox Code Playgroud)
我不认为你会比手动方式更有效率或更简洁:
if a == b
return b != c
else
return b == c || a == c
Run Code Online (Sandbox Code Playgroud)
或者这个:
return ((a == b) || (a==c) || (b==c)) && ((a!=b) || (a!=c) || (b!=c))
Run Code Online (Sandbox Code Playgroud)
如果a,b和c只是布尔值(0或1),那么你可以这样做:
return a+b+c == 1 || a+b+c == 2 // Either two are false, or two are true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |