|
|
1
17
这比LINQ解决方案快约50-250倍(取决于发现副本的时间):
|
|
|
2
10
幸运的是,不久前我自己制作了一个数独解算器:)整个过程大约有200行C#,它可以在4秒钟或更短的时间内解出我能找到的最难的谜题。 由于使用了.Count,性能可能不是很好,但它应该可以工作:
[编辑:]kvb的回答给了我另一个想法:
筛选0 之前 分组。尽管基于IEnumerable的工作原理,这可能并不重要。
|
|
|
3
3
|
|
|
4
2
为什么您想要一行复杂的Linq代码,而不是将测试的有效实现封装在扩展方法中并调用它?
非onzero重复的一个实现可以是使用short的9个最低位来指示数组中是否存在值,从而在不使用动态内存的情况下进行O(长度(a))测试。Linq很可爱,但除非你只是出于审美的原因使用它(你并没有特别说你是在用Linq作为练习来编写数独解算器),否则它似乎只是增加了这里的复杂性。 |
|
|
5
2
这是一个老问题,但最近有人向我提出了一个使用Oracle自定义SQL进行树状结构的单行解决方案。我想把它转换成Linq会很好。 你可以在我的博客上读到更多关于如何 Solve Sudoku in 1 line of Linq
|
|
|
6
2
为了简洁起见,如果不是性能,那么 var itIsOk=a.Sum()==a.Distinct().Sum(); |
|
|
7
1
推理:首先创建一个不带0的枚举。在剩余的数字中,如果其不同列表的长度与实际列表的长度相同,则不存在重复。 或: 如果唯一编号列表小于实际列表,则必须有一个重复编号。 这是单行程序版本。a.Where(x=>x>0)列表可以分解出来。
|
|
|
8
1
我通常不赞成包含捕获变量的解决方案,但我有一种强烈的欲望写下以下内容:
|
|
|
9
0
下面是简单而快速的。
|