该算法题来自于 codewars【语言: javascript】,翻译如有误差,敬请谅解~
![](https://img.haomeiwen.com/i2407088/dedfb03726f283a6.png)
- 场景
- 阿拉拉是亚马逊中一个孤立的部落,成对计数。
- 例如1到8如下计数:
1 = anane
2 = adak
3 = adak anane
4 = adak adak
5 = adak adak anane
6 = adak adak adak
7 = adak adak adak anane
8 = adak adak adak adak - 任务
- 传入一个的数值,返回以该部落计数方式的数值。
- 例如:
countArara(3) 'adak anane
countArara(8) 'adak adak adak adak'
- 解答
- 其一
const countArara = n => {
let str = new Array(Math.trunc(n/2)).fill('adak').join(' ');
return (n/2 + '').indexOf('.') > 0 ? (!str ? 'anane' : str + ' anane') : str
}
- 其二
function countArara(n) {
switch (n) {
case 0: return '';
case 2: return 'adak';
default: return 'adak ' + countArara(n-2);
}
}
- 其三
function countArara(n) {
var count = [];
for (var i = 2; i <= n; i+=2) {
count.push("adak");
}
if (n % 2 != 0) count.push("anane");
return count.join(" ");
}
- 其四
var one = "anane";
var two = "adak";
function countArara(n) {
if(n==1) return one;
if(n==2) return two;
else return two + " " + countArara(n-2);
}
- 其五
function countArara(n) {
return new Array(Math.ceil(n/2)).join('adak ') + (n%2 ? 'anane' : 'adak');
}
- 其六
const countArara = n => (Array(parseInt(n/2) + 1).join("adak ") + (n % 2 ? "anane" : "")).trim();
- 其七
const countArara = (n) => n > 2 ? "adak " + countArara(n - 2) : n == 2 ? "adak" : "anane"
- 其八
function countArara(n) {
let out = Array(...Array(Math.floor(n / 2))).map(_ => 'adak');
if(n & 1) out.push('anane');
return out.join(' ');
}
网友评论