[fcc解法-day5]三道题

今天的第一题。。。很迷,题目很长,结果很简单 

Drop it


队友该卖就卖,千万别舍不得。

当你的队伍被敌人包围时,你选择拯救谁、抛弃谁非常重要,如果选择错误就会造成团灭。

如果是AD或AP,优先拯救。

因为AD和AP是队伍输出的核心。

其次应该拯救打野。

因为打野死了对面就可以无所顾虑地打龙。

最后才是辅助或上单。

因为辅助和上单都是肉,死了也不会对团队造成毁灭性影响,该卖就卖。

但真实中的团战远比这要复杂,你的队伍很可能会被敌人分割成2个或3个部分。

当你救了一个重要的人时,很可能其他队友也会因此获救。

举个例子:

辅助和AD经常是在一起的,打野和中单在一起,上单经常一个人。

你救了AD,辅助也经常因此获救。

让我们来丢弃数组(arr)的元素,从左边开始,直到回调函数return true就停止。

第二个参数,func,是一个函数。用来测试数组的第一个元素,如果返回fasle,就从数组中抛出该元素(注意:此时数组已被改变),继续测试数组的第一个元素,如果返回fasle,继续抛出,直到返回true。

最后返回数组的剩余部分,如果没有剩余,就返回一个空数组。

如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程。编写你自己的代码。

这是一些对你有帮助的资源:

解答:

function drop(arr, func) {
  // Drop them elements.
  while(!func(arr[0])){
    arr.shift();
  }
  return arr;
}

drop([0, 1, 0, 1], function(n) {return n === 1; });

第二题,还是蛮有意思的,不过依旧是非常简单。。。 

 

Steamroller


对嵌套的数组进行扁平化处理。你必须考虑到不同层级的嵌套。

如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。

这是一些对你有帮助的资源:

解答: 

function steamroller(arr) {
  // I'm a steamroller, baby
  
  return call(arr);
}
function call(arr) {
  var newArr = [];
  for(var j = 0; j < arr.length; j++) {
    if(Array.isArray(arr[j])) {
      newArr = newArr.concat(call(arr[j]));
    }
    else {
      newArr = newArr.concat(arr[j]);
    }
  }
  return newArr;
}

steamroller([1, [2], [3, [[4]]]]);

第三道题:

Binary Agents


传入二进制字符串,翻译成英语句子并返回。

二进制字符串是以空格分隔的。

如果你被卡住了,记得开大招 Read-Search-Ask。尝试与他人结伴编程、编写你自己的代码。

这是一些对你有帮助的资源:

解答:

function binaryAgent(str) {
  var arr = str.split(" ");
  var newStr = "";
  for(var i = 0; i < arr.length; i++) {
    num = 0;
    x = arr[i];
    for(var j = 0; j < 8; j++) {
      k = 8-j-1;
      num += Math.pow(2,k)*(x[j]-'0');
    }
    newStr+=String.fromCharCode(num);
  }
  return newStr;
}

binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000 01100010 01101111 01101110 01100110 01101001 01110010 01100101 01110011 00100000 01100110 01110101 01101110 00100001 00111111");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值