[5 kyu]Simple digit code breaker
我偷了一个会措辞的行李箱⌚️2016.03.15
怪兽的属性:
&
怪兽的妙技:
大木博士的图鉴:
你本日照常在火车站偷东西,此次的收成是一个行李箱。正盘算依具《偷术大全》内里的发起,强行把她拆开。但却在拍清洁手掌,蹲下身子,预备把她举到头上的时刻,你倏忽听到有人在措辞。
“喂”
环顾四周却又没有看到什么人。
“把我放下来!”
声响又响起来,你觉得声响是从上方传来的,不禁仰面看了看手上的行李箱。
你赶忙把箱子放了下了,这个过程当中,箱子里另有隐隐有“哎飒哟飒”的嘟囔。“内里岂非有人?”你内心倏忽冒出如许一个新鲜而恐怖的猜想,那末为何有个人呢?
…详细情节请看《箱之少女》…
末了,你相识到,这个箱子的暗码会在每十次尝试以后再自动随机天生一个新暗码。
一开始他回返回个‘空(null)’给你,你得处置惩罚这个‘空(null)’,再返回给他一个由0~9三个正整数构成的数组。
这个数组将会和暗码婚配后再返回一个数组(我们唤其为 差异数组)。差异数组示意输入数与暗码数之间的差异:
输入数 < 暗码数 --> +1
输入数 > 暗码数 --> -1
输入数 = 暗码数 --> 0
10次尝试不成功以后,旧暗码失效,新暗码将从新天生。
快快想出要领来,挽救箱中的少女,然后做些♨️羞羞的事变吧!
战役记录仪回放:
var guess = [5, 5, 5];①
function tryCode(indications) {
if (indications != null) {
for (var i = 0; i <= 2; i++) {
guess[i] += indications[i];
}
}
return guess;②
}
?竹节:
这个应该可以放入 tryCode 要领中去,零丁安排在表面,稍微不合适。
完成单一出口。
✨两处都可以简化,由于 差异数组 的值,就是 猜想数组 要举行的调解。
var guess = [5, 5, 5];
function tryCode(indications) {
if (indications != null) {
for (var i = 0; i <= 2; i++) {
if (indications[i] == 1)✨
++guess[i];
if (indications[i] == -1)✨
--guess[i];
}
}
return guess;
}
失误,‘=’ 和 ‘==’ 。
var guess = [5, 5, 5];
function tryCode(indications) {
if (indications != null) {
for (var i = 0; i <= 2; i++) {
if (indications[i] = 1)✨
++guess[i];
if (indications[i] = -1)✨
--guess[i];
}
}
return guess;
}
一开始只把 差异数组 算作表达 大小关联。因而想着用 二分法 来举行调解,末了发明比较庞杂,须要斟酌的太多。
国际疆场的典范录相
zarjay
var tryCode = (function() {
var guess = [5, 5, 5];
②return function(indication) {
guess = indication ?③ guess.map④(function(d, i) { return d + indication[i]; }):guess;
return guess;
}
})();①
?竹节:
(function(){})();
?建立并马上实行函数 js中(function(){…})()
运用
(function(){}())
也可完成雷同的效果 知乎-(function(){}())和(fucntion(){})()
function(){return funciton(){}}
??
&:
?是 JavaScript 唯一的运用三个操作数的运算符。本运算符常常作为 if 语句的简短情势来运用。
假如前提值为真值(true),运算符就会返回 expr1 的值;不然, 就会返回 expr2 的值。
map()
?
adolfo7x, chunghanliou
var digits = [5, 5, 5];
function tryCode(indications) {
if (!①indications){
digits = [5, 5, 5];
return digits;
}
return digits = digits.map(function(value, index){
return value + indications[index];
});
}
竹节:
!
?!
:逻辑非!(expr)
假如单个表达式能转换为
true
的话返回false
,不然返回true
.可以转换为
false
的表达式有:null
,0
,""
和undefined
.
∴ 原表达式 =
if(indications == false)
map()
?JQ的一个遍历要领。
假如挪用该要领的数据是数组A则 从数组A吃一个数,举行加工并把加工的效果吐出到一个新数组B中去,待吐完末了一个数后把数组B返归去。
MaximeDesRoches
function tryCode(indications) {
if(indications == null) {
tryCode.test = [5,5,5];①
return tryCode.test;
}
return tryCode.test = tryCode.test.map(function(c, i){
if (indications[i] === 0) return c;
return (indications[i] === 1) ? ++c : --c;
});
}
竹节:
为何tryCode.test在运转完毕以后没有被接纳呢?
觉得和闭包有关联。