diff --git "a/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/java/IASR1987.java" "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/java/IASR1987.java" new file mode 100644 index 0000000000..bb534ec3bf --- /dev/null +++ "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/java/IASR1987.java" @@ -0,0 +1,22 @@ +package reto_00_FIZZBUZZ; + +public class IASR1987 { + + public static void main(String[] args) { + // TODO Auto-generated method stub + for(int i=1; i<=100;i++) { + if(i%3==0) { + if(i%5==0) { + System.out.println("FIZZBUZZ"); + }else { + System.out.println("FIZZ"); + } + }else if(i%5==0) { + System.out.println("BUZZ"); + }else { + System.out.println(i); + } + } + } + +} diff --git "a/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/python/luisramos98.py" "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/python/luisramos98.py" new file mode 100644 index 0000000000..d8678cd53a --- /dev/null +++ "b/Retos/Reto #0 - EL FAMOSO FIZZ BUZZ [F\303\241cil]/python/luisramos98.py" @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 + +for i in range(1,101): + if((i%3) == 0 and (i%5) == 0): + print(f"{i} - fizzbuzz") + + elif((i%3) == 0): + print(f"{i} - fizz") + + elif((i%5 == 0)): + print(f"{i} - buzz") + diff --git "a/Retos/Reto #1 - EL LENGUAJE HACKER [F\303\241cil]/java/IASR1987.java" "b/Retos/Reto #1 - EL LENGUAJE HACKER [F\303\241cil]/java/IASR1987.java" new file mode 100644 index 0000000000..2a284da600 --- /dev/null +++ "b/Retos/Reto #1 - EL LENGUAJE HACKER [F\303\241cil]/java/IASR1987.java" @@ -0,0 +1,34 @@ +package reto_01_LenguajeHacker; + +import java.util.Scanner; + +public class IASR1987 { + + public static void main(String[] args) { + // TODO Auto-generated method stub + Scanner teclado = new Scanner(System.in); + + char lista[] = {' ','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; + String leet[] = {" ","4", "l3", "[", ")", "3",".=","&&","-","1",",.","-","1","/A./", + "-/","0","-*","(a,)","l2","5","7","(o)","-/","-/","-","j","2", + "o","L","R","E","A","S","b","T","B","g"}; + System.out.println("Introduce una frase para traducirla a lenguaje"); + String frase= teclado.nextLine(); + + boolean letraEncontrada; + + for(int i=0; i|', 'l':'|_', 'm':'JVI', 'n':'^/', 'o':'0', 'p':'|*', 'q':'(_,)', 'r':'|2', 's':'5', 't':'7', 'u':'v', 'v':'\/', 'w':'\/\/', 'x':'><', 'y':'j', 'z':'2'} + +palabra = input('Ingresa una frase sin tilde: ') + +palabra_low = palabra.lower() + + +leet_code='' + +for char in palabra_low: + + for key, valor in diccionario.items(): + + if(char == key): + leet_code+=valor + break + +print(leet_code) diff --git a/Retos/Reto #2 - EL PARTIDO DE TENIS [Media]/java/IASR1987.java b/Retos/Reto #2 - EL PARTIDO DE TENIS [Media]/java/IASR1987.java new file mode 100644 index 0000000000..14ad3a35ce --- /dev/null +++ b/Retos/Reto #2 - EL PARTIDO DE TENIS [Media]/java/IASR1987.java @@ -0,0 +1,64 @@ +/* + * Escribe un programa que muestre cómo transcurre un juego de tenis y quién lo ha ganado. + * El programa recibirá una secuencia formada por "P1" (Player 1) o "P2" (Player 2), según quien + * gane cada punto del juego. + * + * - Las puntuaciones de un juego son "Love" (cero), 15, 30, 40, "Deuce" (empate), ventaja. + * - Ante la secuencia [P1, P1, P2, P2, P1, P2, P1, P1], el programa mostraría lo siguiente: + * 15 - Love + * 30 - Love + * 30 - 15 + * 30 - 30 + * 40 - 30 + * Deuce + * Ventaja P1 + * Ha ganado el P1 + * - Si quieres, puedes controlar errores en la entrada de datos. + * - Consulta las reglas del juego si tienes dudas sobre el sistema de puntos. + */ +package reto_02_ElPartidoDeTenis; + +public class IASR1987 { + + public static void main(String[] args) { + // TODO Auto-generated method stub + int P1=0; + int P2=0; + String[] secuencia= {"P1","P1","P1","P2","P2","P2","P1","P2","P2","P1","P1","P1"}; + String[] puntuacion= {"love","15","30","40","Deuce","Ventaja","Ganaste"}; + boolean ganador= false; + + for(int i=0;ganador==false;i++) { + + if(secuencia[i].equals("P1")) { + P1++; + }else { + P2++; + } + + if(P1<4 && P2<4) { + System.out.println(puntuacion[P1]+"--"+puntuacion[P2]); + }else if(P1>=4 || P2>=4){ + if(P1>=(P2+2)) { + System.out.println("Ganador Jugador 1"); + ganador=true; + }else if(P2>=(P1+2)) { + System.out.println("Ganador Jugador 2"); + ganador=true; + }else if(P1==P2) { + System.out.println("Deuce"); + }else { + if(P1>P2) { + System.out.println("Ventaja jugador 1"); + }else { + System.out.println("Ventaja Jugador 2"); + } + } + } + + System.out.println("Puntuacion 1 = " + P1 + " Puntuacion 2 = "+ P2); + + } + } + +} diff --git a/Retos/Reto #2 - EL PARTIDO DE TENIS [Media]/python/luisramos98.py b/Retos/Reto #2 - EL PARTIDO DE TENIS [Media]/python/luisramos98.py new file mode 100644 index 0000000000..79e7d2ace0 --- /dev/null +++ b/Retos/Reto #2 - EL PARTIDO DE TENIS [Media]/python/luisramos98.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 + +#secuencia = ['P1', 'P1', 'P2', 'P2', 'P1', 'P2', 'P1', 'P1'] +#secuencia = ['P2', 'P2', 'P1', 'P1', 'P2', 'P1', 'P2', 'P2'] +#secuencia = ['P2', 'P2', 'P1', 'P1', 'P2', 'P1', 'P2', 'P1','P2','P1','P2','P2'] + +secuencia = [] +puntuaciones = ['Love','15','30','40'] +resultados = [] +end_game = False + +p1_historial = ['Love'] +p2_historial = ['Love'] + +p1_points = 0 +p2_points = 0 + +while end_game == False: + play = input('Ingrese un P1 si es player 1 y un P2 si es un player 2: ') + + if play == 'P1': + p1_points += 1 + if p1_points > 3: + if p2_historial[-1] == '40' and p1_historial[-1] == '40': + p1_historial.append('Deuce') + if p1_historial[-1] == 'Ventaja P1' and abs(p1_points - p2_points) == 2: + p1_historial.append('Ha Ganado P1') + #resultados.append(p1_historial[-1]) + end_game = True + elif p2_historial[-1] == 'Ventaja P2': + p2_historial.append('Deuce') + p1_historial.append('Deuce') + elif p1_historial[-1] == 'Deuce': + p1_historial.append('Ventaja P1') + else: + p1_historial.append(puntuaciones[p1_points]) + else: + p2_points += 1 + + if p2_points > 3: + if p2_historial[-1] == '40' and p1_historial[-1] == '40': + p2_historial.append('Deuce') + if p2_historial[-1] == 'Ventaja P2' and abs(p1_points - p2_points) == 2: + p2_historial.append('Ha Ganado P2') + #resultados.append(p2_historial[-1]) + end_game = True + elif p1_historial[-1] == 'Ventaja P1': + p2_historial.append('Deuce') + p1_historial.append('Deuce') + elif p2_historial[-1] == 'Deuce': + p2_historial.append('Ventaja P2') + + else: + p2_historial.append(puntuaciones[p2_points]) + + if p1_historial[-1] == '40' and p2_historial[-1] == '40' or p1_historial[-1] == 'Deuce' and p2_historial[-1] == 'Deuce': + #print(f'Deuce') + resultados.append('Deuce') + elif p1_historial[-1] == 'Ventaja P1': + #print(p1_historial[-1]) + resultados.append(p1_historial[-1]) + elif p1_historial[-1] == 'Ha Ganado P1': + #print(p1_historial[-1]) + resultados.append(p1_historial[-1]) + elif p2_historial[-1] == 'Ventaja P2': + #print(p2_historial[-1]) + resultados.append(p2_historial[-1]) + elif p2_historial[-1] == 'Ha Ganado P2': + #print(p2_historial[-1]) + resultados.append(p2_historial[-1]) + else: + #print(f'{p1_historial[-1]} - {p2_historial[-1]}') + resultados.append(f'{p1_historial[-1]} - {p2_historial[-1]}') + + + +for resultado in resultados: + print(resultado) + + + + diff --git "a/Retos/Reto #3 - EL GENERADOR DE CONTRASE\303\221AS [Media]/python/luisramos98.py" "b/Retos/Reto #3 - EL GENERADOR DE CONTRASE\303\221AS [Media]/python/luisramos98.py" new file mode 100644 index 0000000000..3788082763 --- /dev/null +++ "b/Retos/Reto #3 - EL GENERADOR DE CONTRASE\303\221AS [Media]/python/luisramos98.py" @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 + +''' +/* + * Escribe un programa que sea capaz de generar contraseñas de forma aleatoria. + * Podrás configurar generar contraseñas con los siguientes parámetros: + * - Longitud: Entre 8 y 16. + * - Con o sin letras mayúsculas. + * - Con o sin números. + * - Con o sin símbolos. + * (Pudiendo combinar todos estos parámetros entre ellos) + */ +''' +import random + +limit_sup = 0 +limit_inf = 0 + +in_range = False +longitud = 0 + +is_mayusculas = False +is_numeros = False +is_simbolos = False + +mayusculas = [chr(i) for i in range(65, 91)] +minusculas = [chr(i) for i in range(97, 123)] +numeros = [chr(i) for i in range(48, 58)] +simbolos = [chr(i) for i in range(33, 48)] + [chr(i) for i in range(58, 64)] + [chr(i) for i in range(91, 97)] + [chr(i) for i in range(123, 127)] + +contraseña = '' + +while in_range == False: + longitud = int(input("\n[i] Ingrese la longitud que desea para su contraseña el valor tiene que estár entre 8 y 16 caracteres: ")) + + in_range = True if not ( longitud < 8 or longitud > 16 ) else False + + if not in_range: + print('\n\t[!] Solo se acepta una cantidad de 8 hasta 16 caracteres en la contraseña') + +is_mayusculas = False if input("\n\t[i] Desea MAYÚSCULAS en su password (Si/No): ").lower() != 'si' else True +is_numeros = False if input("\n\t[i] Desea NÚMEROS en su password (Si/No): ").lower() != 'si' else True +is_simbolos = False if input("\n\t[i] Desea SÍMBOLOS en su password (Si/No): ").lower() != 'si' else True + + +i = 0 +caracteres = minusculas.copy() +caracteres += mayusculas if is_mayusculas else [] +caracteres += numeros if is_numeros else [] +caracteres += simbolos if is_simbolos else [] + +while i < longitud: + + limit_sup = len(caracteres) - 1 + limit_inf = 0 + + contraseña += caracteres[random.randint(limit_inf,limit_sup)] + i += 1 + + + +print(f'\n[+] Se ha generado la siguiente contraseña: {contraseña}') + + + diff --git a/Retos/Reto #4 - PRIMO, FIBONACCI Y PAR [Media]/python/luisramos98.py b/Retos/Reto #4 - PRIMO, FIBONACCI Y PAR [Media]/python/luisramos98.py new file mode 100644 index 0000000000..2f8a30969d --- /dev/null +++ b/Retos/Reto #4 - PRIMO, FIBONACCI Y PAR [Media]/python/luisramos98.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +''' +/* + * Escribe un programa que, dado un número, compruebe y muestre si es primo, fibonacci y par. + * Ejemplos: + * - Con el número 2, nos dirá: "2 es primo, fibonacci y es par" + * - Con el número 7, nos dirá: "7 es primo, no es fibonacci y es impar" + */ + ''' +import math + +numero = int(input("\n[i] Ingrese un número para comprobar si es primo, fibonacci o par: ")) + +es_primo = all((numero % i) != 0 for i in range(2, int(numero ** 0.5) + 1)) + +es_par = True if (numero % 2) == 0 else False + +es_cuadrado_perfecto = lambda n: True if (int(math.sqrt(n)) * int(math.sqrt(n))) == n else False +es_fibonacci = True if es_cuadrado_perfecto(5 * numero * numero + 4) or es_cuadrado_perfecto(5 * numero * numero - 4) else False + +resultados = [] + +resultados.append('primo' if es_primo else 'no es primo') +resultados.append('par' if es_par else 'impar') +resultados.append('fibonacci' if es_fibonacci else 'no es fibonacci') + +respuesta = f'\n[+] {numero} es ' + +for resultado in resultados: + + if resultados[-1] == resultado: + respuesta += f'y {resultado}.' + break + else: + respuesta += f'{resultado}, ' + + +print(respuesta) + + + diff --git a/Retos/Reto #6 - PIEDRA, PAPEL, TIJERA, LAGARTO, SPOCK [Media]/python/luisramos98.py b/Retos/Reto #6 - PIEDRA, PAPEL, TIJERA, LAGARTO, SPOCK [Media]/python/luisramos98.py new file mode 100644 index 0000000000..7ca49ee416 --- /dev/null +++ b/Retos/Reto #6 - PIEDRA, PAPEL, TIJERA, LAGARTO, SPOCK [Media]/python/luisramos98.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 + +''' +/* + * Crea un programa que calcule quien gana más partidas al piedra, + * papel, tijera, lagarto, spock. + * - El resultado puede ser: "Player 1", "Player 2", "Tie" (empate) + * - La función recibe un listado que contiene pares, representando cada jugada. + * - El par puede contener combinaciones de "🗿" (piedra), "📄" (papel), + * "✂️" (tijera), "🦎" (lagarto) o "🖖" (spock). + * - Ejemplo. Entrada: [("🗿","✂️"), ("✂️","🗿"), ("📄","✂️")]. Resultado: "Player 2". + * - Debes buscar información sobre cómo se juega con estas 5 posibilidades. + */ +''' + +''' +Reglas del juego + +- Piedra aplasta tijeras. +- Tijeras cortan papel. +- Papel cubre a la piedra. +- Piedra aplasta lagarto. +- Lagarto envenena a Spock. +- Spock destroza tijeras. +- Tijeras decapitan lagarto. +- Lagarto come papel. +- Papel refuta a Spock. +- Spock vaporiza la piedra. + +''' + +import random + +opciones = ['piedra','papel','tijera','lagarto','spock'] + +fortalezas = { + 'piedra':{'tijera','lagarto'}, + 'papel':{'piedra','spock'}, + 'tijera':{'papel','lagarto'}, + 'lagarto':{'papel','spock'}, + 'spock':{'tijera','piedra'} +} + +p1 = '' +p2 = '' +jugadas = [] +resultado = [] +fin_del_juego = False + + +def op_correct(player): + + return True if [True for op in opciones if op == player ] else False + +def setear_jugador(numero): + + op = False + if not numero == 2: + while op == False: + + player = input(f'\n[i] Player {numero}: Ingresa una opcion: ') + op = op_correct(player) + + if not op: + print('\n\t[!] Ingrese solo las opciones válidas: piedra, papel, tijera, lagarto, spock') + + return player + + return random.choice(opciones) + + +def setear_resultado(p1,p2): + for opcion,fortaleza in fortalezas.items(): + + if p1 == opcion: + if p1 == p2: + return None + + if p2 in fortaleza: + return 'Player 1' + else: + return 'Player 2' + + +def partida(): + + p1 = setear_jugador(1) + + p2 = setear_jugador(2) + + print(f'\n[i] Máquina: {p2}') + + resultado.append(setear_resultado(p1,p2)) + jugadas.append((p1,p2)) + + +while fin_del_juego == False: + if len(resultado) < 2: + partida() + else: + c1 = 0 + c2 = 0 + for r in resultado: + + c1 += 1 if r == 'Player 1' else 0 + c2 += 1 if r == 'Player 2' else 0 + + if c1 == 2 or c2 == 2: + # Entrada: [("🗿","✂️"), ("✂️","🗿"), ("📄","✂️")]. Resultado: "Player 2". + print(f'\n[+] Entrada: {jugadas}. Resultado: {resultado[-1]}') + fin_del_juego = True + else: + partida() + + + + + + diff --git a/Retos/Reto #7 - EL SOMBRERO SELECCIONADOR [Media]/python/luisramos98.py b/Retos/Reto #7 - EL SOMBRERO SELECCIONADOR [Media]/python/luisramos98.py new file mode 100644 index 0000000000..ec6bf1e811 --- /dev/null +++ b/Retos/Reto #7 - EL SOMBRERO SELECCIONADOR [Media]/python/luisramos98.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 + +''' +/* + * Crea un programa que simule el comportamiento del sombrero seleccionador del + * universo mágico de Harry Potter. + * - De ser posible realizará 5 preguntas (como mínimo) a través de la terminal. + * - Cada pregunta tendrá 4 respuestas posibles (también a selecciona una a través de terminal). + * - En función de las respuestas a las 5 preguntas deberás diseñar un algoritmo que + * coloque al alumno en una de las 4 casas de Hogwarts (Gryffindor, Slytherin , Hufflepuff y Ravenclaw) + * - Ten en cuenta los rasgos de cada casa para hacer las preguntas y crear el algoritmo seleccionador. + * Por ejemplo, en Slytherin se premia la ambición y la astucia. + */ +''' + +import random + + +preguntas = [ + { + "pregunta": "¿Cuál de estas cualidades te identifica más?", + "opciones": {"Gryffindor":"Valiente", "Slytherin":"Ambicioso/a", "Hufflepuff":"Inteligente", "Ravenclaw":"Leal"} + }, + { + "pregunta": "¿Qué prefieres hacer en tu tiempo libre?", + "opciones": {"Gryffindor":"Explorar lugares emocionantes y desconocidos", "Slytherin":"Trabajar en proyectos para alcanzar tus metas personales", "Hufflepuff":"Leer y aprender sobre diferentes temas interesantes", "Ravenclaw":"Pasado tiempo con amigos y seres queridos"} + }, + { + "pregunta": "¿Qué tipo de desafío te emociona más?", + "opciones": {"Gryffindor":"Superar obstáculos físicos y demostrar tu valentía", "Slytherin":"Alcanzar objetivos ambiciosos y destacarte entre los demás", "Hufflepuff":"Resolver acertijos y enigmas complicados utilizando tu ingenio", "Ravenclaw":"Apoyar a tus amigos y seres queridos en momentos difíciles"} + }, + { + "pregunta": "¿Qué cualidad valoras más en un líder?", + "opciones": {"Gryffindor":"Audacia y determinación para enfrentar cualquier desafío", "Slytherin":"Ambición y visión para alcanzar grandes metas", "Hufflepuff":"Inteligencia y sabiduría para tomar decisiones informadas", "Ravenclaw":"Lealtad y empatía para cuidar de quienes te rodean"} + }, + { + "pregunta": "Si tuvieras que elegir una palabra para definirte a ti mismo/a, ¿cuál sería?", + "opciones": {"Gryffindor":"Audaz", "Slytherin":"Astuto/a", "Hufflepuff":"Sabio/a", "Ravenclaw":"Leal"} + } +] + + + +class SombreroSeleccionador: + + def __init__(self, preguntas): + self.preguntas = preguntas + self.resultado = [] + + @staticmethod + def obtener_clave(diccionario,valor): + + for key,value in diccionario.items(): + + if valor == value: + return key + + @staticmethod + def obtener_clave_resultado(diccionario,valor): + + clave = [] + + for key,value in diccionario.items(): + + if valor == value: + clave.append(key) + + if len(clave) > 1: + return clave[random.randint(0,len(clave)-1)] + else: + return clave[0] + + def asignar_casa(self): + + casas_Hogwarts = ['Gryffindor','Slytherin', 'Hufflepuff', 'Ravenclaw'] + casa_resultado = {} + + for r in self.resultado: + for casa in casas_Hogwarts: + count = self.resultado.count(casa) + casa_resultado.update({casa:count}) + + valor_max = max(casa_resultado.values()) + + return self.obtener_clave_resultado(casa_resultado,valor_max) + + def hacer_preguntas(self): + respuesta = 0 + + for p in self.preguntas: + i = 0 + op_list = [] + + while True: + + print(f'\n[+] {p["pregunta"]}\n') + + for op in p['opciones'].values(): + i+=1 + op_list.append(op) + print(f'{i} - {op}') + + try: + respuesta = int(input("\n[i] Digite el número de la respuesta: ")) - 1 + llave = self.obtener_clave(p['opciones'],op_list[respuesta]) + self.resultado.append(llave) + break + except IndexError: + print('\n[Error!] Ingrese un valor entre 1 al 4') + i = 0 + except ValueError: + print('\n[Error!] Solo se aceptan valores numéricos de entre el 1 al 4') + i = 0 + + casa = self.asignar_casa() + + print('\n' + '='*90 + f'\n[+] FELICITACIONES PERTENECES A LA CASA DE !{casa}¡\n' + '='*90 ) + + + @property + def get_resultado(self): + return self.resultado + + + + +sombrero = SombreroSeleccionador(preguntas) +sombrero.hacer_preguntas()