ハザード数

16055 ワード

問題の説明


正の整数xを下のスケール数にするには、xをxの桁数の和で除算する必要があります.例えば、18の桁数の和は1+8=9であり、18は9で除算されるので、18は下付き文字数となる.自然数xを入力し、xがハザード数の関数かどうかをチェックし、解を完了します.

コード#コード#


function solution(x) {
    var strx=String(x);
    var arrx=Array.from(strx);
    var strarrx=[]
    for(i=0;i<arrx.length;i++){
    strarrx.push(parseFloat(arrx[i]))
    }
    var sumx=strarrx.reduce((a,b)=>a+b,0)
    var divx=x%sumx
  
    if(divx==0){
        var answer=true
        }
  
    else if(divx!=0){
          var answer=false}

    return answer;
  
}

プロセス


1.数値を文字列に変換して分離します。

var x=12

x
12

var strx=String(x)

strx
"12"

2.数字の各桁数を別々に並べます。


タイル分割の変換(from)

var arrx=Array.from(strx)

arrx
(2) ["1", "2"]

3.文字列を数値に変換します。

for(i=0;i<arrx.length;i++){
    strarrx.push(parseFloat(arrx[i]))}
2
strarrx
(2) [1, 2]

4.各ビット数を加算します。

var sumx=strarrx.reduce((a,b)=>a+b,0)
undefined
sumx
3

5.残りが0の場合、trueと判定する

//나누어떨어진다는 것은 나머지가0이라는 것을 의미한다.
var divx=x%sumx
if(divx==0){
    var answer=true}else{var answer=false}

answer
true

コード#コード#


function solution(x) {
  //12를 넣으면
    var strx=String(x);
  //"12"
    var arrx=Array.from(strx);
  // ["1", "2"]
    var strarrx=[]
    for(i=0;i<arrx.length;i++){
    strarrx.push(parseFloat(arrx[i]))
    }
  //[1, 2]
    var sumx=strarrx.reduce((a,b)=>a+b,0)
  //3
    var divx=x%sumx
  //0
    if(divx==0){
        var answer=true
        }
  
    else if(divx!=0){
          var answer=false}

    return answer;
  //true
}

/*solution(10)
true

solution(11)
false

solution(12)
true

solution(13)
false

Review


- string


関数のまとめを参照

- from


https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Array.from(arrayLike[, mapFn[, thisArg]])
パラメータ
ArrayLike:アレイに変換する類似のアレイオブジェクトまたは重複可能なオブジェクト.
mapfn(Optional):配列内のすべての要素に対して呼び出すマッピング関数.
thisArg(Optional):mapfnを実行するときにこの値の値として使用します.
Array.from('foo');
// ["f", "o", "o"]

- reduce


https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

アレイ内のすべての値の合計

var sum = [0, 1, 2, 3].reduce(function (accumulator, currentValue) {
  return accumulator + currentValue;
}, 0);
// sum is 6

矢印関数を使用して作成

var total = [ 0, 1, 2, 3 ].reduce(
  ( accumulator, currentValue ) => accumulator + currentValue,
  0
);

4つの因子を持つ。


アキュムレータ:コールバックの戻り値の累計
CurrentValue:処理する現在の要素
CurrentIndex(Optional):処理する現在の要素のインデックス
配列(Optional):reduce()を呼び出す配列