我有一段 JS 代码,用于确定是否存在垂直滚动条并将 CSS 类应用于元素。没什么大不了的。让我困惑的是它似乎在做与我理解的它应该做的相反的事情。这不是问题,除非它是一个错误并且将来会修复。
代码:
if (document.body.scrollHeight > document.body.clientHeight) {
var d = document.getElementById("footer").className = "footernoscroll";
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,如果有垂直滚动条,它将应用该类,但如果没有滚动条,它似乎正在应用该类。我是否正确解释了这一点,并且代码表现得很奇怪,或者我的解释是错误的?
编辑:我想我应该添加,如果我反转运算符,效果将反转,并且它将使用else
语句的一部分。
我一直在学习python,这是我对NP完全问题(例如子集产品)的爱好和经验研究。我有算法,但是并没有按照我打算的方式进行。
我想做的是combinations
一旦itertools 到达输入变量的子集,就停止它target
。这会稍微加快代码的速度。该代码处于抛光阶段,因此有不必要的列表res_2
这是循环。
res_2 = [];
for i in range(1, len(s)+1):
var = (findsubsets(s, i))
kk = list(map(numpy.prod, var))
res_2.append(kk)
if target in kk:
print('yes')
print(var)
break
Run Code Online (Sandbox Code Playgroud)
这是我不需要的输出。请注意,脚本不会在(4,4)处停止。一旦目标被“击中”,继续检查所有组合是浪费资源的。
Enter numbers WITH SPACES: 4 4 3 12
enter target integer:
16
yes
[(4, 4), (4, 3), (4, 12), (4, 3), (4, 12), (3, 12)]
? kk
[16, 12, 48, 12, 48, 36]
Run Code Online (Sandbox Code Playgroud)
我的预期输出是在第一个“命中”处停止在(4,4)。对于其他任何子集,例如(1,2,3)或(1,2,3 ---任意长度),也是如此。我希望脚本继续执行直到找到匹配为止。一旦找到命中,它将停止,因为这将提高算法的速度。
# Naive Subset-Product solver
# with python's itertools
import itertools …
Run Code Online (Sandbox Code Playgroud)