首页 > 网站 > WEB开发 > 正文

codewar 上做练习的一些感触

2024-04-27 14:10:32
字体:
来源:转载
供稿:网友

codewar 上做练习的一些感触

废话

在[codewar][1]上做练习,每次都是尽量快速地做完,然后赶着去看排名里面clever分最高的solution,看完每次都要感叹一下人家怎么可以写得这么简洁,甚至有一次我用了一段大约七八行的代码,别人只用了一行就搞定了。下午做了几个练习,依然是这样的感受,拎出来一个记下来鞭策一下自己。

问题

原题长这样:Vampire NumbersOur loose definition of Vampire Numbers can be described as follows:

6 * 21 = 126# 6 and 21 would be valid 'fangs' for a vampire number as the # digits 6, 1, and 2 are PResent in both the product and multiplicands10 * 11 = 110# 110 is not a vampire number since there are three 1's in the# multiplicands, but only two 1's in the product

解决

这是我写的代码:

var vampire_test = function(a, b){    var mul=(a*b).toString().split('').sort();    var pro=(a.toString()+b.toString()).split('').sort();    if(mul.length!==pro.length){        return false;    }else{        for(var i=0;i<mul.length;i++){            if(mul[i]!=pro[i])            {                return false;            }        }        return true;    }}

可以看出真的很大一段,虽然实现了功能......

然后,这是clever最高分的solution:

function vampire_test(a, b){    return sortStr(a + '' + b) == sortStr(a * b + '');}function sortStr(v){ return v.split('').sort().join('') }

总结

我对比了一下,发现我的答案里,第一步和别人是类似的:将字符串转成数组然后排序,获得两个排过序的数组mul和pro。但是接着我最琐碎的一步在于进行mul和pro间的比较,因为引用类型的比较不能直接用“==”进行,所以我只好挨个遍历值去比较。但是别人的solution里,又将排过序的数组join成字符串了,直接用“==”比较,简单多了。然后我回想了一下,发现自己经常想不起来用join这个函数,总是笨拙地在循环里用str+=“aaa”。比如说另外一个练习:Description:

Here we have a function that help us spam our hearty laughter. But is not working! I need you to find out why...

Expected results:

spam(1);//huespam(6);//huehuehuehuehuehuespam(14);//huehuehuehuehuehuehuehuehuehuehuehuehuehue

这是我的做法:

function spam(number){    var str="";    for(var i=1;i<=number;i++){        str+="hue";    }    return str;}

然后别人用join函数只用了一行代码就解决了:

function spam(number){    return Array(++number).join("hue");}

说明

join函数:

定义和用法join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。

语法arrayObject.join(separator)separator可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 [1]: http://www.codewars.com/


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表