iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
自我挑戰組

Codewar 進進出出 JS/Ruby系列 第 9

水仙花數

題目:
(6 級) 水仙花數
水仙花數 (Narcissistic number),也被稱為超完全數字不變數 (pluperfect digital invariant, PPDI)、自戀數自冪數阿姆斯壯數阿姆斯特朗數 (Armstrong number)。

是指一個 N 位數的正整數,其每個數位的 N 次方總和等於該數字本身。

範例:

數字: 153 (3 digits)
1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153

數字: 1634 (4 digits)
1^4 + 6^4 + 3^4 + 4^4 = 1 + 1296 + 81 + 256 = 1634

判斷給予的參數是否為水仙花數,回傳 truefalse


Ruby 解法:

def narcissistic?(value)
  # 先把參數 value 轉成陣列
  arr = value.to_s.split("")
  # 算出陣列長度以得知該數字有幾位數
  len = arr.length
  
  # 利用 map method 對每個陣列的 element 轉回數字
  # 並且算出陣列長度次方
  # 最後加總並判斷是否等於原來的參數 value
  arr.map { |n| n.to_i ** len }.sum == value
end

JavaScript 解法:

function narcissistic(value) {
  // 先把參數 value 轉成陣列
  let arr = value.toString().split("");
  // 算出陣列長度以得知該數字有幾位數
  let len = arr.length;

  // 利用 reduce function 算出總和並將結果存入變數 result
  let result = arr.reduce((sum, n) => {
    // 算出每個數字乘上陣列長度次方並加總
    return sum += n ** len;
  }, 0);
  
 // 最後判斷是否等於原來的參數 value
  return result === value;
}

上一篇
前前後後來來回回
下一篇
高高低低起起伏伏,人生阿~
系列文
Codewar 進進出出 JS/Ruby30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言