Nilesh Saini
2 min readFeb 16, 2021

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!!!

Nilesh Saini
Nilesh Saini

Written by Nilesh Saini

Web Developer/ Front-end engineer who loves solving Rubik's Cube

No responses yet