FizzBuzzWhizz

作者: 智慧与力量的贤者 | 来源:发表于2017-04-01 01:09 被阅读0次
FizzBuzzWhizz题目需求:

when run (3) return 'Fizz'
when run(5) retunr 'Buzz'
when run(7) retunr 'Whizz'
when run(3×5) retunr 'FizzWhizz' //run 的参数为3和5共同的倍数
when run(3×7) retunr 'FizzBuzz' //run 的参数为3和7共同的倍数
when run(5×7) return 'BuzzWhizz' //run 的参数为5和7共同的倍数
when run(3×5×7) return 'FizzBuzzWhizz' //run 的参数为3和5和7共同的倍数
when run(n) return n //n 可以为非3,5,7或3,5,7的倍数的数字,如:run(2) return '2'

分析
tasking
测试数据及预期结果
input print
3 " F i z z "
5 " B u z z "
7 " W h i z z "
3 × 5 " F i z z B u z z "
3 × 7 " F i z z W h i z z "
5 × 7 " B u z z W h i z z "
3 × 5 × 7 " F i z z B u z z W h i z z"

从题目来看,这道题的逻辑并不复杂,无非是判定是否为3,5,7的倍数,再根据判定结果输出相应的字符串,判定是否为倍数可通过取模运算来实现;同时,根据题目要求,很明显可以看出,当输入数字为多个因子的公倍数时,输出的复杂字符串是由各个简单字符串根据不同的优先级进行拼接而成,那么可根据不同的优先级来调整其约数判定顺序,从而实现字符串的优先级排列。


我尝试用TDD的方式来编写代码,先写测试,再写实现,保证在每一次测试时都满足我的测试需求,再逐步添加需求,写出的代码如下:

function run(num){
    var result=num.toString();
    if(num%3==0){
        result="Fizz";
        if(num%5==0){
            result=result+"Buzz";
        }
        if(num%7==0){
            result=result+"Whizz";
        }
    }else if(num%5==0){
        result="Buzz";
        if(num%7==0){
            result=result+"Whizz";
        }
    }else if(num%7==0){
        result="Whizz";
    }
    return result;
}

总测试结果如下:


test result

由代码分析可知,不管是输入8种情况中的任意一种,均需要通过3次判定;
并且,从代码中可以看见有许多重复代码,而这些重复代码执行所需要的判定也是一样的。于是,我尝试将重复的代码进行归并,考虑到当输入为非3,5,7的倍数时,输出与输入相同的数字,还要添加一条判定,如下:

function run(num){
    var result="";
    if(num%3==0){
        result+="Fizz";
    }
    if(num%5==0){
        result+="Buzz";
    }
    if(num%7==0){
        result+="Whizz";
    }
    if(result==="")
        return num.toStirng;
    return result;
}

测试结果:

test result

相关文章

  • FizzBuzzWhizz

    本篇仅讨论此题目,若需查看与 javascript 相关信息,请查看本人另一篇文章 javascript 基础入门...

  • FizzBuzzWhizz

    题目描述:FizzBuzzWhizz 需求: when run(3) return 'Fizz'when run(...

  • FizzBuzzWhizz

    经分析该问题主要需要解决一下问题: 1.判断公倍数。2.实现字符串连接解决方法如下:1.依次判断是否是3、5、7的...

  • FizzBuzzWhizz

    需求分析如下: 1.run 的参数为 3、5和7共同的倍数,run 的参数为 5和7共同的倍数...可以转换为nu...

  • FizzBuzzWhizz

    JavaScript 针对那道题,我是这么想的: 先判断是否为3 and 5 and 7的公倍数,若不是接着判断,...

  • FizzBuzzWhizz

    FizzBuzzWhizz 起初考虑的时候觉得rule比较简单,运用最基本的思想,逐个判断条件发现确实太繁杂。做完...

  • FizzBuzzWhizz

    需求: when run(3) return 'Fizz'when run(5) return 'Buzz'whe...

  • FizzBuzzWhizz

    作业要求: 1.通过document.write()方法,将以上需求的每一条调用结果打印出来,结果会在屏幕右边显示...

  • FizzBuzzWhizz

    FizzBuzzWhizz题目需求: when run (3) return 'Fizz'when run(5) ...

  • FizzBuzzWhizz

    黑珍珠号_陈祥梅 题目需求 when run(3) return 'Fizz'when run(5) return...

网友评论

    本文标题:FizzBuzzWhizz

    本文链接:https://www.haomeiwen.com/subject/iyfbottx.html