Estudiante 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)
- 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)
- 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:
- 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)
- 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)
- 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:
- 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)
- 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))
- 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
-
Generar una función que cree un array con una cantidad de numeros a elegir, estos deben ser aleatorios del 1 al 100
-
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)
- 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:
- 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.")
}
- 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)")
- 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:
- 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)
}
- 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
}
- 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)")