5级,我向你跨过了第二坎
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

比编程更难的是生活。

若一位母亲有两个儿子,且都已各自成家,现遇到困难,母亲筹得100元救命钱,大儿子需要50元,二儿子需要80元,请问母亲该如何分配:

  1. 大儿子50元,二儿子50元
  2. 大儿子40元,二儿子60元
  3. 大儿子20元,二儿子80元

最后一种是最不公平的,因为大儿子不仅分的钱少,而且还需要自己去筹得30元,二儿子拿钱多本来就不对,还不用自己去辛苦了。

问题就出现在前两种上,到底哪种才是最公平的分配方式呢?

第一种是平均分配,但会造成大儿子不需要辛苦,二儿子自己筹备30元的现象,二儿媳肯定会抱怨。

第二种吧,按需分配,大儿子拿的少自己也少筹备点,二儿子拿的多自己也多筹备点,大儿媳不知道会不会因为得到的钱少而抱怨呢。

好吧,婆婆真不好当。

Description:

Write a function that accepts a starting and ending IPv4 address, and returns the number of IP addresses from start to end, excluding the end IP address. All input to the ipsBetween function will be valid IPv4 addresses in the form of strings. The ending address will be at least one address higher than the starting address.

Examples:

ipsBetween("10.0.0.0", "10.0.0.50") => returns 50
ipsBetween("10.0.0.0", "10.0.1.0") => returns 256
ipsBetween("20.0.0.10", "20.0.1.0") => returns 246

菜鸟出招

function ipsBetween(start, end){
  //TODO
  var s = start.split('.');
  var e = end.split('.');
  return (((e[0] - s[0])*256 + (e[1] - s[1]))*256 + (e[2] - s[2]))*256 - (- e[3]) - s[3];
}

偷师学艺

function ipsBetween(start, end){
  function parse(addr) {return addr.split(".").reduce(function(sum,byte) {return sum*256+1*byte;},0);}
  return parse(end)-parse(start);
}

关键字积累

  • reduce

菜鸟反思

好吧,现在摆在猿们的选择也出现了两个:

如果一道题不用思考就有解决方案,我们还需不需要费劲脑细胞去思考只能优化那么一点点的方法呢?

评论
发表评论
暂无评论
WRITTEN BY
BoltDoggy
A doggy named Bolt.
TA的新浪微博
PUBLISHED IN
My Code Wars 我的代码战争【休息一下】

这里讲述的是一个8级(kyu)菜鸟立志成为8段(dan)大神的故事。

他在代码战争中一次次遭遇挫败,而又在乱炖中获得高人指点。

遥想当年自高自大,而今终知天外有天。

坚持要走出一条自己的路,这是一条不归路。


Bolt 在写underscore.js源码分析专栏的时候发现了一个问题,就是看别人写的代码的时候自认为看懂了,但实际上有理解错误自己也不知道。

另外就是看了再牛逼的代码,自己写的时候,还是那些小套套。

于是 Bolt 开了一个新专栏:My Code Wars 我的代码战争。在同一需求下,菜鸟写的代码与大神有什么区别,是思维方式不同,还是什么原因导致的?

欢迎大家来新专栏提供意见和建议。

我的收藏