題目:
(6 級) Write Number in Expanded Form
系統會給你一個數字,你需要回傳一個字串,是以展開的形式表示該數字。
範例:
expanded_form(12) => "10 + 2"
expanded_form(42) => "40 + 2"
expanded_form(70304) => "70000 + 300 + 4"
注意:
所有的數字皆會是大於 0 的正整數
Ruby 解法:
def expanded_form(num)
# 把數字轉成字串再把每個 digit 拆成陣列之後反轉
num.to_s.split("").reverse
# 把每個 digit 挑出來
.map.with_index { |digit, index|
# 乘數為 1 加上 index 個 0 的數字
mul = "1#{"0" * index}".to_i
# digit 乘上乘數後就是展開後的形式
digit.to_i * mul }
# 再把數字反轉回來,並去除掉只有 0 的數字
.reverse.delete_if { |i| i == 0 }
# 最後用 + 號把每個數字串成字串
.join(" + ")
end
JavaScript 解法:
function expandedForm(num) {
// 先用一個變數把計算結果存起來
let result =
// 把數字轉成字串再把每個 digit 拆成陣列之後反轉
num.toString().split("").reverse()
// 把每個 digit 挑出來
.map((digit, index) => {
// 乘數為 1 加上 index 個 0 的數字
let mul = `1${"0".repeat(index)}`;
// digit 乘上乘數後就是展開後的形式
return parseInt(mul) * digit;})
// 再把數字反轉回來,並去除掉只有 0 的數字
.reverse().filter(n => n !== 0)
// 最後用 + 號把每個數字串成字串
.join(" + ");
// 最後回傳結果
return result;
}