我是体育节目服务之一的新手,发现获奖解决方案通常使用按位运算符。
这是一个例子。
编写一个函数,找到两者之间的差异 数组(考虑它们因一个元素而不同)。
解决方案是:
let s = x => ~eval(x.join`+`);
let findDiff = (a, b) => s(b) - s(a);
和
let findDiff = (a, b) => eval(a.concat(b).join`^`);
我想知道:
更新:
我不完全理解为什么我的问题被标记为~~ vs parseInt
的副本。很高兴知道,为什么这个运算符替换parseInt
并且可能对运动编程有帮助。但它没有回答我的问题。
答案 0 :(得分:1)
Code golf并不专注于按位运算符,而是代码长度。
按位运算符不需要更快,但通常足够快。它们简洁(通常难以阅读,但副作用)。
~~
是parseInt
with a considerable number of remarks的较短(通常更具信息性)替代品。在常规(非高尔夫)代码中,只有当它提供比parseInt
或性能敏感的上下文更合适的行为时,才应该使用它。
~a
大致等于parseInt(a) * -1 - 1
。在此特定示例~~a
中,它可以用作s(b) - s(a)
的较短替代,因为* -1 - 1
部分在减法时被消除(应考虑符号)。