Skip to content

Commit

Permalink
Merge pull request #4068 from KontrolDev/main
Browse files Browse the repository at this point in the history
Reto #28 - Swift
  • Loading branch information
Roswell468 authored Jul 11, 2023
2 parents fc4c64a + 3598f2c commit 58f9349
Showing 1 changed file with 48 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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<Character> = ["+", "-", "*", "/", "%"]
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

0 comments on commit 58f9349

Please sign in to comment.