私は、コーディングを練習し、学び、理解するために挑戦しています。私は一生懸命やって来て、見てみることにしました。幸いなことに時間制限はありません。あなたが望むならスキップすることができます。whileループで変数が変化しない
"JavaScript言語を使って、関数のKaprekarsConstant(num)に少なくとも2つの異なる数字を持つ4桁の数値が渡されます。プログラムは数字の次のルーチンを実行する必要があります。数字を降順と昇順(4桁の数値に合わせてゼロを加算)に配置し、大きい方の数字から小さい方の数値を引きます。このルーチンを実行すると、常に6174に固定された番号に到達します。次に、6174でルーチンを実行すると、常に6174(7641-1467 = 6174)が返されます。たとえば、numが3524の場合、プログラムは次のステップのために3を返します。(1)5432 - 2345 = 3087、(2)8730 - 0378 = 8352 、(3)8532-2358 = 6174。
(coderbyte)
長い間働いた後、私は私が仕事想像何かを発見しました。ループをまだテストすることはできませんでした。なぜなら、ループが不完全で処理が完了しないため、コードを再実行できなかったからです。それがすべて終わった後、私はそれをテストしました。そして私は何を試しても0を得ました。私が手紙を入力した場合、何が起こるべきか、たとえ数字が何であっても、この例の4桁の数字さえも誤りがあります。私はちょうど始めていますので、私は本当にここに間違っているかわからない
function KaprekarsConstant(num) {
var forD = [];
var sNum = num.toString();
var result = 0;
var chngdN = [];
var trkr = 0;
for (var i = 0; i < sNum.length; i ++) {
forD.push(+sNum.charAt(i));
}
for (var j = 0; j < sNum.length; j ++) {
chngdN.push(+sNum.charAt(j));
}
while(while(forD-chngdN === trkr){
forD = trkr.toString();
chngdN = trkr.toString();
forD = forD.split("");
chngdN = chngdN.split("");
forD = forD.sort();
chngdN = chngdN.sort();
forD = forD.reverse();
forD = forD.join("");
chngdN = chngdN.join("");
forD = parseFloat(forD);
chngdN = parseFloat(chngdN);
trkr = forD - chngdN;
forD = trkr.toString();
chngdN = trkr.toString();
result = result +1;
}
// code goes here
return result;
}
// keep this function call here
KaprekarsConstant(readline());
:
は、ここに私のコードです。誰かが私に何が間違っているか教えてもらえれば、それは大好きです(私はそれが私がそれを理解していないように見えるように思えるように思えるように思えるが、私はまだ学んだすべてをしっかり把握していない。 )。 ありがとうございます。
すみません、私はちょっと迷っています。私が知っている範囲は、var、function、return、array、some()(私は正直なところ、splitというように何が呼ばれているのか分かりません。 ))、すべての===!==など、if、for、whileループ、.match、parseInt、parseFloat、そしておそらくそれ以上のものは今私の心を傷つけています。私はプッシュフレーズがどのように働いたか、彼らがしたことだけを完全には理解していなかったことを認めます。すみません、あなたがしていることを見て、どうして本当に理解していないのか分かります。 –
また、私は失礼なことを意味するわけではありませんが、私が書いたことで何が間違っているかを知っていれば、学習にとって非常に便利です。 –
@BradenFoltz主なことは、あなたが再帰を使わないことです。私は少し簡単にするために私の答えを更新し、より正確に仕様を実装しました。 – HMR