|
1
120
我本来打算写Linq版本的,但是有五个人左右抢先完成了。但我非常喜欢params方法,它可以避免手动创建数组。因此,我认为最好的混合动力车是,根据rp的答案,车身替换为明显的灵巧:
清晰美观,易于阅读和使用:
|
|
|
2
94
或者一个广义的方法是。。。
或者按照其他答案的建议使用LINQ:
(在.Net 2.x及更高版本中)
或在.Net 3.5及更高版本中:
或者作为
然后,使用情况将是:
|
|
|
3
22
|
|
|
4
16
我会把它们转换成整数和和。
|
|
5
7
如果你的意思是大于或等于一个布尔值等于真,你可以这样做
如果您需要多个(2个及以上)等于true的布尔值,可以尝试
|
|
6
6
我会写一个函数来接收任意数量的布尔值。它将返回那些为真的值的数目。检查结果,确定要执行某项操作所需的正值数量。
|
|
|
7
6
如果你的旗帜被包装成一个单词,那么 Michael Burr's solution 会有用的。但是,循环不是必需的:
实例
|
|
8
5
如果有数百万而不是只有5个,你可以避免Count(),而是这样做。。。
|
|
|
9
4
比Vilx-s版本更短更丑陋:
|
|
|
10
2
从我的头顶上,快速的接近这个具体的例子;可以将布尔值转换为整数(0或1)。然后通过therm循环并将它们相加。如果结果>=2然后你可以执行你的功能。 |
|
|
11
2
一般来说,进行计数是可以的,但当您的计数项目需要一段时间来计算/检索时,可能会成为一个问题。 如果您只想检查Any,那么Any()扩展方法是很好的,但是如果您想检查Any,那么至少没有内置函数可以执行该操作,而且是懒惰的。 最后,我编写了一个函数,如果列表中至少有一定数量的项,则返回true。
这样做的好处是在返回结果之前不需要评估所有项目。 [插头]我的项目, NExtension |
|
|
12
1
转换为整数和求和应该可以,但这有点难看,在某些语言中可能不可能。
或者,如果您不关心空间,您可以预先计算真值表并使用布尔值作为索引:
|
|
|
13
1
|
|
|
14
1
|
|
15
1
|
|
|
16
1
|
|
|
17
1
我想给出一个C++11可变模板的答案。
简单地按如下方式调用它,就创建了一种计算布尔数的相当优雅的方法。
|
|
|
18
0
|
|
|
19
0
如果您只有五个不同的值,那么您可以通过将位打包成一个short或int并检查它是否是零位或一位答案中的任何一个来轻松地进行测试。你能得到的唯一无效数字是。。 0x 0000 0000 0x 0000 0001 0x 0000 0010 0x 0000 0100 0x 0000 1000 0x 0001 0000 这将为您提供六个要搜索的值,将它们放在查找表中,如果不在其中,您就有了答案。
public static boolean moreThan1BitSet(int b)
{
final short multiBitLookup[] = {
1, 1, 1, 0, 1, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
if(multiBitLookup[b] == 1)
return false;
return true;
}
|
|
|
20
0
如果((b1.比较到(假)+b2.比较到(假)+b3.比较到(假)+……)>1)
... 其他的 ... |
|
|
21
0
我认为该表达式不会给出您想要的结果(至少使用C语义,因为该表达式不是有效的C#):
如果你是说“
Bit Twiddling Hacks - Counting bits 你可能会考虑使用Kernighan的计数方法,但是只要你只需要知道有一个以上的比特集合,就可以提前跳出:
当然,使用查找表也是一个不错的选择。 |
|
|
22
-1
我最近也遇到了同样的问题,我有三个布尔值,我需要检查一次只有一个是真的。为此,我使用了xor运算符,如下所示:
供参考: http://www.dotnetperls.com/xor
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |