該算法題來自于 codewars【語言: javascript】,翻譯如有誤差,敬請諒解~

- 場景
- 阿拉拉是亞馬遜中一個孤立的部落,成對計數(shù)。
- 例如1到8如下計數(shù):
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 - 任務
- 傳入一個的數(shù)值,返回以該部落計數(shù)方式的數(shù)值。
- 例如:
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(' ');
}