Skip to content

Instantly share code, notes, and snippets.

@TheMuellenator
Last active June 4, 2024 17:39
Show Gist options
  • Save TheMuellenator/9fdb0d41d6343218ca1bcb6fb724949e to your computer and use it in GitHub Desktop.
Save TheMuellenator/9fdb0d41d6343218ca1bcb6fb724949e to your computer and use it in GitHub Desktop.
iOS repl.it - Randomisation Challenge Solution
let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
//The number of letters in alphabet equals 26
var password = alphabet[Int.random(in: 0...25)] + alphabet[Int.random(in: 0...25)] + alphabet[Int.random(in: 0...25)] + alphabet[Int.random(in: 0...25)] + alphabet[Int.random(in: 0...25)] + alphabet[Int.random(in: 0...25)]
print(password)
@uncommon-design
Copy link

let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]

var password = alphabet.randomElement()!+alphabet.randomElement()!+alphabet.randomElement()!+alphabet.randomElement()!+alphabet.randomElement()!+alphabet.randomElement()!

print(password)

@Cyrille-Dakhlia
Copy link

I really know I am late, I've all the top solutions on this page and I really don't get what does "!" mean in alphabet.rendomElemnet()! I've been looking all over internet (in my capacity) but still haven't found a reasonable solution. I hope you guys can help me on this . Thanks

Types, say String or Int, have their variant type called Optional (Optional String written in code as String?, Optional Int written in code as Int?).
A String? can either be a String or a null value (called nil in Swift) that means "nothing".

Why do we have that? Let's say you have a program where you can define nicknames for your users, you could give it the String? type as not everybody necessarily have a nickname, so the value of a nickname variable could be either a String, either nothing (nil) if no nickname would have been defined for that user.

Now let's say you have the following function that greets your users using their nickname

func greet(personNickname: String) -> String {
    let greeting = "Hello, " + personNickname + "."
    return greeting
}

It expects the nickname as a parameter being a String and not a String?. To call your function, you could not do:

print(greet(user.nickname))

since nickname is a String? and the function expects a String, you would have a compilation error.
To effectively pass a String to your function, you would use the ! symbol that says: "I know there's a value in there, trust me and act as if it was not 'Optional'." :

print(greet(user.nickname!))

Looking at the randomElement method of the Array class in the documentation, we can see that whenever we call it, it returns a value of the type Element?:

func randomElement() -> Self.Element?

Our array alphabet being an array of String elements, calling randomElement on it would return the type String?.

Since our password is of type String and not String?, it should be composed of Strings, so using the randomElement method, we should transform the String? values into String ones by using the ! symbol/operator.

@YashDjsonDookun
Copy link

let alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
    var password = "";
    for i in 0...5 {
        password += alphabet.randomElement() ?? "";
    }
    print(password);

@Sirio2022
Copy link

let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]

//The number of letters in alphabet equals 26

var a = alphabet.randomElement()
var b = alphabet.randomElement()
var c = alphabet.randomElement()
var d = alphabet.randomElement()
var e = alphabet.randomElement()
var f = alphabet.randomElement()

var result = ""
result.append(a!)
result.append(b!)
result.append(c!)
result.append(d!)
result.append(e!)
result.append(f!)

let password = result

print(password)

@h40hm4ru
Copy link

h40hm4ru commented May 7, 2024

let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]

var password = ""
for _ in 1 ... 6 {
    password += alphabet.randomElement()!
}

print(password)

@ParsaMotiallah
Copy link

let alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]

let randomElements = Array(alphabet.shuffled().prefix(6))

let password = randomElements.joined()
print (password)

@toporusan
Copy link

let alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
var password = ""
while password.count != 6 {
password = password + alphabet[Int.random(in: 0 ... alphabet.count - 1)]
}
print(password)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment