PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Web_Design
[問題] Roman Numeral Converter
作者:
pplle
(魚)
2017-05-24 00:00:56
之前在練習freeCodeCamp上的題目遇到問題,想請問大家。
po錯版麻煩請告知。
freeCodeCamp的題目是數字轉羅馬字。
我的程式如下:
var symbolCount = 0;
var rNum = 0;
var romanNStr = ""; //組出的羅馬數字
function convertToRoman(num) {
rNum= num;
//先算開頭M的個數
symbolCount = Math.floor(rNum/1000);
rNum = rNum -(1000*symbolCount);
for(var i = 0; i < symbolCount; i++ ){
romanNStr+="M";
}
calSymbol("M", "D", "C", 100);
calSymbol("C", "L", "X", 10);
calSymbol("X", "V", "I", 1);
return romanNStr;
}
//以三個為一組計算
function calSymbol(b, m, s, val){
symbolCount = Math.floor(rNum / val);
if(symbolCount == 9){
romanNStr += s + b;
rNum -= (9*val);
symbolCount = 0;
}
if(symbolCount == 4){
romanNStr += s + m;
rNum -= (4*val);
symbolCount = 0;
}
if(symbolCount >= 5){
romanNStr += m;
rNum -= (5 * val);
symbolCount -= 5;
}
for(var i = 0; i < symbolCount ; i++){
romanNStr += s;
rNum -= (1 * val);
}
}
================================
我知道我的程式不是最佳解,
但執行freeCodeCamp提供的[Run tests]按鈕,僅有converToRoman(2)過關。
我自己也找不到問題,
麻煩高手跟我說我的程式哪裡有問題,謝謝
freeCodeCamp的test如下
convertToRoman(2) should return "II".
convertToRoman(3) should return "III".
convertToRoman(4) should return "IV".
convertToRoman(5) should return "V".
convertToRoman(9) should return "IX".
convertToRoman(12) should return "XII".
convertToRoman(16) should return "XVI".
convertToRoman(29) should return "XXIX".
convertToRoman(44) should return "XLIV".
convertToRoman(45) should return "XLV"
convertToRoman(68) should return "LXVIII"
convertToRoman(83) should return "LXXXIII"
convertToRoman(97) should return "XCVII"
convertToRoman(99) should return "XCIX"
convertToRoman(500) should return "D"
convertToRoman(501) should return "DI"
convertToRoman(649) should return "DCXLIX"
convertToRoman(798) should return "DCCXCVIII"
convertToRoman(891) should return "DCCCXCI"
convertToRoman(1000) should return "M"
convertToRoman(1004) should return "MIV"
convertToRoman(1006) should return "MVI"
convertToRoman(1023) should return "MXXIII"
convertToRoman(2014) should return "MMXIV"
convertToRoman(3999) should return "MMMCMXCIX"
作者: EPGo
2017-05-24 10:08:00
https://jsfiddle.net/n3xa17ox/
這樣子看的出來問題在哪~
作者:
pplle
(魚)
2017-05-24 20:49:00
很抱歉,還是看不出來…程式碼我看過N次了Orz...
作者: EPGo
2017-05-24 21:59:00
檢查console發現呼叫多次會因為 romanNStr 沒有清空導致return出來的答案錯誤 EX: convertToRoman(2) = II再 convertToRoman(3) 卻變成 IIIII我直覺想法是再多一個變數來儲存輸出的值,求出答案將答案給該變數,並且清空 romanNStr 以便下次計算
https://jsfiddle.net/n3xa17ox/2/
可以參考看看 : )
作者:
pplle
(魚)
2017-05-25 16:53:00
太感謝E大了,有恍然大悟的感覺,晚上就來改我的程式,謝謝
繼續閱讀
[閒聊] telegram 網頁群組
SheueJi
[問題] 斜的該如何切版
WakeUpJ
Re: [問題] jq增加移除class後,hover仍然綁定原class
dinos
[問題] jq增加移除class後,hover仍然綁定原class
TINGWEI6
Re: [問題] function該怎麼存放?
p52189
[問題] GitHub產生網址出現問題
Moneyyyyy
[問題] 容器自適應跟著改變長度?
Aroeman
Fw: [售書]網頁程式設計ASP.NET 4.6完美入門
dingopal
[問題] linear-gradient 的問題.
tyf99
[問題] 有沒有-可限制指定網址分享觀賞影音平台
lovelove5566
Links
booklink
Contact Us: admin [ a t ] ucptt.com