JavaScript (อัปเดตเพื่อทำงานกับกรณีทดสอบทั้งหมด)
ความจริงที่รู้จักกันน้อยคือมีสี่ตัวจริง6
แต่หนึ่งในนั้นถูกทรยศคนอื่น ๆ และ polymorphed เป็นรูปแบบรหัสเพื่อกำจัดพวกเขาจากตัวเลขโลกของตัวเลข นี่คือคนทรยศหก:
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 อยู่แล้ว
- แทนที่ด้วย 667
- แทนที่ทุกหลักหลังจากนั้นด้วย 0
อื่น,
- เพิ่มหนึ่งหมายเลข
- หมายเหตุ: ตอนนี้เรารับประกันว่าจะไม่มีเลข 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
และ'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);
ตอนนี้เราเสร็จแล้ว! ตอนนี้ควรเข้าใจได้ง่าย