From b7b278c35729768e2713a53a142aa9f3bfe7d931 Mon Sep 17 00:00:00 2001 From: paps96 Date: Fri, 26 Aug 2022 20:34:57 -0500 Subject: [PATCH] =?UTF-8?q?Soluci=C3=B3n=20al=20reto=2034?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contents.swift | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) 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)..