diff --git "a/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c#/ernestoalbarez.cs" "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c#/ernestoalbarez.cs" new file mode 100644 index 0000000000..7553af1e0b --- /dev/null +++ "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c#/ernestoalbarez.cs" @@ -0,0 +1,43 @@ +using System; + +/* +Reto #0: EL FAMOSO "FIZZ BUZZ" + + + * Escribe un programa que muestre por consola (con un print) los + * números de 1 a 100 (ambos incluidos y con un salto de línea entre + * cada impresión), sustituyendo los siguientes: + * - Múltiplos de 3 por la palabra "fizz". + * - Múltiplos de 5 por la palabra "buzz". + * - Múltiplos de 3 y de 5 a la vez por la palabra "fizzbuzz". +*/ + + +class Program +{ + static void Main() + { + string fizz = "Fizz"; + string buzz = "Buzz"; + string fizzBuzz = "FizzBuzz"; + + for (int i=1; i<=100; i++) + { + bool divisibleBy3 = i%3==0; + bool divisibleBy5 = i%5==0; + + if (divisibleBy3 && divisibleBy5) { + Console.WriteLine(fizzBuzz); + } + else if (divisibleBy3) { + Console.WriteLine(fizz); + } + else if (divisibleBy5) { + Console.WriteLine(buzz); + } + else { + Console.WriteLine(i); + } + } + } +} diff --git "a/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c++/ernestoalbarez.cpp" "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c++/ernestoalbarez.cpp" new file mode 100644 index 0000000000..cacd0f64d2 --- /dev/null +++ "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c++/ernestoalbarez.cpp" @@ -0,0 +1,41 @@ +#include +#include + +/* +Reto #0: EL FAMOSO "FIZZ BUZZ" + + + * Escribe un programa que muestre por consola (con un print) los + * números de 1 a 100 (ambos incluidos y con un salto de línea entre + * cada impresión), sustituyendo los siguientes: + * - Múltiplos de 3 por la palabra "fizz". + * - Múltiplos de 5 por la palabra "buzz". + * - Múltiplos de 3 y de 5 a la vez por la palabra "fizzbuzz". +*/ + +int main() +{ + std::string fizz = "Fizz"; + std::string buzz = "Buzz"; + std::string fizzBuzz = "FizzBuzz"; + + for (int i = 1; i <= 100; i++) { + bool divisibleBy3 = i % 3 == 0; + bool divisibleBy5 = i % 5 == 0; + + if (divisibleBy3 && divisibleBy5) { + std::cout << fizzBuzz << std::endl; + } + else if (divisibleBy3) { + std::cout << fizz << std::endl; + } + else if (divisibleBy5) { + std::cout << buzz << std::endl; + } + else { + std::cout << i << std::endl; + } + } + + return 0; +} diff --git "a/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c/ernestoalbarez.c" "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c/ernestoalbarez.c" new file mode 100644 index 0000000000..a00f6f7f90 --- /dev/null +++ "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/c/ernestoalbarez.c" @@ -0,0 +1,35 @@ +#include +#include + +/* +Reto #0: EL FAMOSO "FIZZ BUZZ" + + + * Escribe un programa que muestre por consola (con un print) los + * números de 1 a 100 (ambos incluidos y con un salto de línea entre + * cada impresión), sustituyendo los siguientes: + * - Múltiplos de 3 por la palabra "fizz". + * - Múltiplos de 5 por la palabra "buzz". + * - Múltiplos de 3 y de 5 a la vez por la palabra "fizzbuzz". +*/ + +void main() { + const char* fizz = "Fizz"; + const char* buzz = "Buzz"; + const char* fizzBuzz = "FizzBuzz"; + + for (int i=1; i<=100; i++) { + bool divisibleBy3 = i%3==0; + bool divisibleBy5 = i%5==0; + + if (divisibleBy3 && divisibleBy5) { + puts(fizzBuzz); + } else if (divisibleBy3) { + puts(fizz); + } else if (divisibleBy5) { + puts(buzz); + } else { + printf("%d\n", i); + } + } +} diff --git "a/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/java/ernestoalbarez.java" "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/java/ernestoalbarez.java" new file mode 100644 index 0000000000..1256c702d5 --- /dev/null +++ "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/java/ernestoalbarez.java" @@ -0,0 +1,32 @@ +/* +Reto #0: EL FAMOSO "FIZZ BUZZ" + + + * Escribe un programa que muestre por consola (con un print) los + * números de 1 a 100 (ambos incluidos y con un salto de línea entre + * cada impresión), sustituyendo los siguientes: + * - Múltiplos de 3 por la palabra "fizz". + * - Múltiplos de 5 por la palabra "buzz". + * - Múltiplos de 3 y de 5 a la vez por la palabra "fizzbuzz". +*/ + +public class ernestoalbarez { + public static void main(String[] args) { + for (int i=1; i<=100; i++) { + StringBuilder output = new StringBuilder(); + + if (i % 3 == 0) { + output.append("Fizz"); + } + if (i % 5 == 0) { + output.append("Buzz"); + } + + System.out.println( + output.length()>0 ? + output.toString() : + String.valueOf(i) + ); + } + } +} diff --git "a/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/javascript/ernestoalbarez.js" "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/javascript/ernestoalbarez.js" new file mode 100644 index 0000000000..128c9959bc --- /dev/null +++ "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/javascript/ernestoalbarez.js" @@ -0,0 +1,24 @@ +/* +Reto #0: EL FAMOSO "FIZZ BUZZ" + + + * Escribe un programa que muestre por consola (con un print) los + * números de 1 a 100 (ambos incluidos y con un salto de línea entre + * cada impresión), sustituyendo los siguientes: + * - Múltiplos de 3 por la palabra "fizz". + * - Múltiplos de 5 por la palabra "buzz". + * - Múltiplos de 3 y de 5 a la vez por la palabra "fizzbuzz". + */ + +for (let i=1; i<=100; i++) { + let output = ""; + + if (i%3 === 0) { + output += "Fizz"; + } + if (i%5 === 0) { + output += "Buzz"; + } + console.log(output || `${i}`); +} + \ No newline at end of file diff --git "a/Retos/Reto #12 - VIERNES 13 [F\303\241cil]/python/tecfer.py" "b/Retos/Reto #12 - VIERNES 13 [F\303\241cil]/python/tecfer.py" new file mode 100644 index 0000000000..9c2d8c9729 --- /dev/null +++ "b/Retos/Reto #12 - VIERNES 13 [F\303\241cil]/python/tecfer.py" @@ -0,0 +1,21 @@ +''' + Crea una función que sea capaz de detectar si existe un viernes 13 en el mes y el año indicados. + - La función recibirá el mes y el año y retornará verdadero o falso. +''' +import datetime + +def friday_13(month, year) ->bool : + try: + return datetime.date(year, month, 13).isoweekday() == 5 + except: + return False + +def main(): + + print(friday_13(6,2023)) + print(friday_13(4,2023)) + print(friday_13(10,2023)) + print(friday_13(1,2023)) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/Retos/Reto #26 - TESTING [Media]/python/Hugovrc.py b/Retos/Reto #26 - TESTING [Media]/python/Hugovrc.py new file mode 100644 index 0000000000..2d33188cc6 --- /dev/null +++ b/Retos/Reto #26 - TESTING [Media]/python/Hugovrc.py @@ -0,0 +1,24 @@ +from datetime import datetime +import unittest + +def FridayThe13th(month, year): + date = datetime(year, month, 13) + + return True if date.weekday() == 4 else False + +class test_viernes_13(unittest.TestCase): + def test_1(self): + self.assertTrue(FridayThe13th(1,2023)) + def test_2(self): + self.assertEqual(FridayThe13th(1,2025),False) + def test_3(self): + with self.assertRaises(TypeError): + FridayThe13th("01","2026") + def test_4(self): + self.assertEqual(FridayThe13th("1","2023"),True) + + +if __name__ == '__main__': + unittest.main() + + diff --git a/Retos/Reto #26 - TESTING [Media]/python/ingjavierpinilla.py b/Retos/Reto #26 - TESTING [Media]/python/ingjavierpinilla.py new file mode 100644 index 0000000000..e573d6ae4a --- /dev/null +++ b/Retos/Reto #26 - TESTING [Media]/python/ingjavierpinilla.py @@ -0,0 +1,56 @@ +import unittest +from datetime import datetime + + +def has_friday_13(year: int, month: int) -> bool: + """Esta funcion retorna verdadero si para un año y mes dado existe un viernes 13 + + Args: + year (int): + month (int): + + Returns: + bool: + """ + if not isinstance(year, int): + raise TypeError("Year invalid, enter a valid integer number") + if not isinstance(month, int): + raise TypeError("Month invalid, enter a valid integer number") + + return datetime(year, month, 13).weekday() == 4 + + +class TestIsFriday13(unittest.TestCase): + def setUp(self): + self.is_friday_13 = {"year": 2023, "month": 10} + self.not_friday_13 = {"year": 2023, "month": 7} + + def test_invalid_year(self): + with self.assertRaises(TypeError): + has_friday_13(year="1520", month=7) + + def test_invalid_month(self): + with self.assertRaises(TypeError): + has_friday_13(year=1520, month=(1520, 1)) + + def test_expected_return(self): + self.assertIsInstance(has_friday_13(year=1520, month=7), bool) + + def test_valid_friday_13(self): + self.assertIs( + has_friday_13( + year=self.is_friday_13["year"], month=self.is_friday_13["month"] + ), + True, + ) + + def test_invalid_friday_13(self): + self.assertIsNot( + has_friday_13( + year=self.not_friday_13["year"], month=self.not_friday_13["month"] + ), + True, + ) + +if __name__ == "__main__": + unittest.main() diff --git a/Retos/Reto #26 - TESTING [Media]/python/tecfer.py b/Retos/Reto #26 - TESTING [Media]/python/tecfer.py new file mode 100644 index 0000000000..29bb345ce1 --- /dev/null +++ b/Retos/Reto #26 - TESTING [Media]/python/tecfer.py @@ -0,0 +1,27 @@ +import unittest +from datetime import date + +def friday_13(month, year) -> bool : + try: + return date(year, month, 13).isoweekday() == 5 + except: + return False + +class FridayTestCase(unittest.TestCase): + + def test_is_friday_13(self): + day = friday_13(1,2023) + self.assertTrue(day) + + def test_is_not_friday_13(self): + day = friday_13(2,2023) + self.assertFalse(day) + + def test_invalid_date(self): + day = friday_13(13,2023) + self.assertFalse(day) + + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/Retos/Reto #26 - TESTING [Media]/swift/allbertoMD.swift b/Retos/Reto #26 - TESTING [Media]/swift/allbertoMD.swift new file mode 100644 index 0000000000..b8a4ac3735 --- /dev/null +++ b/Retos/Reto #26 - TESTING [Media]/swift/allbertoMD.swift @@ -0,0 +1,40 @@ +import Foundation +import XCTest + +// Se aconseja usar el script en Playground para poder usar XCTest + +func isFriday13th(month: Int, year: Int) -> Bool { + + let calendar = Calendar.current + var components = DateComponents() + + components.year = year + components.month = month + components.day = 13 + + if let date = calendar.date(from: components) { + let weekday = calendar.component(.weekday, from: date) + return weekday == 6 + } + + return false +} + +class IsFriday13thTests: XCTestCase { + + func testIsFriday13th() { + + XCTAssertTrue(isFriday13th(month: 8, year: 2021)) + XCTAssertTrue(isFriday13th(month: 1, year: 2023)) + + + XCTAssertFalse(isFriday13th(month: 5, year: 2023)) + XCTAssertFalse(isFriday13th(month: 7, year: 2025)) + } +} + +IsFriday13thTests.defaultTestSuite.run() + + + + diff --git "a/Retos/Reto #9 - HETEROGRAMA, ISOGRAMA Y PANGRAMA [F\303\241cil]/python/klimyflorez.py" "b/Retos/Reto #9 - HETEROGRAMA, ISOGRAMA Y PANGRAMA [F\303\241cil]/python/klimyflorez.py" new file mode 100644 index 0000000000..4c6a9cd003 --- /dev/null +++ "b/Retos/Reto #9 - HETEROGRAMA, ISOGRAMA Y PANGRAMA [F\303\241cil]/python/klimyflorez.py" @@ -0,0 +1,96 @@ +""" + * Crea 3 funciones, cada una encargada de detectar si una cadena de + * texto es un heterograma, un isograma o un pangrama. + * - Debes buscar la definición de cada uno de estos términos. +""" +def reemplazar_tildes(word: str): + to_replace = { + 'á': 'a', + 'é': 'e', + 'í': 'i', + 'ó': 'o', + 'ú': 'u', + } + for words in to_replace: + word = word.replace(words, to_replace[words]) + return word + +def heterograma(words: str): + ''' + Un heterograma es una palabra o frase que no contiene ninguna letra repetida. + ''' + diccionary_of_words = {} + response = '' + new_word = reemplazar_tildes(words).lower() + for i in range(len(new_word)): + if new_word[i] in diccionary_of_words: + response += 'No es un heterograma' + return response + else: + diccionary_of_words[new_word[i]] = 1 + response += 'Es un heterograma' + return response + + +def isograma(words: str): + ''' + Un isograma es una palabra o frase en la que cada letra aparece el mismo número de veces. + ''' + dictionary_of_words = {} + response = '' + new_word = reemplazar_tildes(words).lower() + for i in range(len(new_word)): + if new_word[i] in dictionary_of_words: + dictionary_of_words[new_word[i]] += 1 + else: + dictionary_of_words[new_word[i]] = 1 + + for value in dictionary_of_words.values(): + if value > 1: + response += 'No es un isograma' + return response + response += 'Es un isograma' + return response + + +def pangrama(words: str): + ''' + Un pangrama es una frase en la que aparecen todas las letras del abecedario + ''' + new_word = reemplazar_tildes(words).lower() + alphabet = { + 'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0, 'f': 0, + 'g': 0, 'h': 0, 'i': 0, 'j': 0, 'k': 0, 'l': 0, + 'm': 0, 'n': 0, 'ñ': 0, 'o': 0, 'p': 0, 'q': 0, + 'r': 0, 's': 0, 't': 0, 'u': 0, 'v': 0, 'w': 0, + 'x': 0, 'y': 0, 'z': 0 + } + response = '' + for word in range(len(new_word)): + if new_word[word] in alphabet: + alphabet[new_word[word]] += 1 + for value in alphabet.values(): + if value == 0: + response += 'No es un pangrama' + return response + response += 'Es un pangrama' + return response + +print(pangrama("El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja")) +print(pangrama("Jovencillo emponzoñado de whisky, qué figurota exhibe. Cadáveres de ñus, paz y asombro, ¿qué más añadir?")) +print(pangrama("El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío, añoraba a su querido cachorro.")) +print(pangrama("Victimá")) + + +print(isograma("Víctima")) +print(isograma("Políglota")) +print(isograma("Abstemio")) +print(isograma("Desoxirribonucleico")) +print(isograma("Hipopótamo")) +print(isograma("Benzodiacepina")) + +print(heterograma("Víctima")) +print(heterograma("Wágner")) +print(heterograma("Queso")) +print(heterograma("Néctar")) +print(heterograma("Lánguido"))