[7kyu]Fizz Buzz

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

[7kyu]Fizz Buzz_第1张图片

  • 任务
    • 返回一个包含从1到N的数组,其中N是参数值。 N不会小于1。
  • 但是,如果满足以下任何条件,请替换某些值:
    1.如果该值为3的倍数,则使用'Fizz'代替 。
    2.如果值为5的倍数:则使用'Buzz'代替。
    3.如果该值是3&5的倍数:则使用'FizzBu​​zz'代替。

  • 解答
  • 其一
const fizzbuzz = n => {
  let arr = [];
  for(let i=1;i<=n;i++){
    if(i%3 && i%5){
      arr.push(i);
    } else {
      !(i%3+i%5) ? arr.push('FizzBuzz') : (i%3 ? arr.push('Buzz') : arr.push('Fizz'));
    }
  }
  return arr;
}
const fizzify = fizzbuzz;
  • 其二
var fizzify = fizzbuzz = n => {
      return Array.apply(null, new Array(n)).map(function(e, i){
        return (++i % 3 ? '' : 'Fizz' ) + (i % 5 ? '' : 'Buzz') || i;
      }); 
}
  • 其三
function fizzbuzz(n) {
      var fizzified = [];
      for (var i = 1; i <= n; i++) {
        var val = '';
        if (i % 3 == 0) val += 'Fizz';
        if (i % 5 == 0) val += 'Buzz';
        fizzified.push(val || i);
      }
      return fizzified;
}
function fizzify(n) {
      return fizzbuzz(n);
}
  • 其四
function fizzify(i) {
      if (i % 15 == 0) return 'FizzBuzz';
      else if (i % 5 == 0) return 'Buzz';
      else if (i % 3 == 0) return 'Fizz';
      else return i;
}
function fizzbuzz(n) {
      var res = [];
      for (var i = 1; i <= n; ++i) res.push(fizzify(i));
      return res;
}
  • 其五
// [...Array(n+1).keys()].slice(1) 可以获取1-n的连续数字
const fizzify = fizzbuzz = n => [...Array(n+1).keys()].slice(1).map(x=>x%15===0?'FizzBuzz':x%3===0?'Fizz':x%5===0?'Buzz':x);
  • 加大难度 [6kyu]FizzBuzz++

你可能感兴趣的:([7kyu]Fizz Buzz)