[6kyu]FizzBuzz++

2017-07-19  本文已影响28人  君肄塵

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


// [...Array(n+1).keys()].slice(1) 可以获取1-n的连续数字
function fizzbuzzPlusPlus(numbers, words) {
      let nums = [...Array(numbers.reduce((sum,value) => sum * value,1)+1).keys()].slice(1);
      return nums.map(el => {
        let result;
        for (let i=0;i<numbers.length;i++){
          if (!(el%numbers[i])){
            result ? result+=words[i] : result=words[i];
          }
        }
        return result ? result : el;
      })
}
function fizzbuzzPlusPlus(n, w) {
      return [...Array(n.reduce((a,b)=>a*b)).keys()].map((x)=>{
        let b=n.map((e,i)=>(x+1)%e==0 ? w[i] :'').filter(x=>x!=='')
        if(b.length==0) return x+1
        return b.join('')
      });
}
function fizzbuzzPlusPlus(nums, words) {
      return Array
        .from({length: nums.reduce((a,b) => a * b, 1)})
        .map((_,i) => nums
          .filter(v => (i + 1) % v === 0)
          .map(v => words[nums.indexOf(v)])
          .join('') || i + 1
        );
}
function fizzbuzzPlusPlus(numbers, words) {
      let result = [];
      for (let i = 1, total = numbers.reduce((p, c) => p * c); i <= total; i++) {
        result.push(numbers.reduce((p, c, u) => i % c === 0 ? p + words[u] : p, "") || i);
      }
      return result;
}
上一篇 下一篇

猜你喜欢

热点阅读