Edited at

js 引数が各位の数と位置による数のべき乗の合計と等しいか

More than 1 year has passed since last update.


与えられた数値が、各位の数字と位置による数字のべき乗の合計と等しいか判定する。

(詳しくは下記例を参照ください。)

正の場合はyes!! 偽の場合はnot!!を返す。

*与えられる数は常に正の数

*文字を返してください



f(89)// yes!!

$8^1$+ $9^2$ = 89

与えられた数と合計が一致する

f(564)//not!!

$5^1$+ $6^2$ + $4^3$ = 546

与えられた数と合計が一致しない

function f(n){

//your code here

}

f(89);// yes!!
f(564);//not!!
f(135);// yes!!
f(136586);//not!!


使ったもの

String();

split();

for

Math.pow();

if


考えかた

与えられた数値を文字へ変換し、分割して配列にいれる。

for文で各位の数と位置の数をべき乗して合計していく。

最後に引数と合計した数を判定する。


コード

function f(n){

//your code here
let array = [];
let sum = 0;
let num = 0;
let str = String(n);
array = str.split('');
for(let i = 1 ; i <= array.length ; i++){
num = Number(array[i -1]);
sum += Math.pow(num, i)
}

return sum == n? 'yes!!':'not!!';
}
f(89);


その他コード

const f = (num) => (

[...num + ''].reduce(
(acc, n, i) => acc + Math.pow(n, i + 1), 0
) === num ? 'yes' : 'not'
) + '!!';

その他コード浮かんだ方、コメントお願いします。