Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ Tienes toda la información extendida sobre los retos de programación semanales
* **#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)
* **#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)
* **#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)
* **#48** - 28/11/22 - `Publicación nuevo reto...`
* **#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)
* **#49** - 05/12/22 - `Publicación nuevo reto...`

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

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

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

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

*Corección retos del 41 al 46 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.**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ private fun calculateWaterUnits(container: Array<Int>): Int {

nextWall = 0
for (nextBlocksIndex in index + 1 until container.size) {
if (container[nextBlocksIndex] >= nextWall) {
if (container[nextBlocksIndex] >= nextWall && wall >= nextWall) {
nextWall = container[nextBlocksIndex]
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ package com.mouredev.weeklychallenge2022
* Fecha publicación resolución: 21/11/22
* Dificultad: MEDIA
*
* Enunciado: Calcula dónde estará un robot (sus coordenadas finales) que se encuentra en una cudrícula
* Enunciado: Calcula dónde estará un robot (sus coordenadas finales) que se encuentra en una cuadrícula
* representada por los ejes "x" e "y".
* - El robot comienza en la coordenada (0, 0).
* - Para idicarle que se mueva, le enviamos un array formado por enteros (positivos o negativos)
Expand Down Expand Up @@ -42,7 +42,8 @@ private enum class Direction {

fun turn(): Direction {

return when (this) { POSITIVEY -> NEGATIVEX
return when (this) {
POSITIVEY -> NEGATIVEX
NEGATIVEX -> NEGATIVEY
NEGATIVEY -> POSITIVEX
POSITIVEX -> POSITIVEY
Expand Down
46 changes: 44 additions & 2 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge47.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.mouredev.weeklychallenge2022

import java.text.Normalizer

/*
* Reto #47
* VOCAL MÁS COMÚN
Expand All @@ -8,12 +10,52 @@ package com.mouredev.weeklychallenge2022
* Dificultad: FÁCIL
*
* Enunciado: Crea un función que reciba un texto y retorne la vocal que más veces se repita.
* Si no hay vocales podrá devolver vacío.
* - Ten cuidado con algunos casos especiales.
* - Si no hay vocales podrá devolver vacío.
*
* Información adicional:
* - Usa el canal de nuestro Discord (https://mouredev.com/discord) "🔁reto-semanal"
* para preguntas, dudas o prestar ayuda a la comunidad.
* - Tienes toda la información sobre los retos semanales en
* https://retosdeprogramacion.com/semanales2022.
*
*/
*/

fun main() {
println(mostRepeatedVowel("aaaaaeeeeiiioou"))
println(mostRepeatedVowel("AáaaaEeeeIiiOoU"))
println(mostRepeatedVowel("eeeeiiioouaaaaa"))
println(mostRepeatedVowel(".-Aá?aaaBbEeeweIiiOoU:"))
println(mostRepeatedVowel(".-Aá?aaa BbEeew eIiiOoU:"))
println(mostRepeatedVowel(".-Aá?aaa BbEeew eEIiiOoU:"))
println(mostRepeatedVowel(".-Aá?aaa BbEeew eEIiiOoUuuuuu:"))
println(mostRepeatedVowel("aeiou"))
println(mostRepeatedVowel("brp qyz"))
}

private fun mostRepeatedVowel(text: String) : List<String> {

val vowelCount = mutableMapOf<Char, Int>()

Normalizer.normalize(text.lowercase(), Normalizer.Form.NFD).forEach { character ->
if (character == 'a' || character == 'e' || character == 'i' || character == 'o' || character == 'u') {
vowelCount[character] = vowelCount[character]?.plus(1) ?: 1
}
}

val mostRepeated = mutableListOf<String>()
var maxRepeated = 0

vowelCount.forEach { (vowel: Char, count: Int) ->
if (count >= maxRepeated) {
if (count > maxRepeated) {
mostRepeated.clear()
}
mostRepeated.add(vowel.toString())

maxRepeated = count
}
}

return mostRepeated
}
29 changes: 29 additions & 0 deletions app/src/main/java/com/mouredev/weeklychallenge2022/Challenge48.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.mouredev.weeklychallenge2022

/*
* Reto #48
* EL CALENDARIO DE ADEVIENTO 2022
* Fecha publicación enunciado: 28/11/22
* Fecha publicación resolución: 05/12/22
* Dificultad: FÁCIL
*
* ¿Conoces el calendario de adviento de la comunidad (https://adviento.dev)?
* 24 días, 24 regalos sorpresa relacionados con desarrollo de software, ciencia y tecnología desde el 1 de diciembre.
*
* Enunciado: Crea una función que reciba un objeto de tipo "Date" y retorne lo siguiente:
* - 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.
* - Si la fecha es anterior: Cuánto queda para que comience el calendario.
* - Si la fecha es posterior: Cuánto tiempo ha pasado desde que ha finalizado.
*
* Notas:
* - Tenemos en cuenta que cada día del calendario comienza a medianoche 00:00:00 y finaliza a las 23:59:59.
* - Debemos trabajar con fechas que tengan año, mes, día, horas, minutos y segundos.
* - 🎁 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).
*
* Información adicional:
* - Usa el canal de nuestro Discord (https://mouredev.com/discord) "🔁reto-semanal"
* para preguntas, dudas o prestar ayuda a la comunidad.
* - Tienes toda la información sobre los retos semanales en
* https://retosdeprogramacion.com/semanales2022.
*
*/