From edcb7a6d961653fd60a2796057d2cde25fca2bbe Mon Sep 17 00:00:00 2001 From: EsAlco <90135660+EsAlco@users.noreply.github.com> Date: Mon, 1 Aug 2022 17:49:55 +0200 Subject: [PATCH 1/6] Reto #30 --- .../Contents.swift | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift index f7655da..d398c8d 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift @@ -25,3 +25,39 @@ import Foundation * - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación. * */ + + +func asterisksTextBox(text: String) { + // Dividimos en un array de string cada palabra, haciendo la división por espacios + let textWordToWord = text.components(separatedBy: " ") + + // Calculamos el tamaño da cada palabra, las ordenamos de mayor a menor y nos quedamos con la mayor. + let longestWord = textWordToWord.map{$0.count}.sorted(by: >)[0] + 4 + + // Creamos la fila de asteriscos inicial y final. + var asterisksLine = "*" + while asterisksLine.count < longestWord { + asterisksLine += "*" + } + + // Dibujamos la primera fila de asteriscos. + print(asterisksLine) + + // Creamos el resto de filas. + for word in textWordToWord { + var wordText = word + // Rellenamos de espacios hasta que mida cada palabra un caracter más que la más larga, incluida ésta. + while wordText.count < longestWord - 3 { + wordText += " " + } + // Le añadimos el asterisco final + wordText += "*" + print("* \(wordText)") + } + + // Dibujamos la última fila de asteriscos. + print(asterisksLine) +} + +asterisksTextBox(text: "¡Hola mundo! ¿Cómo estás?") + From 7004d559ed5556f44d8769b66980e617f4f75c11 Mon Sep 17 00:00:00 2001 From: EsAlco <90135660+EsAlco@users.noreply.github.com> Date: Mon, 1 Aug 2022 17:54:38 +0200 Subject: [PATCH 2/6] =?UTF-8?q?Elimino=20la=20llamada=20a=20la=20funci?= =?UTF-8?q?=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Pages/Challenge30.xcplaygroundpage/Contents.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift index d398c8d..17f23d4 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift @@ -59,5 +59,4 @@ func asterisksTextBox(text: String) { print(asterisksLine) } -asterisksTextBox(text: "¡Hola mundo! ¿Cómo estás?") From 0caba063e9fb2dd6ac0c2331f78bdcc32c43907d Mon Sep 17 00:00:00 2001 From: EsAlco <90135660+EsAlco@users.noreply.github.com> Date: Fri, 5 Aug 2022 01:07:51 +0200 Subject: [PATCH 3/6] First solution --- .../Contents.swift | 12 +++-- .../Contents.swift | 27 ++++++++-- .../Contents.swift | 29 +++++++--- .../Contents.swift | 54 ++++++++++++------- .../Contents.swift | 38 +++++++++++++ 5 files changed, 126 insertions(+), 34 deletions(-) create mode 100644 WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift diff --git a/WeeklyChallenge2022.playground/Pages/Challenge0.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge0.xcplaygroundpage/Contents.swift index c0d2703..dc579e8 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge0.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge0.xcplaygroundpage/Contents.swift @@ -21,7 +21,13 @@ import Foundation */ for index in 1...100 { - let divisibleByThree = index % 3 == 0 - let divisibleByFive = index % 5 == 0 - print("\((divisibleByThree && divisibleByFive) ? "fizzbuzz" : (divisibleByThree ? "fizz" : (divisibleByFive ? "buzz" : index.description)))") + print(index % 3 == 0 && index % 5 == 0 ? "fizzbuzz" : index % 3 == 0 ? "fizz" : index % 5 == 0 ? "buzz" : "\(index)") } + +//Mouredev solution +// +//for index in 1...100 { +// let divisibleByThree = index % 3 == 0 +// let divisibleByFive = index % 5 == 0 +// print("\((divisibleByThree && divisibleByFive) ? "fizzbuzz" : (divisibleByThree ? "fizz" : (divisibleByFive ? "buzz" : index.description)))") +//} diff --git a/WeeklyChallenge2022.playground/Pages/Challenge1.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge1.xcplaygroundpage/Contents.swift index d123250..51fcbc6 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge1.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge1.xcplaygroundpage/Contents.swift @@ -20,8 +20,29 @@ import Foundation * */ -func isAnagram(wordOne: String, wordTwo: String) -> Bool { - return wordOne.lowercased() == wordTwo.lowercased() ? false : wordOne.lowercased().sorted().elementsEqual(wordTwo.lowercased().sorted()) +func anagramTester (firstWord: String, secondWord: String) -> Bool { + var result: Bool = true +// Comprobamos que ambas palabras no son la misma, si no false + if firstWord.lowercased() == secondWord.lowercased() { + result = false + } else { + // Comprobamos que contienen las mismas letras, si no false + for character in firstWord.lowercased() { + if secondWord.lowercased().contains(character) == false { + result = false + } + } + } + print(result) + return result } -print(isAnagram(wordOne: "amor", wordTwo: "roma")) +anagramTester(firstWord: "Roma", secondWord: "amor") + +//Muuredev Solution +// +//func isAnagram(wordOne: String, wordTwo: String) -> Bool { +// return wordOne.lowercased() == wordTwo.lowercased() ? false : wordOne.lowercased().sorted().elementsEqual(wordTwo.lowercased().sorted()) +//} +// +//print(isAnagram(wordOne: "amor", wordTwo: "roma")) diff --git a/WeeklyChallenge2022.playground/Pages/Challenge2.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge2.xcplaygroundpage/Contents.swift index 34a1893..d74d7f6 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge2.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge2.xcplaygroundpage/Contents.swift @@ -19,13 +19,26 @@ import Foundation * */ -var n0 = 0 -var n1 = 1 -(1...50).forEach { _ in - print(n0) - let fib = n0 + n1 - n0 = n1 - n1 = fib -} + + + + + + + + + +//Mouredev Solution +// +//var n0 = 0 +//var n1 = 1 +// +//(1...50).forEach { _ in +// print(n0) +// +// let fib = n0 + n1 +// n0 = n1 +// n1 = fib +//} diff --git a/WeeklyChallenge2022.playground/Pages/Challenge3.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge3.xcplaygroundpage/Contents.swift index 054e0b3..aa8a901 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge3.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge3.xcplaygroundpage/Contents.swift @@ -18,23 +18,37 @@ import Foundation * */ -func isPrime(number: Int) -> Bool { - - if number < 2 { - return false - } - - for i in 2 ..< number { - if number % i == 0 { - return false - } - } - - return true -} - -(1...100).forEach { number in - if isPrime(number: number) { - print(number) - } -} + + + + + + + + + + + + +//Mouredev Solution +// +//func isPrime(number: Int) -> Bool { +// +// if number < 2 { +// return false +// } +// +// for i in 2 ..< number { +// if number % i == 0 { +// return false +// } +// } +// +// return true +//} +// +//(1...100).forEach { number in +// if isPrime(number: number) { +// print(number) +// } +//} diff --git a/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..25941f5 --- /dev/null +++ b/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift @@ -0,0 +1,38 @@ +import Foundation + +/* + * Reto #31 + * AÑOS BISIESTOS + * Fecha publicación enunciado: 01/08/22 + * Fecha publicación resolución: 08/08/22 + * Dificultad: FÁCIL + * + * Enunciado: Crea una función que imprima los 30 próximos años bisiestos siguientes a uno dado. + * - Utiliza el menor número de líneas para resolver el ejercicio. + * + * Información adicional: + * - Usa el canal de nuestro discord (https://mouredev.com/discord) "🔁reto-semanal" para preguntas, dudas o prestar ayuda a la comunidad. + * - Puedes hacer un Fork del repo y una Pull Request al repo original para que veamos tu solución aportada. + * - Revisaré el ejercicio en directo desde Twitch el lunes siguiente al de su publicación. + * - Subiré una posible solución al ejercicio el lunes siguiente al de su publicación. + * + */ + +func nextThirtyLeapYears (initialYear: Int) { + var leapYears: [Int] = [] + var yearConsult = initialYear + + while leapYears.count < 30 { + if yearConsult % 4 == 0 { + if yearConsult % 100 != 0 { + leapYears.append(yearConsult) + } else if yearConsult % 400 == 0 { + leapYears.append(yearConsult) + } + } + yearConsult += 1 + } + print(leapYears) +} + +nextThirtyLeapYears(initialYear: 1928) From d1f5dff962e3e4aadfa13ad25c354ffda9bf23aa Mon Sep 17 00:00:00 2001 From: EsAlco <90135660+EsAlco@users.noreply.github.com> Date: Fri, 5 Aug 2022 11:18:15 +0200 Subject: [PATCH 4/6] =?UTF-8?q?Refactorizaci=C3=B3n=20del=20c=C3=B3digo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Challenge31.xcplaygroundpage/Contents.swift | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift index 25941f5..ccb3075 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift @@ -23,16 +23,17 @@ func nextThirtyLeapYears (initialYear: Int) { var yearConsult = initialYear while leapYears.count < 30 { - if yearConsult % 4 == 0 { - if yearConsult % 100 != 0 { - leapYears.append(yearConsult) - } else if yearConsult % 400 == 0 { - leapYears.append(yearConsult) - } + if isLeapYear(year: yearConsult) { + leapYears.append(yearConsult) } yearConsult += 1 } print(leapYears) } -nextThirtyLeapYears(initialYear: 1928) +// Función que evalua si el número es bisiesto +func isLeapYear (year: Int) -> Bool { + return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) +} + +nextThirtyLeapYears(initialYear: 1989) From 7e6565957fc2631d19e675f937fabcc13f3ab0b7 Mon Sep 17 00:00:00 2001 From: EsAlco <90135660+EsAlco@users.noreply.github.com> Date: Fri, 5 Aug 2022 16:57:32 +0200 Subject: [PATCH 5/6] =?UTF-8?q?Refactorizaci=C3=B3n=20al=20c=C3=B3digo=20m?= =?UTF-8?q?=C3=ADnimo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Challenge31.xcplaygroundpage/Contents.swift | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift index ccb3075..8c9d4e8 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift @@ -18,12 +18,12 @@ import Foundation * */ + func nextThirtyLeapYears (initialYear: Int) { - var leapYears: [Int] = [] - var yearConsult = initialYear + var leapYears: [Int] = [], yearConsult = initialYear while leapYears.count < 30 { - if isLeapYear(year: yearConsult) { + if (yearConsult % 4 == 0 && (yearConsult % 100 != 0 || yearConsult % 400 == 0)) { leapYears.append(yearConsult) } yearConsult += 1 @@ -31,9 +31,3 @@ func nextThirtyLeapYears (initialYear: Int) { print(leapYears) } -// Función que evalua si el número es bisiesto -func isLeapYear (year: Int) -> Bool { - return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) -} - -nextThirtyLeapYears(initialYear: 1989) From b6c2a3ff016e24bbfeb2db41c1fef50c9532bac8 Mon Sep 17 00:00:00 2001 From: EsAlco <90135660+EsAlco@users.noreply.github.com> Date: Sun, 7 Aug 2022 20:20:14 +0200 Subject: [PATCH 6/6] Code refactoring. --- .../Pages/Challenge31.xcplaygroundpage/Contents.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift b/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift index 8c9d4e8..a360279 100644 --- a/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift +++ b/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift @@ -30,4 +30,3 @@ func nextThirtyLeapYears (initialYear: Int) { } print(leapYears) } -