JavaScript (được cập nhật để hoạt động với tất cả các trường hợp thử nghiệm)
Sự thật ít được biết đến là thực tế có bốn 6
s, nhưng một trong những người khác đã phản bội và biến thành dạng mã để xóa chúng khỏi các chữ số thế giới của các con số. Đây là sáu kẻ phản bội:
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)));
Đây là một lời giải thích. Đầu tiên, làm đẹp mã và loại bỏ những thứ vô dụng như ''+'string'
và ((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)
);
Chuyển đổi các ký hiệu lạ (như ~indexOf
và ['replace']
) thành các ký hiệu phổ biến hơn:
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)
);
Và bây giờ hiểu đơn giản là thuật toán đi như thế này:
Phiên bản cũ (không hoạt động 666666666
) :
s='Enter number';x
=prompt( ''+
s);x=+x+
(-~![]);
x=(''+x).replace('666',
666+([][ +[]]+[])
[+[]]['l ength'[
'repla'+ 'ce'](
/ /g,'')]);alert(x)
Để hiểu điều này, trước tiên hãy làm đẹp nó:
s = 'Enter number';
x = prompt('' + s);
x = +x + (-~![]);
x = ('' + x).replace('666',666+([][+[]]+[])[+[]]['l ength'['repla'+'ce'](/ /g,'')]);
alert(x);
Bây giờ, hãy loại bỏ những thứ vô dụng như '' + string
và 'str' + 'ing'
, loại bỏ s
biến không cần thiết và thay đổi sự kỳ lạ như -~![]
thành 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,'')
chỉ đơn giản là "length"
:
x = prompt('Enter number');
x = +x + 1;
x = ('' + x).replace('666', 666+"undefined"[0].length);
alert(x);
Và "undefined"[0]
là "u"
, và "u".length
là 1
:
x = prompt('Enter number');
x = +x + 1;
x = ('' + x).replace('666', 666 + 1);
alert(x);
Bây giờ chúng ta đã hoàn thành! Nó nên khá dễ hiểu bây giờ.