Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mouredev/weekly-challenge-2022-swift

Retos semanales de la comunidad MoureDev para practicar Swift & iOS.
https://github.com/mouredev/weekly-challenge-2022-swift

ios swift swiftui tutorial tutorial-code tutorial-exercises xcode

Last synced: 1 day ago
JSON representation

Retos semanales de la comunidad MoureDev para practicar Swift & iOS.

Awesome Lists containing this project

README

        

# Retos de programación semanales en Swift 2022
## Proyecto de retos semanales de la comunidad **[MoureDev](https://moure.dev)** para practicar [Swift](https://github.com/apple/swift).
### Todos nuestros retos en **[retosdeprogramacion.com/semanales2022](https://retosdeprogramacion.com/semanales2022)**

Si quieres realizar los retos de programación en otro lenguaje, utiliza el repositorio de retos semanales principal.

[![GitHub Kotlin](https://img.shields.io/github/stars/mouredev/Weekly-Challenge-2022-Kotlin?label=Repositorio%20retos%20Semanales&style=social)](https://github.com/mouredev/Weekly-Challenge-2022-Kotlin)

También puedes unirte a nuestra actividad mensual de creación de aplicaciones.

[![GitHub App](https://img.shields.io/github/stars/mouredev/Monthly-App-Challenge-2022?label=Repositorio%20retos%20Mensuales&style=social)](https://github.com/mouredev/Monthly-App-Challenge-2022)

## Información importante

El proyecto principal de retos de programación semanales en Swift se ha creado utilizando Xcode.

[![Swift](https://img.shields.io/badge/Swift-5-orange.svg?longCache=true&style=popout-square)](https://swift.org)
[![Xcode](https://img.shields.io/badge/Xcode-13-blue.svg?longCache=true&style=popout-square)](https://developer.apple.com/xcode)
[![iOS](https://img.shields.io/badge/iOS-15-red.svg?longCache=true&style=popout-square)](https://www.apple.com/es/ios)

Tienes las soluciones de la comunidad en **[Pull Requests](https://github.com/mouredev/Weekly-Challenge-2022-Swift/pulls)**.

Tienes toda la información extendida sobre los retos de programación semanales y mensuales en **[retosdeprogramacion.com](https://retosdeprogramacion.com/)**.

## Vídeo explicación retos

## Listado de retos

### [Aquí](https://github.com/mouredev/Weekly-Challenge-2022-Swift/tree/main/WeeklyChallenge2022.playground/Pages) tienes un fichero con el enunciado y el código para cada reto

* **#0** - 27/12/21 - [`EL FAMOSO "FIZZ BUZZ"`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge0.xcplaygroundpage/Contents.swift)
* **#1** - 03/01/22 - [`¿ES UN ANAGRAMA?`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge1.xcplaygroundpage/Contents.swift)
* **#2** - 10/01/22 - [`LA SUCESIÓN DE FIBONACCI`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge2.xcplaygroundpage/Contents.swift)
* **#3** - 17/01/22 - [`¿ES UN NÚMERO PRIMO?`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge3.xcplaygroundpage/Contents.swift)
* **#4** - 24/01/22 - [`ÁREA DE UN POLÍGONO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge4.xcplaygroundpage/Contents.swift)
* **#5** - 01/02/22 - [`ASPECT RATIO DE UNA IMAGEN`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge5.xcplaygroundpage/Contents.swift)
* **#6** - 07/02/22 - [`INVIRTIENDO CADENAS`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge6.xcplaygroundpage/Contents.swift)
* **#7** - 14/02/22 - [`CONTANDO PALABRAS`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge7.xcplaygroundpage/Contents.swift)
* **#8** - 18/02/22 - [`DECIMAL A BINARIO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge8.xcplaygroundpage/Contents.swift)
* **#9** - 02/03/22 - [`CÓDIGO MORSE`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge9.xcplaygroundpage/Contents.swift)
* **#10** - 07/03/22 - [`EXPRESIONES EQUILIBRADAS`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge10.xcplaygroundpage/Contents.swift)
* **#11** - 14/03/22 - [`ELIMINANDO CARACTERES`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge11.xcplaygroundpage/Contents.swift)
* **#12** - 21/03/22 - [`¿ES UN PALÍNDROMO?`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge12.xcplaygroundpage/Contents.swift)
* **#13** - 28/03/22 - [`FACTORIAL RECURSIVO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge13.xcplaygroundpage/Contents.swift)
* **#14** - 04/04/22 - [`¿ES UN NÚMERO DE ARMSTRONG?`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge14.xcplaygroundpage/Contents.swift)
* **#15** - 11/04/22 - [`¿CUÁNTOS DÍAS?`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge15.xcplaygroundpage/Contents.swift)
* **#16** - 18/04/22 - [`EN MAYÚSCULA`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge16.xcplaygroundpage/Contents.swift)
* **#17** - 25/04/22 - [`LA CARRERA DE OBSTÁCULOS`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge17.xcplaygroundpage/Contents.swift)
* **#18** - 02/05/22 - [`TRES EN RAYA`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge18.xcplaygroundpage/Contents.swift)
* **#19** - 09/05/22 - [`CONVERSOR TIEMPO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge19.xcplaygroundpage/Contents.swift)
* **#20** - 16/05/22 - [`PARANDO EL TIEMPO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge20.xcplaygroundpage/Contents.swift)
* **#21** - 23/05/22 - [`CALCULADORA .TXT` ](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge21.xcplaygroundpage/Contents.swift)
* **#22** - 01/06/22 - [`CONJUNTOS` ](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge22.xcplaygroundpage/Contents.swift)
* **#23** - 07/06/22 - [`MÁXIMO COMÚN DIVISOR Y MÍNIMO COMÚN MÚLTIPLO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge23.xcplaygroundpage/Contents.swift)
* **#24** - 13/06/22 - [`ITERATION MASTER` ](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge24.xcplaygroundpage/Contents.swift)
* **#25** - 20/06/22 - [`PIEDRA, PAPEL, TIJERA` ](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge25.xcplaygroundpage/Contents.swift)
* **#26** - 27/06/22 - [`CUADRADO Y TRIÁNGULO 2D` ](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge26.xcplaygroundpage/Contents.swift)
* **#27** - 07/07/22 - [`VECTORES ORTOGONALES`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge27.xcplaygroundpage/Contents.swift)
* **#28** - 11/07/22 - [`MÁQUINA EXPENDEDORA`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge28.xcplaygroundpage/Contents.swift)
* **#29** - 18/07/22 - [`ORDENA LA LISTA`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge29.xcplaygroundpage/Contents.swift)
* **#30** - 26/07/22 - [`MARCO DE PALABRAS`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge30.xcplaygroundpage/Contents.swift)
* **#31** - 01/08/22 - [`AÑOS BISIESTOS`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge31.xcplaygroundpage/Contents.swift)
* **#32** - 08/08/22 - [`EL SEGUNDO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge32.xcplaygroundpage/Contents.swift)
* **#33** - 15/08/22 - [`CICLO SEXAGENARIO CHINO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge33.xcplaygroundpage/Contents.swift)
* **#34** - 22/08/22 - [`LOS NÚMEROS PERDIDOS`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge34.xcplaygroundpage/Contents.swift)
* **#35** - 29/08/22 - [`BATALLA POKÉMON`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge35.xcplaygroundpage/Contents.swift)
* **#36** - 06/09/22 - [`LOS ANILLOS DE PODER`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge36.xcplaygroundpage/Contents.swift)
* **#36** - 14/09/22 - [`LOS LANZAMIENTOS DE "THE LEGEND OF ZELDA"`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge37.xcplaygroundpage/Contents.swift)
* **#38** - 19/09/22 - [`BINARIO A DECIMAL`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge38.xcplaygroundpage/Contents.swift)
* **#39** - 27/09/22 - [`TOP ALGORITMOS: QUICK SORT`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge39.xcplaygroundpage/Contents.swift)
* **#40** - 03/10/22 - [`TRIÁNGULO DE PASCAL`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge40.xcplaygroundpage/Contents.swift)
* **#41** - 10/10/22 - [`LA LEY DE OHM`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge41.xcplaygroundpage/Contents.swift)
* **#42** - 17/10/22 - [`CONVERSOR DE TEMPERATURA`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge42.xcplaygroundpage/Contents.swift)
* **#43** - 24/10/22 - [`TRUCO O TRATO`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge43.xcplaygroundpage/Contents.swift)
* **#44** - 02/11/22 - [`BUMERANES`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge44.xcplaygroundpage/Contents.swift)
* **#45** - 07/11/22 - [`CONTENEDOR DE AGUA`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge45.xcplaygroundpage/Contents.swift)
* **#46** - 14/11/22 - [`¿DÓNDE ESTÁ EL ROBOT?`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge46.xcplaygroundpage/Contents.swift)
* **#47** - 21/11/22 - [`VOCAL MÁS COMÚN`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge47.xcplaygroundpage/Contents.swift)
* **#48** - 28/11/22 - [`EL CALENDARIO DE ADEVIENTO 2022`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge48.xcplaygroundpage/Contents.swift)
* **#49** - 05/12/22 - [`EL DETECTOR DE HANDLES`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge49.xcplaygroundpage/Contents.swift)
* **#50** - 12/12/22 - [`LA ENCRIPTACIÓN DE KARACA`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge50.xcplaygroundpage/Contents.swift)
* **#51** - 19/12/22 - [`EL RETO RANDOM`](https://github.com/mouredev/Weekly-Challenge-2022-Swift/blob/main/WeeklyChallenge2022.playground/Pages/Challenge51.xcplaygroundpage/Contents.swift)

> **[🆕ACCEDE A LOS NUEVOS RETOS SEMANALES PARA 2023](https://github.com/mouredev/retos-programacion-2023)**

*Corrección retos del 0 al 4 en vídeo*

*Corrección retos del 5 al 10 en vídeo*

*Corección retos del 11 al 20 en vídeo*

*Corección retos del 21 al 30 en vídeo*

*Corección retos del 31 al 40 en vídeo*

*Corección retos del 41 al 46 en vídeo*

*Corección retos del 47 al 51 en vídeo*

### ¿Cómo puedo participar?

**Puedes hacer libremente un fork del proyecto y trabajar con Git para ir sincronizando las actualizaciones del proyecto.**

* Cada lunes se publicará un nuevo reto de código.
* Cada reto será un nuevo fichero dentro de `WeeklyChallenge2022.playground` donde se indicará la fecha, el enunciado y la información necesaria para llevarlo a cabo.
* Se comunicará en el canal `#🔁reto-semanal` de [Discord](https://mouredev.com/discord), en directo desde [Twitch](https://twitch.tv/mouredev) y se subirá el enunciado al [repositorio](https://github.com/mouredev/Weekly-Challenge-2022-Swift).
* Dispondrás de una semana para resolverlo, preguntar tus dudas, debatir y aportar ayuda en el canal de Discord.
* El lunes siguiente se subirá la resolución al repositorio, se comentará en directo desde Twitch (utilizando alguna solución de entre los asistentes o que se haya realizado una pull request al proyecto) y se añadirá el nuevo reto semanal.
* Comenzará de nuevo el proceso.

*Si no dispones de un editor de código como Xcode, puedes usar un playground online ([http://online.swiftplayground.run/](http://online.swiftplayground.run/)) para probar tu código.*

*Si utilizas un editor como Xcode, puedes ejecutar el código pulsando el símbolo "play ►" en el lateral.*

#### Puedes apoyar mi trabajo haciendo "☆ Star" en el repo o nominarme a "GitHub Star". ¡Gracias!

[![GitHub Star](https://img.shields.io/badge/GitHub-Nominar_a_star-yellow?style=for-the-badge&logo=github&logoColor=white&labelColor=101010)](https://stars.github.com/nominate/)

Si quieres unirte a nuestra comunidad de desarrollo, aprender programación de Apps, mejorar tus habilidades y ayudar a la continuidad del proyecto, puedes encontrarnos en:

[![Twitch](https://img.shields.io/badge/Twitch-Retos_en_directo-9146FF?style=for-the-badge&logo=twitch&logoColor=white&labelColor=101010)](https://twitch.tv/mouredev)
[![Discord](https://img.shields.io/badge/Discord-Canal_de_chat_para_retos-5865F2?style=for-the-badge&logo=discord&logoColor=white&labelColor=101010)](https://mouredev.com/discord)
[![Link](https://img.shields.io/badge/Links_de_interés-moure.dev-39E09B?style=for-the-badge&logo=Linktree&logoColor=white&labelColor=101010)](https://mouredev.com)

### Cómo trabajar con Git y GitHub de forma colaborativa

Deberás realizar flujos de actualización, sincronización y `pull request` desde tu `fork` del proyecto hacia el principal (habitualmente nombrado como `upstream/main`).
Todo esto se puede hacer desde línea de comandos, pero si prefieres puedes usar clientes gráficos como [GitHub Desktop](https://desktop.github.com/) (muy simple) o [GitKraken](https://www.gitkraken.com/invite/cZWhJq1v) (más avanzado y potente).

* Desde tu repo en la propia web de GitHub podrás realizar muchas acciones.
* Si te resulta más fácil, puedes crear una `branch`(rama) para resolver cada reto y así simplificar la `pull request`. También puedes ignorar ciertos ficheros.
* Resuelve el ejercicio y realiza `commit` y `push` del mismo a tu proyecto.
* Desde GitHub, una vez hecho el `fork` verás opciones como "Contribute" o "Fetch upstream":
* `Contribute` permite abrir una `pull request`(deberás seleccionar el mío como repositorio base contra el que comparar tu proyecto). Así yo podré ver los ficheros modificados de tu proyecto con la solución a los retos. Intenta que el título de la `pull request` siga esta convención: **"Solución Reto #[número del reto]" (Solución Reto #0)**.
* `Fetch upstream` permite sincronizar tu proyecto con el original en caso de que se haya actualizado.
* Para sincronizar tu proyecto con el original y mantenerlo actualizado también puedes hacer un `merge commit`, `squash merge` o `rebase`(ten en cuenta que cada uno se comporta de una manera, conservando o no tus propios cambios).
* Una vez se publique el nuevo reto, la solución del anterior, y comente las soluciones, cerraré las pasadas `pull request` para dejar paso a las que se hagan para el nuevo reto.

## ![https://mouredev.com](https://raw.githubusercontent.com/mouredev/mouredev/master/mouredev_emote.png) Hola, mi nombre es Brais Moure.
### Freelance full-stack iOS & Android engineer

[![YouTube Channel Subscribers](https://img.shields.io/youtube/channel/subscribers/UCxPD7bsocoAMq8Dj18kmGyQ?style=social)](https://youtube.com/mouredevapps?sub_confirmation=1)
[![Twitch Status](https://img.shields.io/twitch/status/mouredev?style=social)](https://twitch.com/mouredev)
[![Discord](https://img.shields.io/discord/729672926432985098?style=social&label=Discord&logo=discord)](https://mouredev.com/discord)
[![Twitter Follow](https://img.shields.io/twitter/follow/mouredev?style=social)](https://twitter.com/mouredev)
![GitHub Followers](https://img.shields.io/github/followers/mouredev?style=social)

Soy ingeniero de software desde hace más de 12 años. Desde hace 4 años combino mi trabajo desarrollando Apps con creación de contenido formativo sobre programación y tecnología en diferentes redes sociales como **[@mouredev](https://moure.dev)**.

### En mi perfil de GitHub tienes más información

[![Web](https://img.shields.io/badge/GitHub-MoureDev-14a1f0?style=for-the-badge&logo=github&logoColor=white&labelColor=101010)](https://github.com/mouredev)