diff --git a/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift index 93dcaea..ee2af96 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift @@ -15,3 +15,76 @@ import Foundation * - Tienes toda la información sobre los retos semanales en https://retosdeprogramacion.com/semanales2022. * */ + +private func arregloOrdenado(_ n: Int) -> [Int] { + return Array(Set((0...n).map { _ in .random(in: 0...n)})).sorted() +} + +private func arregloDesordenado(_ n: Int) -> [Int] { + return Array(Set((0...n).map { _ in .random(in: 0...n)})) +} + +private func numerosFaltantes(_ arr: [Int]) -> [Int]? { + + enum caseStatus { + case arregloVacio + case arregloUnElemento + case arregloDesordenado + case arregloValido + case arregloDesconocido + } + + var statusDelArreglo: caseStatus { + switch true { + case arr.isEmpty: + print("El arreglo esta vacio") + return caseStatus.arregloVacio + case arr.count == 1: + print("El arreglo solo tiene un elemento") + return caseStatus.arregloUnElemento + case arr != arr.sorted(): + print("El arreglo esta desordenado") + return caseStatus.arregloDesordenado + case arr == arr.sorted(): + print("El arreglo es valido") + return caseStatus.arregloValido + default: + return caseStatus.arregloDesconocido + } + } + + guard statusDelArreglo == caseStatus.arregloValido else { + return nil + } + + var counter = 0 + var missingNumbers = [Int]() + + while counter < arr.count { + + guard (counter + 1) != arr.count else { + break + } + + guard (arr[counter + 1] - arr[counter]) == 1 else { + let arr = Array((arr[counter] + 1)..