プログラマ[LEVEL 1]ハッシュ数JavaScript
ハザード数
問題の説明
正の整数xを下のスケール数にするには、xをxの桁数の和で除算する必要があります.例えば、18の桁数の和は1+8=9であり、18は9で除算されるので、18は下付き文字数となる.自然数xを入力し、xがハザード数の関数かどうかをチェックし、解を完了します.
せいげんじょうけん
xは1または10000より大きい整数です.
に答える
この問題を初めて見ますか.今回は簡単だと思いますので、以下のようにコードします.<script>
function Harshad (x){
let quot = Math.floor(x/10);
let mod = x % 10;
let digitSum = a + b;
result = x % digitSum === 0 ? true : false;
return result;
}
</script>
一見うまく動いているように見えるが、見落とした事実がある.
xは1または10000より大きい整数です.
....もう一度
ノートで自分でいくつかの数字を共有して、整数xを10000点から100000点まで知って、10点の1部ごとに残りの10を加えて、1桁ごとの和を求めることができます.
対応する符号化を以下に示す.<script>
function Harshad (x){
const quot01 = Math.floor(x/10000);
const mod01 = x % 10000;
const quot02 = Math.floor(mod01/1000);
const mod02 = mod01 % 1000;
const quot03 = Math.floor(mod02/100);
const mod03 = mod02 % 100;
const quot04 = Math.floor(mod03/10);
const lastMod = mod03 % 10;
const digitSum = quot01 + quot02 + quot03 + quot04 + lastMod;
let result = x % digitSum === 0 ? true : false;
return result;
}
</script>
成功した!変数に満ちた乱雑なコードだが、自分で解決したほうがいい.
提出して人の答えを見た.
他人を解く
<script>
function Harshad(n){
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}
</script>
?????これは何の一言でも可能だ,まったく天才だ
私は真剣にその行のコードを分解した.
<script>
function Harshad (x){
let quot = Math.floor(x/10);
let mod = x % 10;
let digitSum = a + b;
result = x % digitSum === 0 ? true : false;
return result;
}
</script>
<script>
function Harshad (x){
const quot01 = Math.floor(x/10000);
const mod01 = x % 10000;
const quot02 = Math.floor(mod01/1000);
const mod02 = mod01 % 1000;
const quot03 = Math.floor(mod02/100);
const mod03 = mod02 % 100;
const quot04 = Math.floor(mod03/10);
const lastMod = mod03 % 10;
const digitSum = quot01 + quot02 + quot03 + quot04 + lastMod;
let result = x % digitSum === 0 ? true : false;
return result;
}
</script>
<script>
function Harshad(n){
return !(n % (n + "").split("").reduce((a, b) => +b + +a ));
}
</script>
まず(n+"")により整数nを文字列に変更する.ふたつに割る.
nが136の場合、[1]、[3]、[6]
そして1番で出てくる各要素reduceを使用してコールバック関数を実行します.
でも+b+aこれはいったい何ですか?Googleを試してみましたが、文字列>数字に変換すると
この文字列の前に+を付ければいい(初めての春)
以上の過程で得られた整数でnの残数を求める.
残りの部分がある場合、ハッシュ数ではなくtrueが出力されます.
他にない場合は、次の数字でfalseが出力され、カッコで囲まれます!へんか
に感銘を与える
やはり頭が悪いと体が苦しくなります.
Reference
この問題について(プログラマ[LEVEL 1]ハッシュ数JavaScript), 我々は、より多くの情報をここで見つけました https://velog.io/@wookdongs/프로그래머스LEVEL1-하샤드-수-javascriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol