本人是渣渣,因此常逛各大學習站點,如:博客園,知乎,csdn,w3cfunc,segmentfault!!segmentfault
今天在segmentfault,發現一個外國站點,CodeWars裏面有不少經典題目廣大coder提出解決方法相互取經,而後打怪升級(解決題目)。markdown
有以下題目:函數
創造一個函數,返回以下這麼個玩意,參數是聖誕樹的高度,爲0-100的整數,空白都須要space填充。性能
* *** ***** ******* *********
我給出的答案是:
for(var i=1; i<=9; i+=2){ var chr=""; var space="" for(var k=1;k<=i;k++){ chr+="*";} var number=(9-i)/2; for(var j=0;j<number;j++){ space+=" "} console.log(space+chr+space); }
而後是老外給出的答案,相比之下慘不忍睹,不過我是菜鳥有待進步仍是能接受的,哈哈學習
function christmasTree(height,shift) { var shift=shift||0, spaces=new Array(shift+1).join(' '); return height>0?(height>1?christmasTree(height-1,shift+1)+'\n':'')+spaces+new Array(2*height).join('*')+spaces:''; }
function christmasTree(height) { var tree = []; for (var i = 1; i <= height; i++) { var s = ""; for (var j = 0; j < height-i; j++) s += " "; for (var j = 0; j < i*2-1; j++) s += "*"; for (var j = 0; j < height-i; j++) s += " "; tree.push(s); } return tree.join("\n"); }
而後衆多coder會投票,選出代碼最優,性能最好的方案. this
當我看到這道題目的第一名時,完全凌亂了,出了一口惡氣啊. 哈哈spa
c= function (h){t=[];for (i=1;i<=h;++i, t.push(b))for(b= '',j=0;j<2*h-1;++j )b+=j>=h-i&&j<h+i-1? '*':' ';return t.join( '\n')};this['christmas'+ 'Tre'+ 'e']=c
CodeWars