Как я могу заставить цикл моего предположения пароля работать? - PullRequest
0 голосов
/ 11 ноября 2019

Я хочу написать эту функцию "guessPasscode", но не думаю, что мои коды работают. (остальные функции верны). Предполагается, что каждое число от 0000 ~ 9999 должно угадываться как четырехзначный код доступа.

Я запускаю функцию, и она ничего не печатает, и я тоже не думаю,функция работает так, как я хотел.

var guess = "";
var guessCode ="";
function start() {
    var secretPasscode = generateRandomPasscode();
    guessPasscode(secretPasscode);


}

// Checks whether the given guess passcode is the correct passcode
function isCorrect(guessCode, correctCode) {
    return guessCode == correctCode;
}

// Generates a random 4 digit passcode and returns it as a String
function generateRandomPasscode() {
    var randomPasscode = "";

    for(var i = 0; i < 4; i++) {
        var randomDigit = Randomizer.nextInt(0, 9);
        randomPasscode += randomDigit;
    }

    return randomPasscode;
}
function guessPasscode(secretPasscode){
    for (var a = 0; a < 10; a++){
        guess += a;
        for (var b = 0; b < 10; b++){
            guess += b;
            for(var c = 0; c < 10; c++){
                guess += c;
                for (var d = 0; d < 10; d++){
                    guess += d;
                    if (isCorrect(guessCode, secretPasscode)){
                    println("Success!");
                    break;
                    }
                    guess = 0; //I am not sure about this line though
                }
            }
        }
    }
    if (isCorrect(guessCode, secretPasscode)){
        println("Success!");
    }
}

Я ожидаю, что он напечатает «success» и остановит цикл после того, как найдет правильный пароль.

1 Ответ

0 голосов
/ 11 ноября 2019

Эти вложенные в циклы действительно дикие и невероятно неэффективные. Если вы хотите угадать от 0 до 9999, просто пропустите цикл, а затем добавьте нули влево.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

for (let i = 0; i < 9999; i++) {
     let guess = String(i).padStart(4, '0')
     guessAnswer(guess)
     //whatever logic here to exit loop on correct guess
}
...