From 3598f2c281ed0c67bd65b71c219c1c091556118f Mon Sep 17 00:00:00 2001 From: KontrolDev Date: Mon, 10 Jul 2023 21:45:02 +0200 Subject: [PATCH] Reto #28 - Swift --- .../swift/kontroldev.swift" | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 "Retos/Reto #28 - EXPRESI\303\223N MATEM\303\201TICA [Media]/swift/kontroldev.swift" diff --git "a/Retos/Reto #28 - EXPRESI\303\223N MATEM\303\201TICA [Media]/swift/kontroldev.swift" "b/Retos/Reto #28 - EXPRESI\303\223N MATEM\303\201TICA [Media]/swift/kontroldev.swift" new file mode 100644 index 0000000000..645c6292c6 --- /dev/null +++ "b/Retos/Reto #28 - EXPRESI\303\223N MATEM\303\201TICA [Media]/swift/kontroldev.swift" @@ -0,0 +1,48 @@ +/* + Crea una función que reciba una expresión matemática (String) + y compruebe si es correcta. Retornará true o false. + - Para que una expresión matemática sea correcta debe poseer + un número, una operación y otro número separados por espacios. + Tantos números y operaciones como queramos. + - Números positivos, negativos, enteros o decimales. + - Operaciones soportadas: + - * / % + + Ejemplos: + "5 + 6 / 7 - 4" -> true + "5 a 6" -> false + */ + +import Foundation + +func verificarExpresionMatematica(_ expresion: String) -> Bool { + let operaciones: Set = ["+", "-", "*", "/", "%"] + let componentes = expresion.components(separatedBy: .whitespaces) + + if componentes.count % 2 == 0 { + return false // La cantidad de componentes debe ser impar (número-op- número-op-...- número) + } + + for (indice, componente) in componentes.enumerated() { + if indice % 2 == 0 { + if let _ = Double(componente) { + continue // Componente es un número válido, continuar al siguiente + } else { + return false // Componente no es un número válido + } + } else { + if operaciones.contains(componente.first ?? Character("")) { + continue // Componente es una operación válida, continuar al siguiente + } else { + return false // Componente no es una operación válida + } + } + } + + return true // La expresión es correcta +} + +let expresion1 = "5 + 6 / 7 - 4" +let expresion2 = "5 a 6" + +print(verificarExpresionMatematica(expresion1)) // true +print(verificarExpresionMatematica(expresion2)) // false