fun findError(puzzle: Array<IntArray>): Boolean {
for (z in 0..8) {
val blockNums = mutableListOf<Int>()
val xNums = mutableListOf<Int>()
val yNums = mutableListOf<Int>()
for (index in 0..8) {
xNums.add(puzzle[z][index])
yNums.add(puzzle[index][z])
blockNums.add(puzzle[blocks.xy[z + 1][index]][blocks.xy[z][index]])
if (blockNums.count() != blockNums.toSet().count() ||
yNums.count() != yNums.toSet().count() ||
xNums.count() != xNums.toSet().count()) return false
}
}
return true
}
这个函数可以正常工作,但是Intellij IDE发出了这个警告。“布尔方法'findError'总是反转的”。我有点理解它的意思,我知道我可以抑制它。
我不知道如何重写代码块来满足错误而不改变功能。我应该抑制它还是有更合适的方式来表达这一点?我是一个初学者,正在学习。
1条答案
按热度按时间ma8fv8wu1#
IntelliJ警告你哪一行,是这句话吗?
如果是这样,那是因为这个问题很复杂,而且除了你之外,其他人可能很难理解。下面是你如何降低复杂性的两个想法:(一)
或(2)
(由于程序必须计算所有3个求值,因此(2)有一个小的性能损失。我还将
count()
更改为size
,它们是等效的)