Skip to content

Commit f998816

Browse files
committed
Resolución Reto #47 y enunciado Reto #48
1 parent 3da1925 commit f998816

File tree

4 files changed

+69
-12
lines changed

4 files changed

+69
-12
lines changed

README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ Tienes toda la información extendida sobre los retos de programación semanales
8080
* **#45** - 07/11/22 - [`CONTENEDOR DE AGUA`](https://github.com/mouredev/Weekly-Challenge-2022-Kotlin/blob/main/app/src/main/java/com/mouredev/weeklychallenge2022/Challenge45.kt)
8181
* **#46** - 14/11/22 - [`¿DÓNDE ESTÁ EL ROBOT?`](https://github.com/mouredev/Weekly-Challenge-2022-Kotlin/blob/main/app/src/main/java/com/mouredev/weeklychallenge2022/Challenge46.kt)
8282
* **#47** - 21/11/22 - [`VOCAL MÁS COMÚN`](https://github.com/mouredev/Weekly-Challenge-2022-Kotlin/blob/main/app/src/main/java/com/mouredev/weeklychallenge2022/Challenge47.kt)
83-
* **#48** - 28/11/22 - `Publicación nuevo reto...`
83+
* **#48** - 28/11/22 - [`EL CALENDARIO DE ADEVIENTO 2022`](https://github.com/mouredev/Weekly-Challenge-2022-Kotlin/blob/main/app/src/main/java/com/mouredev/weeklychallenge2022/Challenge48.kt)
84+
* **#49** - 05/12/22 - `Publicación nuevo reto...`
8485

8586
<a href="https://youtu.be/ydH_B5KuqGs"><img src="http://i3.ytimg.com/vi/ydH_B5KuqGs/maxresdefault.jpg" style="height: 50%; width:50%;"/></a>
8687

@@ -102,6 +103,10 @@ Tienes toda la información extendida sobre los retos de programación semanales
102103

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

106+
<a href="https://youtu.be/LpnVqgonptI"><img src="http://i3.ytimg.com/vi/LpnVqgonptI/maxresdefault.jpg" style="height: 50%; width:50%;"/></a>
107+
108+
*Corección retos del 41 al 46 en vídeo*
109+
105110
### ¿Cómo puedo participar?
106111

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

app/src/main/java/com/mouredev/weeklychallenge2022/Challenge46.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ package com.mouredev.weeklychallenge2022
77
* Fecha publicación resolución: 21/11/22
88
* Dificultad: MEDIA
99
*
10-
* Enunciado: Calcula dónde estará un robot (sus coordenadas finales) que se encuentra en una cudrícula
10+
* Enunciado: Calcula dónde estará un robot (sus coordenadas finales) que se encuentra en una cuadrícula
1111
* representada por los ejes "x" e "y".
1212
* - El robot comienza en la coordenada (0, 0).
1313
* - Para idicarle que se mueva, le enviamos un array formado por enteros (positivos o negativos)
@@ -42,7 +42,8 @@ private enum class Direction {
4242

4343
fun turn(): Direction {
4444

45-
return when (this) { POSITIVEY -> NEGATIVEX
45+
return when (this) {
46+
POSITIVEY -> NEGATIVEX
4647
NEGATIVEX -> NEGATIVEY
4748
NEGATIVEY -> POSITIVEX
4849
POSITIVEX -> POSITIVEY
Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.mouredev.weeklychallenge2022
22

3+
import java.text.Normalizer
4+
35
/*
46
* Reto #47
57
* VOCAL MÁS COMÚN
@@ -8,12 +10,52 @@ package com.mouredev.weeklychallenge2022
810
* Dificultad: FÁCIL
911
*
1012
* Enunciado: Crea un función que reciba un texto y retorne la vocal que más veces se repita.
11-
* Si no hay vocales podrá devolver vacío.
13+
* - Ten cuidado con algunos casos especiales.
14+
* - Si no hay vocales podrá devolver vacío.
1215
*
1316
* Información adicional:
1417
* - Usa el canal de nuestro Discord (https://mouredev.com/discord) "🔁reto-semanal"
1518
* para preguntas, dudas o prestar ayuda a la comunidad.
1619
* - Tienes toda la información sobre los retos semanales en
1720
* https://retosdeprogramacion.com/semanales2022.
1821
*
19-
*/
22+
*/
23+
24+
fun main() {
25+
println(mostRepeatedVowel("aaaaaeeeeiiioou"))
26+
println(mostRepeatedVowel("AáaaaEeeeIiiOoU"))
27+
println(mostRepeatedVowel("eeeeiiioouaaaaa"))
28+
println(mostRepeatedVowel(".-Aá?aaaBbEeeweIiiOoU:"))
29+
println(mostRepeatedVowel(".-Aá?aaa BbEeew eIiiOoU:"))
30+
println(mostRepeatedVowel(".-Aá?aaa BbEeew eEIiiOoU:"))
31+
println(mostRepeatedVowel(".-Aá?aaa BbEeew eEIiiOoUuuuuu:"))
32+
println(mostRepeatedVowel("aeiou"))
33+
println(mostRepeatedVowel("brp qyz"))
34+
}
35+
36+
private fun mostRepeatedVowel(text: String) : List<String> {
37+
38+
val vowelCount = mutableMapOf<Char, Int>()
39+
40+
Normalizer.normalize(text.lowercase(), Normalizer.Form.NFD).forEach { character ->
41+
if (character == 'a' || character == 'e' || character == 'i' || character == 'o' || character == 'u') {
42+
vowelCount[character] = vowelCount[character]?.plus(1) ?: 1
43+
}
44+
}
45+
46+
val mostRepeated = mutableListOf<String>()
47+
var maxRepeated = 0
48+
49+
vowelCount.forEach { (vowel: Char, count: Int) ->
50+
if (count >= maxRepeated) {
51+
if (count > maxRepeated) {
52+
mostRepeated.clear()
53+
}
54+
mostRepeated.add(vowel.toString())
55+
56+
maxRepeated = count
57+
}
58+
}
59+
60+
return mostRepeated
61+
}

app/src/main/java/com/mouredev/weeklychallenge2022/Challenge48.kt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,24 @@
11
package com.mouredev.weeklychallenge2022
22

33
/*
4-
* Reto #47
5-
* VOCAL MÁS COMÚN
6-
* Fecha publicación enunciado: 21/11/22
7-
* Fecha publicación resolución: 28/11/22
4+
* Reto #48
5+
* EL CALENDARIO DE ADEVIENTO 2022
6+
* Fecha publicación enunciado: 28/11/22
7+
* Fecha publicación resolución: 05/12/22
88
* Dificultad: FÁCIL
99
*
10-
* Enunciado: Crea un función que reciba un texto y retorne la vocal que más veces se repita.
11-
* - Ten cuidado con algunos casos especiales.
12-
* - Si no hay vocales podrá devolver vacío.
10+
* ¿Conoces el calendario de adviento de la comunidad (https://adviento.dev)?
11+
* 24 días, 24 regalos sorpresa relacionados con desarrollo de software, ciencia y tecnología desde el 1 de diciembre.
12+
*
13+
* Enunciado: Crea una función que reciba un objeto de tipo "Date" y retorne lo siguiente:
14+
* - Si la fecha coincide con el calendario de aDEViento 2022: Retornará el regalo de ese día (a tu elección) y cuánto queda para que finalice el sorteo de ese día.
15+
* - Si la fecha es anterior: Cuánto queda para que comience el calendario.
16+
* - Si la fecha es posterior: Cuánto tiempo ha pasado desde que ha finalizado.
17+
*
18+
* Notas:
19+
* - Tenemos en cuenta que cada día del calendario comienza a medianoche 00:00:00 y finaliza a las 23:59:59.
20+
* - Debemos trabajar con fechas que tengan año, mes, día, horas, minutos y segundos.
21+
* - 🎁 Cada persona que aporte su solución entrará en un nuevo sorteo del calendario de aDEViento hasta el día de su corrección (sorteo exclusivo para quien entregue su solución).
1322
*
1423
* Información adicional:
1524
* - Usa el canal de nuestro Discord (https://mouredev.com/discord) "🔁reto-semanal"

0 commit comments

Comments
 (0)