Професионална програма
Loading...
krumkuzmov avatar krumkuzmov 5 Точки

Safe Passwords Generator

Здравейте, колеги,

Моля за съдействие по задачата от JS Basics, More exercises - 07. Safe password generator.

Моето решение:

https://pastebin.com/DGVFqLWz

https://judge.softuni.bg/Contests/Submissions/View/13714172

Ето условието:

Генератор за сигурни пароли

Ани се страхува от това, да не й бъде хакнат някой от профилите в социалните мрежи, затова решава да направи генератор за пароли, които да бъдат достатъчно сигурни. Вашата задача е да й помогнете да напише програма, която ще генерира тези пароли, разделени една от друга от знака "|".

Да се напише програма, която генерира серия от символи като в шаблона:

ABxyBA

като при всяко генериране на нов код, стойностите на символите се увеличават с 1. Ако A надхвърли 55, се връща на 35. Ако B надхвърли 96, се връща на 64.

Вход

От конзолата се чете 1 ред:

  • На първия ред a – цяло число в интервала [1 … 1000]
  • На втория ред b – цяло число в интервала [1 … 1000]
  • На третия ред максимален брой генерирани паролицяло число в интервала [1 … 1000000]

Ограничения:

  • е символ с ASCII стойност в диапазона [35… 55]
  • е символ с ASCII стойност в диапазона [64 … 96]
  • e цяло число в диапазона [1… a]
  • e цяло число в диапазона [1… b]

Изход:

Да се отпечата на конзолата:

  • Генерираният код. Ако броят на комбинациите е по-голям от максималния на кода, да се отпечата до подадената стойност, в противен случай да се отпечата до текущия брой на комбинациите.
Тагове:
0
Programming Basics
willystyle avatar willystyle 2194 Точки
Best Answer
function solve(input) {
    let number1 = +input.shift();
    let number2 = +input.shift();
    let maxPasswords = +input.shift();
    let passwordsCounter = 0;
    let symbol1 = 35;
    let symbol2 = 64;
    let combo = '';
    for (let symbol3 = 1; symbol3 <= number1; symbol3++) {
        for (let symbol4 = 1; symbol4 <= number2; symbol4++) {
            let codeToCharSymbol1 = String.fromCharCode(symbol1);
            let codeToCharSymbol2 = String.fromCharCode(symbol2);
            combo += `${codeToCharSymbol1}${codeToCharSymbol2}${symbol3}${symbol4}${codeToCharSymbol2}${codeToCharSymbol1}|`;
            passwordsCounter++;
            if (passwordsCounter >= maxPasswords) {
                console.log(combo);
                return;
            }
            symbol1++;
            if (symbol1 > 55) {
                symbol1 = 35;
            }
            symbol2++;
            if (symbol2 > 96) {
                symbol2 = 64;
            }
        }
    }
    console.log(combo);
}

 

0
krumkuzmov avatar krumkuzmov 5 Точки

Благодаря за пореден път! Да разбирам, че не е нужно да правя цикли и за symbol1 и symbol2? Не е ли същата логика, ако го правя с цикъл или просто така си е наумил Judge?

 

1
willystyle avatar willystyle 2194 Точки

Няма нужда от цикли за а symbol1 и symbol2, понеже те се инкрементират във вложения цикъл, и така е по условие.

0
krumkuzmov avatar krumkuzmov 5 Точки

Да, видях, но и с цикъл също ще се инкрементират. Както и да - благодаря още веднъж!

0