[到codewars打怪兽]我偷了一个会措辞的行李箱

[5 kyu]Simple digit code breaker

我偷了一个会措辞的行李箱⌚️2016.03.15

怪兽的属性:

《[到codewars打怪兽]我偷了一个会措辞的行李箱》
《[到codewars打怪兽]我偷了一个会措辞的行李箱》
&
《[到codewars打怪兽]我偷了一个会措辞的行李箱》

怪兽的妙技:

《[到codewars打怪兽]我偷了一个会措辞的行李箱》

大木博士的图鉴:

你本日照常在火车站偷东西,此次的收成是一个行李箱。正盘算依具《偷术大全》内里的发起,强行把她拆开。但却在拍清洁手掌,蹲下身子,预备把她举到头上的时刻,你倏忽听到有人在措辞。

“喂”

环顾四周却又没有看到什么人。

“把我放下来!”

声响又响起来,你觉得声响是从上方传来的,不禁仰面看了看手上的行李箱。

你赶忙把箱子放了下了,这个过程当中,箱子里另有隐隐有“哎飒哟飒”的嘟囔。“内里岂非有人?”你内心倏忽冒出如许一个新鲜而恐怖的猜想,那末为何有个人呢?

…详细情节请看《箱之少女》…

末了,你相识到,这个箱子的暗码会在每十次尝试以后再自动随机天生一个新暗码。

  1. 一开始他回返回个‘空(null)’给你,你得处置惩罚这个‘空(null)’,再返回给他一个由0~9三个正整数构成的数组。

  2. 这个数组将会和暗码婚配后再返回一个数组(我们唤其为 差异数组)。差异数组示意输入数与暗码数之间的差异:

    • 输入数 < 暗码数 --> +1

    • 输入数 > 暗码数 --> -1

    • 输入数 = 暗码数 --> 0

  3. 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;②
}

?竹节:

  1. 这个应该可以放入 tryCode 要领中去,零丁安排在表面,稍微不合适。

  2. 完成单一出口。

  3. ✨两处都可以简化,由于 差异数组 的值,就是 猜想数组 要举行的调解。

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;
}
  1. 失误,‘=’ 和 ‘==’ 。

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;
}
  1. 一开始只把 差异数组 算作表达 大小关联。因而想着用 二分法 来举行调解,末了发明比较庞杂,须要斟酌的太多。

国际疆场的典范录相

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;
  }
})();①

?竹节:

  1. (function(){})(); ?

  2. function(){return funciton(){}}?

  3. ? & :?

    • 前提(三元目])运算符—-[(condition)? expr1 : expr2

    • 是 JavaScript 唯一的运用三个操作数的运算符。本运算符常常作为 if 语句的简短情势来运用。

    • 假如前提值为真值(true),运算符就会返回 expr1 的值;不然, 就会返回 expr2 的值。

  4. 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];
  });
}

竹节:

  1. !?

    • !:逻辑非

      • !(expr)

        • 假如单个表达式能转换true 的话返回 false ,不然返回 true .

        • 可以转换为false的表达式有: null , 0 , ""undefined .

    • ∴ 原表达式 = if(indications == false)

  2. map()?

    • JQ的一个遍历要领。

    • 《串串香》中的 map 的笔记

    • 假如挪用该要领的数据是数组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;
  });
}

竹节:

  1. 为何tryCode.test在运转完毕以后没有被接纳呢?

    原文作者:RDDcoding
    原文地址: https://segmentfault.com/a/1190000004891628
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞