코딩을 연습하고 배우고 이해하는 데 어려움을 겪고 있습니다. 나는 열심히 우연히 만났고, 그것을보기 위해 결심했다. 운 좋게 시간 제한이 없습니다. 문제는 (원하는 경우 건너 뛸 수 있습니다.)while 루프에서 변수가 변경되지 않음
"JavaScript 언어를 사용하면 KaprekarsConstant (num) 함수가 전달되는 num 매개 변수를 가져와 적어도 두 자리가 다른 4 자리 숫자가됩니다. 프로그램은 숫자에 대해 다음 루틴을 수행해야합니다. 숫자를 내림차순과 오름차순으로 정렬하고 (4 자리 숫자에 맞추기 위해 0을 더하십시오) 더 큰 숫자에서 더 작은 숫자를 뺀 다음 이전 단계를 반복하십시오. 이 루틴을 수행하면 항상 고정 숫자 인 6174에 도달하게됩니다. 그런 다음 6174에서 루틴을 수행하면 항상 6174 (7641 - 1467 = 6174)가됩니다. 프로그램은 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