[7kyu]Counting in the Amazon

该算法题来自于 codewars【语言: javascript】,翻译如有误差,敬请谅解~

[7kyu]Counting in the Amazon_第1张图片

  • 场景
    • 阿拉拉是亚马逊中一个孤立的部落,成对计数。
  • 例如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(' ');
}

你可能感兴趣的:([7kyu]Counting in the Amazon)