JavaScript(已更新为可用于所有测试用例)
鲜为人知的事实是实际上有四个6
s,但是其中一个被出卖,另一个被多态化为代码形式以从数字的世界数字中消除它们。这就是叛徒六:
x=prompt(''+
'Enter number');
alert( ( (~x[
'ind'+
'exOf']('666')))?(x
.replace(/666(.*)$/,
function (mat,g){
return '667'+g
['re'+ 'place'
](/./g,0)})):((+x+
1+'').replace(
666,667)));
这是一个解释。首先,美化代码并删除诸如''+'string'
和这样的无用的东西((code))
:
x = prompt('Enter number');
alert(
~x['indexOf']('666')
?
x.replace(/666(.*)$/, function(mat,g) {
return '667' + g['replace'](/./g,0)
})
:
(+x+1+'').replace(666, 667)
);
将怪异的符号(如~indexOf
和['replace']
)转换为更常见的符号:
x = prompt('Enter number');
alert(
x.indexOf('666') > -1
?
x.replace(/666(.*)$/, function(mat, g) {
return '667' + g.replace(/./g, 0)
})
:
((parseInt(x) + 1) + '').replace(666, 667)
);
现在,只需了解该算法是这样的:
如果输入中已经有666,
其他,
- 在数字上加一个。
- 注意:现在我们保证在字符串的末尾没有666,没有666,或者在其他地方已经有零的666到末尾(做“手动”加法时考虑“携带”)。
- 如果有666,请换成667。
旧版本(不适用于666666666
):
s='Enter number';x
=prompt( ''+
s);x=+x+
(-~![]);
x=(''+x).replace('666',
666+([][ +[]]+[])
[+[]]['l ength'[
'repla'+ 'ce'](
/ /g,'')]);alert(x)
要了解这一点,让我们首先对其进行美化:
s = 'Enter number';
x = prompt('' + s);
x = +x + (-~![]);
x = ('' + x).replace('666',666+([][+[]]+[])[+[]]['l ength'['repla'+'ce'](/ /g,'')]);
alert(x);
现在,让我们删除诸如'' + string
and之类的无用的东西'str' + 'ing'
,删除不必要的s
变量,并将怪异性更改-~![]
为1
:
x = prompt('Enter number');
x = +x + 1;
x = ('' + x).replace('666', 666+"undefined"[0]['l ength'['replace'](/ /g,'')]);
alert(x);
'l ength'['replace'](/ /g,'')
很简单"length"
:
x = prompt('Enter number');
x = +x + 1;
x = ('' + x).replace('666', 666+"undefined"[0].length);
alert(x);
和"undefined"[0]
是"u"
,并且"u".length
是1
:
x = prompt('Enter number');
x = +x + 1;
x = ('' + x).replace('666', 666 + 1);
alert(x);
现在我们完成了!现在应该很容易理解了。