FizzBuzzWhizz

FizzBuzzWhizz題目需求:

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

分析
tasking
測試數(shù)據(jù)及預期結(jié)果
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的倍數(shù),再根據(jù)判定結(jié)果輸出相應的字符串,判定是否為倍數(shù)可通過取模運算來實現(xiàn);同時,根據(jù)題目要求,很明顯可以看出,當輸入數(shù)字為多個因子的公倍數(shù)時,輸出的復雜字符串是由各個簡單字符串根據(jù)不同的優(yōu)先級進行拼接而成,那么可根據(jù)不同的優(yōu)先級來調(diào)整其約數(shù)判定順序,從而實現(xiàn)字符串的優(yōu)先級排列。


我嘗試用TDD的方式來編寫代碼,先寫測試,再寫實現(xiàn),保證在每一次測試時都滿足我的測試需求,再逐步添加需求,寫出的代碼如下:

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;
}

總測試結(jié)果如下:


test result

由代碼分析可知,不管是輸入8種情況中的任意一種,均需要通過3次判定;
并且,從代碼中可以看見有許多重復代碼,而這些重復代碼執(zhí)行所需要的判定也是一樣的。于是,我嘗試將重復的代碼進行歸并,考慮到當輸入為非3,5,7的倍數(shù)時,輸出與輸入相同的數(shù)字,還要添加一條判定,如下:

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;
}

測試結(jié)果:

test result
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評論 19 139
  • 需求分析如下: 1.run 的參數(shù)為 3、5和7共同的倍數(shù),run 的參數(shù)為 5和7共同的倍數(shù)...可以轉(zhuǎn)換為nu...
    今站閱讀 317評論 4 1
  • FizzBuzzWhizz 需求: when run(3) return 'Fizz'when run(5) re...
    我隨便取的名閱讀 524評論 1 1
  • 元旦這件事 其實很有趣 跨年這個詞 聽聽都浪漫 零點那一刻班群也在線 外面的世界也是熱鬧非凡 煙花爆竹 還有新春吶...
    萍萍_sunshine閱讀 158評論 0 0
  • 19號,濟南史上最嚴限購令發(fā)布 20日,開始實施 誰說政府沒效率的? 這速度 反應的時間都不給你 估計廁所里已經(jīng)哭...
    peter潘英語閱讀 329評論 3 2

友情鏈接更多精彩內(nèi)容