CodeWars: Does my number look big in this?
A Narcissistic Number is a positive number which is the sum of its own digits, each raised to the power of the number of digits in a given base. In this Kata, we will restrict ourselves to decimal (base 10).
For example, take 153 (3 digits), which is narcisstic:
1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
and 1652 (4 digits), which isn’t:
1^4 + 6^4 + 5^4 + 2^4 = 1 + 1296 + 625 + 16 = 1938
The Challenge:
Your code must return true or false depending upon whether the given number is a Narcissistic number in base 10.
Error checking for text strings or other invalid inputs is not required, only valid positive non-zero integers will be passed into the function.
My Solution:
function narcissistic(value) {
// Code me to return true or false
var val = (value + '').split('');
let sum = 0;
for( var v of val) {
const num = parseInt(v);
sum += Math.pow(num, val.length);
}
return sum === value;
}
with little modification :
function narcissistic(value) {
// Code me to return true or false
var val = (value + '').split('');
let sum = 0;
var num = val.map(x => sum+=(parseInt(x) ** val.length) )
return sum === value;
}
More advanced solution:
- note: In the return statement we can use template literal too.
- eg:- […`${value}`]
function narcissistic( value ) {
var power = (''+value).length;
return [...(''+value)].reduce((a,b)=>a+Math.pow(b,power),0) === value;
}
Final Notes:
Thank you so much for reading!!!