From 48b0436d561afdd0cce9026dc333db533b1a21a9 Mon Sep 17 00:00:00 2001 From: LuisAlberto22 <80664920+LuisAlberto22@users.noreply.github.com> Date: Mon, 29 Aug 2022 10:24:06 -0500 Subject: [PATCH] Solucion en typescript --- .../Contents.swift | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift index 93dcaea..8be0532 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift @@ -15,3 +15,47 @@ import Foundation * - Tienes toda la información sobre los retos semanales en https://retosdeprogramacion.com/semanales2022. * */ + +/* Enunciado: Dado un array de enteros ordenado y sin repetidos, crea una función que calcule y retorne todos los que faltan entre el mayor y el menor. +* - Lanza un error si el array de entrada no es correcto.*/ + + +let missing = NumbersMissing([1,2,10,3,]); + +console.log(missing); + +function NumbersMissing(numbers: Array) : Array | string { + if (!IsOrdered(numbers) || !IsUnique(numbers)){ + return "Error"; + } + let missingNumbers : Array=[]; + for (let index = 1; index < numbers.length; index++) { + if(numbers[index - 1] + 1!= numbers[index]){ + missingNumbers.push(numbers[index - 1] + 1); + numbers.splice(index, 0,numbers[index - 1] + 1); + } + } + + return missingNumbers; +} + +function IsOrdered(numbers: Array) : boolean { + + for (let index = 1; index < numbers.length; index++) { + + if(numbers[index] < numbers[index - 1]) return false; + } + return true; +} + +function IsUnique(numbers: Array) : boolean { + let aux : Array = []; + + for (let index = 0; index < numbers.length; index++) { + if(aux.find((n) => n === numbers[index]) != null){ + return false; + } + aux.push(numbers[index]); + } + return true; +}