大家好,我是 A Fei,又到了今日的解題時間,讓我們直接進入今天的題目:
(題目來源為 Codewars)
Welcome. In this kata, you are asked to square every digit of a number and concatenate them.
For example, if we run 9119 through the function, 811181 will come out, because 92 is 81 and 12 is 1.
Note: The function accepts an integer and returns an integer
題目要我們將帶入的 Number,每個位數的數字平方之後,回傳一個新 Number。其實這題不難,主要考你資料型別轉換的概念,我們只要將帶入的引數 用 to_s 方法轉成 String,然後用 split('') 打散成 Array,就可以用 map 對每個元素平方,最後用 join('') 重新組合成 String,再轉成 Number。
以下為我的解答:
def square_digits num
arr = num.to_s.split('')
arr.map{|n| n.to_i ** 2}.join('').to_i
end
比較評分最高的答案:
def square_digits num
num.to_s.chars.map{|x| x.to_i**2}.join.to_i
end
可以看出解題邏輯非常相似,只是對方用 chars 方法,該方法可以將一個 String 的每個字母打散組合成陣列,是個更「炫泡」的作法。
好啦,今天解題時間就到這,大家掰掰~