Skip to content

Instantly share code, notes, and snippets.

@Cariosvertel
Last active July 27, 2023 19:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Cariosvertel/ba6eabc15644d18a53fe09d1134bc61d to your computer and use it in GitHub Desktop.
Save Cariosvertel/ba6eabc15644d18a53fe09d1134bc61d to your computer and use it in GitHub Desktop.

Estudiante 1:

  1. Cálculo de cambio de divisa: Escribe un programa que tome una cantidad en una divisa y la convierta a otra divisa utilizando una tasa de cambio predefinida.
let myMoney: Double = 50

func dollarToPeso(_ money: Double) -> Double {
    let dollarValueToPesoC: Double = 4017.00
    return money * dollarValueToPesoC
}

dollarToPeso(myMoney)
  1. Generador de contraseñas: Escribe una función que genere una contraseña aleatoria de 10 caracteres, que contenga una combinación de letras mayúsculas, letras minúsculas y números.
let caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
var contrasena = ""
    
for _ in 0..<10 {
    let indice = Int(arc4random_uniform(UInt32(caracteres.count)))
    let caracter = caracteres[caracteres.index(caracteres.startIndex, offsetBy: indice)]
        contrasena.append(caracter)
}
    
let contrasenaGenerada = contrasena
print(contrasenaGenerada)
  1. Verificación de contraseña: Escribe una función que verifique si una contraseña cumple con los siguientes criterios: debe tener al menos 8 caracteres, contener al menos una letra mayúscula, una letra minúscula y un número.
func verificarContrasena(_ contrasena: String) -> Bool {
    let caracteresRequeridos = NSCharacterSet(charactersIn: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890")
    
    // Verificar la longitud de la contraseña
    guard contrasena.count >= 8 else {
        return false
    }
    
    // Verificar si hay al menos una letra mayúscula
    let tieneMayuscula = contrasena.rangeOfCharacter(from: CharacterSet.uppercaseLetters) != nil
    
    // Verificar si hay al menos una letra minúscula
    let tieneMinuscula = contrasena.rangeOfCharacter(from: CharacterSet.lowercaseLetters) != nil
    
    // Verificar si hay al menos un número
    let tieneNumero = contrasena.rangeOfCharacter(from: CharacterSet.decimalDigits) != nil
    
    // Verificar si hay caracteres no permitidos
    let tieneCaracteresNoPermitidos = contrasena.rangeOfCharacter(from: caracteresRequeridos.inverted) != nil
    
    // Comprobar todos los criterios
    if tieneMayuscula && tieneMinuscula && tieneNumero && !tieneCaracteresNoPermitidos {
        return true
    } else {
        return false
    }
}

Estudiante 2:

  1. Organización de arrays: Escribe un programa que tome un array de números desordenados y los organice de forma ascendente.
var arrayNumbers: [Int] = []
    
for _ in 0..<10 {
    let numero = Int.random(in: 0...100)
    arrayNumbers.append(numero)
}

let randomArrayNumbers = arrayNumbers
print(randomArrayNumbers)

var organizedArraySmallestToLargest = randomArrayNumbers.sorted()
print(organizedArraySmallestToLargest)
  1. Cálculo de promedio: Escribe una función que tome un array de números y calcule su promedio.
var arrayNumbers: [Int] = []
    
for _ in 0..<10 {
    let numero = Int.random(in: 0...100)
    arrayNumbers.append(numero)
}
let randomArrayNumbers = arrayNumbers
print(randomArrayNumbers)

let randomArraySum = randomArrayNumbers.reduce(0, +)
let randomArrayAverage = Double(randomArraySum) / Double(randomArrayNumbers.count)
print(randomArrayAverage)
  1. Contador de palabras: Escribe una función que cuente el número de palabras en una cadena de texto dada.
let textStringExample = "Hola, este es un ejemplo de frase con palabras."

let separatorsWordText = CharacterSet.whitespacesAndNewlines.union(CharacterSet.punctuationCharacters)

let wordTextAmountCount = textStringExample.components(separatedBy: separatorsWordText).filter { !$0.isEmpty }.count

print("El texto tiene \(wordTextAmountCount) palabras.")

Estudiante 3:

  1. Verificación básica de número de tarjeta de crédito: Escribe una función que verifique si un número de tarjeta de crédito es válido basándose en la longitud y el prefijo del número. La longitud del número de tarjeta debe ser de 16 dígitos. El número de tarjeta debe comenzar con uno de los siguientes prefijos: "4" para Visa, "5" para Mastercard, "34" o "37" para American Express.
let prefixOptions = ["4", "5", "34", "37"]
let prefixCard = prefixOptions.randomElement()!
let digitCount = 16 - prefixCard.count
var numberCard = prefixCard
    
for _ in 0..<digitCount {
    let randomDigit = Int.random(in: 0...9)
    numberCard += String(randomDigit)
}

let validCardNumber = numberCard
print(validCardNumber)
  1. Conversión de unidades: Escribe un programa que convierta una temperatura en grados Celsius a grados Fahrenheit.
func generateRandomTemperature() -> Double {
    let temperatureMin = -10.0
    let temperatureMax = 40.0
    
    let temperature = Double.random(in: temperatureMin...temperatureMax)
    return temperature
}

let randomTemperatureCelsius = generateRandomTemperature()
print(String(format: "La temperatura actual es : %.2f grados Celsius", randomTemperatureCelsius))

func convertCelsiusToFahrenheit(_ temperatureCelsius: Double) -> Double {
    let temperatureFahrenheit = (temperatureCelsius * 9/5) + 32
    return temperatureFahrenheit
}

let temperatureFharenheitConversert = convertCelsiusToFahrenheit(randomTemperatureCelsius)
print(String(format: "La conversión de Celsius: %.2f grados Fahrenheit", temperatureFharenheitConversert))
  1. Cifrado de texto: Escribe una función que tome una cadena de texto y la cifre utilizando el cifrado de César con un desplazamiento de 3 y luego cifre al contrario.
var originalTextString = "HOLA, MUNDO!"
let displacementCode = 3
var ciphertext = ""

for caracter in originalTextString {
    if let ascii = caracter.asciiValue {
        var newAscii = ascii
        
        if ascii >= 65 && ascii <= 90 { // Mayúsculas
            newAscii = (ascii - 65 + UInt8(displacementCode)) % 26 + 65
        } else if ascii >= 97 && ascii <= 122 { // Minúsculas
            newAscii = (ascii - 97 + UInt8(displacementCode)) % 26 + 97
        }
        
        let newCharacter = Character(UnicodeScalar(newAscii))
        ciphertext.append(newCharacter)
    } else {
        ciphertext.append(caracter)
    }
}

print("Texto original: \(originalTextString)")
print()
print("Texto cifrado: \(ciphertext)")

print()

for caracter in ciphertext {
    if let ascii = caracter.asciiValue {
        var newAscii = ascii
        
        if ascii >= 65 && ascii <= 90 { // Mayúsculas
            newAscii = (ascii - 65 + 26 - UInt8(displacementCode)) % 26 + 65
        } else if ascii >= 97 && ascii <= 122 { // Minúsculas
            newAscii = (ascii - 97 + 26 - UInt8(displacementCode)) % 26 + 97
        }
        
        var nuevoCaracter = Character(UnicodeScalar(newAscii))
        originalTextString.append(nuevoCaracter)
    } else {
        originalTextString.append(caracter)
    }
}
print()

print("Texto cifrado: \(ciphertext)")
print()
print("Texto original: \(originalTextString)")

Estudiante 4:

Este se divide en 2 partes

  1. Generar una función que cree un array con una cantidad de numeros a elegir, estos deben ser aleatorios del 1 al 100

  2. Suma de Array: Escribe un programa que tome 3 array y devuelva la suma de los arrays.

func createNumArray(_ amountOfNumbers: Int) -> [Int] {
    var arrayNumbersGenerated: [Int] = []
    
    for _ in 0..<amountOfNumbers {
        let numbersRandow = Int.random(in: 0...100)
        arrayNumbersGenerated.append(numbersRandow)
    }
    return arrayNumbersGenerated
}

let firstArrayIntGenerated: [Int] = createNumArray(6)
let secondArrayIntGenerated: [Int] = createNumArray(5)
let tirhdArrayIntGenerated: [Int] = createNumArray(3)

var numArraySum1 = Double(firstArrayIntGenerated.reduce(0, +))
var numArraySum2 = Double(secondArrayIntGenerated.reduce(0, +))
var numArraySum3 = Double(tirhdArrayIntGenerated.reduce(0, +))

let sumarrayIntGenerated: Double = numArraySum1 + numArraySum2 + numArraySum3
print(sumarrayIntGenerated)
  1. Contador de caracteres: Escribe una función que cuente el número de veces que aparece un carácter específico en una cadena de texto.
import Foundation

let fruitArray: [String] = ["apple", "banana", "orange", "grape", "watermelon", "pineapple", "strawberry", "kiwi", "mango", "peach"]

let vowels: [Character] = ["a", "e", "i", "o", "u"]


func countCharacterOccurrences(_ text: String, _ character: Character) -> Int {
    var count = 0
    for char in text {
        if char == character {
            count += 1
        }
    }
    return count
}


let fruitNameString: String =  fruitArray.randomElement()!
let vowelsRandom = vowels.randomElement()!

let fruitCountCharacter = countCharacterOccurrences(fruitNameString, vowelsRandom)

print("En la palabra '\(fruitNameString)' El carácter '\(vowelsRandom)' aparece \(fruitCountCharacter) veces en el texto.")

Estudiante 5:

  1. Verificación de número primo: Escribe una función que verifique si un número dado es primo.
import Foundation

func isPrime(_ number: Int) -> Bool {
    if number <= 1 {
        return false
    }
    
    if number <= 3 {
        return true
    }
    
    if number % 2 == 0 || number % 3 == 0 {
        return false
    }
    
    var i = 5
    while i * i <= number {
        if number % i == 0 || number % (i + 2) == 0 {
            return false
        }
        i += 6
    }
    
    return true
}

// Ejemplo de uso
let numberToCheck = 54
let isNumberPrime = isPrime(numberToCheck)

if isNumberPrime {
    print("\(numberToCheck) es un número primo.")
} else {
    print("\(numberToCheck) no es un número primo.")
}
  1. Generador de números primos: Escribe una función que genere una lista de los primeros 50 números primos.
func generatePrimes(count: Int) -> [Int] {
    var primes = [Int]()
    var sieve = [Bool](repeating: true, count: count * 10)
    
    for num in 2..<sieve.count {
        if sieve[num] {
            primes.append(num)
            
            var multiple = num * num
            while multiple < sieve.count {
                sieve[multiple] = false
                multiple += num
            }
        }
        
        if primes.count >= count {
            break
        }
    }
    
    return primes
}


let numberOfPrimesToGenerate = 50
let primesList = generatePrimes(count: numberOfPrimesToGenerate)
print("Los primeros \(numberOfPrimesToGenerate) números primos son: \(primesList)")
  1. Búsqueda binaria: Escribe una función que realice una búsqueda binaria en un array ordenado y devuelva el índice del elemento buscado.
func binarySearch<T: Comparable>(_ array: [T], searchElement: T) -> Int? {
    var low = 0
    var high = array.count - 1
    
    while low <= high {
        let mid = (low + high) / 2
        let midElement = array[mid]
        
        if midElement == searchElement {
            return mid // Elemento encontrado, devolvemos el índice
        } else if midElement < searchElement {
            low = mid + 1 // El elemento buscado está en la mitad superior
        } else {
            high = mid - 1 // El elemento buscado está en la mitad inferior
        }
    }
    
    return nil // Elemento no encontrado, retornamos nil
}

Estudiante 6:

  1. Validación de dirección de correo electrónico: Escribe una función que verifique si una dirección de correo electrónico es válida.
func isValidEmail(_ email: String) -> Bool {
    let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
    let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailRegex)
    return emailPredicate.evaluate(with: email)
}
  1. Inversión de cadena: Escribe una función que invierta una cadena de texto dada.
func reverseString(_ text: String) -> String {
    var reversedText = ""
    
    for char in text {
        reversedText = String(char) + reversedText
    }
    
    return reversedText
}
  1. Contador de dígitos: Escribe una función que cuente el número de dígitos en un número entero.
func countDigits(in number: Int) -> Int {
    var count = 0
    var num = abs(number) // Tomamos el valor absoluto para manejar números negativos
    
    if num == 0 {
        return 1 // El número 0 tiene un solo dígito
    }
    
    while num > 0 {
        num = num / 10
        count += 1
    }
    
    return count
}

// Ejemplo de uso
let number = 12345
let digitCount = countDigits(in: number)
print("El número de dígitos en \(number) es: \(digitCount)")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment