Перейти к содержанию

🗒 Задача

Напиши программу, которая генерирует пароли. Пароль должен состоять из последовательно чередующихся цифр и специальных символов. Например, 4#4%2!.

  • пользователь сам задает длину пароля;

  • для генерации пароля должна быть отдельная функция, принимающая целочисленное значение длины пароля и возвращающая готовый пароль;

  • пароль должен содержать цифры от 0 до 9, специальные символы: !"#$%&'()*+,-./ и пробел (всего 16 спецсимволов).

❌ Ошибки

  • символы в пароле должны чередоваться с числами

  • функция должна возвращать готовую строку с паролем

✏️ Комментарии

Согласно ТЗ должны быть символы от пробела до слэша

[https://www.industrialnets.ru/files/misc/ascii.pdf]
Попробуй представить последовательность символов в виде диапазона. Подробнее тут https://ru.wikipedia.org/wiki/ASCII
В Kotlin, как и в большинстве других языков программирования, принято использовать глаголы в инфинитиве для названия функций, которые выполняют некоторые действия. Поэтому лучше назвать функцию generatePassword(), так как это название короче, лаконичнее и лучше отражает суть выполняемого действия.
По символам можно также итерироваться. Посмотри на вот эту табличку и попробуй найти закономерность) https://www.industrialnets.ru/files/misc/ascii.pdf
Обрати внимание. Можно представить эту последовательность символов в виде [диапазона](https://ru.wikipedia.org/wiki/ASCII)
Можно один цикл сделать по длине пароля, в котором добавить условие, например, если `i % 2 == 0` добавить в пароль чар из последовательности символов, иначе из целочисленной последовательности

🧾 Решение

fun main() {
    println("Введите длину пароля")
    val lengthPassword = readln().toInt()
    println("Ваш пароль: ${generatePassword(lengthPassword)}")

}

fun generatePassword(length: Int): String? {

    val charRange = ' '..'/'
    val intRange = 0..9
    var password = ""

    for (i in 1..length) {
        if (i % 2 == 0) password += charRange.random()
        else password += intRange.random()
    }
    return password
}