Skip to content

Commit

Permalink
Enunciado Reto #2
Browse files Browse the repository at this point in the history
  • Loading branch information
mouredev committed Jan 9, 2023
1 parent 35a2270 commit 9ec2857
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 2 deletions.
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@
Aquí encontrarás el listado de retos, su fecha de publicación, dificultad y enunciado del ejercicio. En su directorio podrás consultar las distintas correcciones del ejercicio agrupadas por lenguaje de programación.

* **#0** - 26/12/22 | Fácil | [`EL FAMOSO "FIZZ BUZZ"`](./Retos/Reto%20%230%20-%20EL%20FAMOSO%20FIZZ%20BUZZ%20%5BFácil%5D/ejercicio.md) | Correcciones: [[EN VÍDEO](https://youtu.be/2iW4NCzOAxs)] [[MI SOLUCIÓN](./Retos/Reto%20%230%20-%20EL%20FAMOSO%20FIZZ%20BUZZ%20%5BFácil%5D/python/mouredev.py)] [[COMUNIDAD](./Retos/Reto%20%230%20-%20EL%20FAMOSO%20FIZZ%20BUZZ%20%5BFácil%5D)]
* **#1** - 02/01/23 | Fácil | [`EL "LENGUAJE HACKER"`](./Retos/Reto%20%231%20-%20EL%20LENGUAJE%20HACKER%20%5BFácil%5D/ejercicio.md) | Último reto publicado
* **#1** - 02/01/23 | Fácil | [`EL "LENGUAJE HACKER"`](./Retos/Reto%20%231%20-%20EL%20LENGUAJE%20HACKER%20%5BFácil%5D/ejercicio.md) | Correcciones: [[MI SOLUCIÓN](./Retos/Reto%20%231%20-%20EL%20LENGUAJE%20HACKER%20%5BFácil%5D/python/mouredev.py)] [[COMUNIDAD](./Retos/Reto%20%231%20-%20EL%20LENGUAJE%20HACKER%20%5BFácil%5D)]
* **#2** - 09/01/23 | Media | [`EL PARTIDO DE TENIS`](./Retos/Reto%20%232%20-%20EL%20PARTIDO%20DE%20TENIS%20%5BMedia%5D/ejercicio.md) | Último reto publicado

> **Corrección y Publicación próximo reto - 09/01/23 | [🗓️ Horario evento corrección en directo](https://discord.gg/mouredev?event=1059567200329027584) en [Twitch](https://twitch.tv/mouredev)**
> **Corrección y Publicación próximo reto - 16/01/23 | [🗓️ Horario evento corrección en directo](https://discord.gg/mouredev?event=1061957441971036242) en [Twitch](https://twitch.tv/mouredev)**
*Puedes ejecutar el archivo [language_stats.py](./Retos/language_stats.py) para visualizar las estadísticas de uso de cada lenguaje.*

**Consulta los 52 retos de programación y las 12 aplicaciones para tu portfolio de 2022:**

Expand All @@ -37,6 +40,7 @@ Aquí encontrarás el listado de retos, su fecha de publicación, dificultad y e
4. Cada **SEMANA** (consulta el día en el ejercicio correspondiente) realizaré una transmisión en directo desde **[Twitch](https://twitch.tv/mouredev)** corrigiendo el reto, revisando soluciones de la comunidad y publicando un nuevo ejercicio.
5. Si necesitas ayuda o quieres comentar cualquier cosa sobre los retos semanales, tienes el canal "reto-semanal” en nuestro servidor de **[Discord](https://discord.gg/mouredev)** (también el día y horario de corrección en la sección “Eventos”).
6. Puedes proponer Pull Request con propuestas o correcciones sobre ejercicios del resto de la comunidad si estos poseen errores. De esta manera colaboraremos para crear un repositorio cada vez más valioso.
7. Si se te solicita un cambio/corrección en una Pull Request, y al cabo de 2 semanas no se muestra nueva actividad, se cerrará esa petición para mantener el repositorio limpio. Por supuesto, puedes volver a enviar la Pull Request cuando quieras.

## Aclaraciones

Expand Down
28 changes: 28 additions & 0 deletions Retos/Reto #1 - EL LENGUAJE HACKER [Fácil]/kotlin/mouredev.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

fun main() {
println(leetTranslator("Leet"))
println(leetTranslator("Aquí está un texto de prueba para ver si funciona el reto!"))
}

private fun leetTranslator(text: String): String {

val leet = mapOf("A" to "4", "B" to "I3", "C" to "[", "D" to ")", "E" to "3", "F" to "|=",
"G" to "&", "H" to "#", "I" to "1", "J" to ",_|", "K" to ">|", "L" to "1", "M" to "/\\/\\",
"N" to "^/", "O" to "0", "P" to "|*", "Q" to "(_,)", "R" to "I2", "S" to "5", "T" to "7",
"U" to "(_)", "V" to "\\/", "W" to "\\/\\/", "X" to "><", "Y" to "j", "Z" to "2",
"1" to "L", "2" to "R", "3" to "E", "4" to "A", "5" to "S", "6" to "b", "7" to "T",
"8" to "B", "9" to "g", "0" to "o")

var leetText = ""

for (word in text) {
val character = word.toString().uppercase()
leetText += if (leet.containsKey(character)) {
leet[character]
} else {
word.toString()
}
}

return leetText
}
21 changes: 21 additions & 0 deletions Retos/Reto #1 - EL LENGUAJE HACKER [Fácil]/python/mouredev.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
def leet_translator(text):

leet = {"A": "4", "B": "I3", "C": "[", "D": ")", "E": "3", "F": "|=", "G": "&", "H": "#", "I": "1",
"J": ",_|", "K": ">|", "L": "1", "M": "/\/\\", "N": " ^/", "O": "0", "P": " |*", "Q": "(_,)",
"R": "I2", "S": "5", "T": "7", "U": "(_)", "V": "\/", "W": "\/\/", "X": "><", "Y": "j", "Z": "2",
"1": "L", "2": "R", "3": "E", "4": "A", "5": "S", "6": "b", "7": "T", "8": "B", "9": "g", "0": "o"}

leet_text = ""

for word in text:
if word.upper() in leet.keys():
leet_text += leet[word.upper()]
else:
leet_text += word

return leet_text


print(leet_translator("Leet"))
print(leet_translator("Aquí está un texto de prueba para ver si funciona el reto!"))
print(leet_translator(input("Texto a traducir: ")))
17 changes: 17 additions & 0 deletions Retos/Reto #1 - EL LENGUAJE HACKER [Fácil]/swift/mouredev.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import Foundation

func leetTranslator(text: String) -> String {

let leet = ["A": "4", "B": "I3", "C": "[", "D": ")", "E": "3", "F": "|=", "G": "&", "H": "#", "I": "1", "J": ",_|", "K": ">|", "L": "1", "M": "/\\/\\", "N": "^/", "O": "0", "P": "|*", "Q": "(_,)", "R": "I2", "S": "5", "T": "7", "U": "(_)", "V": "\\/", "W": "\\/\\/", "X": "><", "Y": "j", "Z": "2", "1": "L", "2": "R", "3": "E", "4": "A", "5": "S", "6": "b", "7": "T", "8": "B", "9": "g", "0": "o"]

var leetText = ""

for word in text {
leetText += leet[word.description.uppercased()] ?? word.description
}

return leetText
}

print(leetTranslator(text: "Leet"))
print(leetTranslator(text: "Aquí está un texto de prueba para ver si funciona el reto!"))
30 changes: 30 additions & 0 deletions Retos/Reto #2 - EL PARTIDO DE TENIS [Media]/ejercicio.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Reto #2: EL PARTIDO DE TENIS
#### Dificultad: Media | Publicación: 09/01/23 | Corrección: 16/01/23

## Enunciado

```
/*
* 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.
*/
```
#### Tienes toda la información extendida sobre los retos de programación semanales en **[retosdeprogramacion.com/semanales2023](https://retosdeprogramacion.com/semanales2023)**.

Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.

> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**.
39 changes: 39 additions & 0 deletions Retos/language_stats.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Script para calcular el % de uso de cada lenguaje

import os
import operator


def scan_dir(dir_path, languages={}, total=0, path_name=None) -> tuple:
for path in os.scandir(dir_path):
if path.is_dir():
if "Reto #" not in path.name and path.name not in languages:
languages[path.name] = 0

_, total = scan_dir(path.path, languages, total, path.name)
else:
if path_name in languages:
total += 1
languages[path_name] += 1

return (languages, total)


# Directorio de retos a analizar
dir_path = os.path.dirname(__file__)
print(dir_path)
# Directorio de un reto específico
# dir_path += "/Reto #0 - EL FAMOSO FIZZ BUZZ [Fácil]"

# Función recursiva para recorrer el directorio y almacenar el número de archivos por lenguajes
languajes, total = scan_dir(dir_path)

# Ordenación por uso
languajes = dict(
sorted(languajes.items(), key=operator.itemgetter(1), reverse=True))

# Estadísticas
print(f"{len(languajes.keys())} Lenguajes ({total} correcciones):")
for languaje in languajes:
print(
f"> {languaje.upper()} ({languajes[languaje]}): {round(languajes[languaje] / total * 100, 2)}%")

0 comments on commit 9ec2857

Please sign in to comment.