如何以21个字符解决“重获成功”的全部任务


13

有一个名为“ Return True to Win”的网站,其中有一些有趣的任务供Javascript程序员使用。目的是找到给定函数的参数,迫使其返回true。

以下是任务之一:

function total(x) {
  return (x < x) && (x == x) && (x > x);
}

用户必须找到代码片段的值,x以使函数返回true。要测试代码段,请使用代码段作为参数(即total(<snippet>))来调用函数。

我找到了一个22个字符的解决方案:

{valueOf:_=>n++%3},n=0

有人找到21个字符的解决方案。我找不到这种解决方案。21个字符的解决方案是什么?


3
您应该链接任务来自的竞赛/页面。
Emigna


2
{valueOf:Math.random}有时会起作用……但是我怀疑这会违反某些规则……(或者可能不会吗?)
Arnauld

1
这些绝对是棘手的。在前24个中,我只能回答14 ...
Neil

4
Salty开发人员注意...函数返回布尔值(称为“ total”)就像黑板上的钉子一样!
scunliffe

Answers:


7

21个字符

{valueOf:n=_=>n=2<<n}

我最初的笑话被否决并建议删除:

11个字符:)

total=_=>!0

测试:

function total(x) {
  return (x < x) && (x == x) && (x > x);
}
var arg = total=_=>!0
console.log(total(arg))

3
好的思维开箱即用,但是挑战是完成通话function total(x) { ... } total(<insert here>)的结果,所以我认为这不会起作用...total()true
ETHproductions'Jan

@ETHproductions <insert here>- > 0),(true:)
NGN

试过了,也0)||(true。但这两个都不起作用,现在我完全感到困惑,因为在另一个层面上您必须做0);(!0或做类似的事情……
ETHproductions '18

您的最新解决方案很棒,我向+1!
ETHproductions

4

骗人的答案

我已经在评论中提到了它,但是尚未经过测试。就是现在。您必须继续提交它,直到它起作用。

{valueOf:Math.random}

演示版

function total(x) {
  return (x < x) && (x == x) && (x > x);
}

for(i = 1; !total({valueOf:Math.random}); i++);

console.log('Returned true after ' + i + ' iteration(s)')


您能否解释一下这是如何工作的?我只是不明白,x == x如果每次都随机选择x,则变为真。
tsh

1
@tsh诀窍是valueOf在处理相等性测试时不会调用该技巧。另一方面,比较运算符期望原始值valueOf被强制调用。这是测试显示。
Arnauld

我在<s> 15 </ s> 16次迭代中得分很高!!!
魔术章鱼缸

@MagicOctopusUrn来吧,你可以做得更好!插入硬币再玩一次!
Arnauld
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.