每日codewars題之判斷一個數是否是水仙花數

已封號發表於2019-04-03

題目

一個水仙花數是一個數字這是它自己的數字的總和,在每一個給定的基地升高到的位數的功率。在這個Kata中,我們將自己限制為十進位制(基數為10)。

例如,取153(3位數):

    1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
複製程式碼

和1634(4位數):

    1^4 + 6^4 + 3^4 + 4^4 = 1 + 1296 + 81 + 256 = 1634
複製程式碼

挑戰:

您的程式碼必須返回true或false具體取決於給定數字是否為基數10中的Narcissistic數字。

不需要檢查文字字串或其他無效輸入的錯誤,只有有效的整數將傳遞給函式。

解題方法及思路

使用Math.pow方法對數字的每一位進行冪運算,然後判斷每一位冪運算之後的和是否等於傳入的數字

const narcissistic = value => {
  let arr = [...value.toString()] // 註解1
  return arr.reduce((pre, cur) => pre += Math.pow(parseInt(cur), arr.length), 0) === value // 註解2
}
複製程式碼
  • 註解1: 把數字轉成字串(呼叫Number.toString()方法),然後使用擴充套件運算子將其按每位分割成一個陣列

  • 使用reduce方法進行過求和,最後判斷是否等於傳入的數字

總結

題目地址: Does my number look big in this?

相關文章