Skip to content

Commit 4dc570d

Browse files
authored
Merge pull request #13 from mouredev/main
Resolución Reto mouredev#45 y enunciado Reto mouredev#46
2 parents 3ca764a + 74b39b6 commit 4dc570d

File tree

3 files changed

+71
-1
lines changed

3 files changed

+71
-1
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ Tienes toda la información extendida sobre los retos de programación semanales
7878
* **#43** - 24/10/22 - [`TRUCO O TRATO`](https://github.com/mouredev/Weekly-Challenge-2022-Kotlin/blob/main/app/src/main/java/com/mouredev/weeklychallenge2022/Challenge43.kt)
7979
* **#44** - 02/11/22 - [`BUMERANES`](https://github.com/mouredev/Weekly-Challenge-2022-Kotlin/blob/main/app/src/main/java/com/mouredev/weeklychallenge2022/Challenge44.kt)
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)
81-
* **#46** - 14/11/22 - `Publicación nuevo reto...`
81+
* **#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)
82+
* **#47** - 21/11/22 - `Publicación nuevo reto...`
8283

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

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

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,42 @@ package com.mouredev.weeklychallenge2022
3131
*
3232
*/
3333

34+
fun main() {
35+
println(calculateWaterUnits(arrayOf(4, 0, 3, 6)))
36+
println(calculateWaterUnits(arrayOf(4, 0, 3, 6, 1, 3)))
37+
println(calculateWaterUnits(arrayOf(5, 4, 3, 2, 1, 0)))
38+
println(calculateWaterUnits(arrayOf(0, 1, 2, 3, 4, 5)))
39+
println(calculateWaterUnits(arrayOf(4, 0, 3, 6, 1, 3, 0, 1, 6)))
40+
}
41+
42+
private fun calculateWaterUnits(container: Array<Int>): Int {
43+
44+
var units = 0
45+
var wall = 0
46+
var nextWall = 0
47+
48+
container.forEachIndexed { index, blocks ->
49+
50+
if (blocks < 0) {
51+
return@forEachIndexed
52+
}
53+
54+
if (index != container.size - 1 && (index == 0 || nextWall == blocks)) {
55+
56+
wall = if (index == 0) blocks else nextWall
57+
58+
nextWall = 0
59+
for (nextBlocksIndex in index + 1 until container.size) {
60+
if (container[nextBlocksIndex] >= nextWall) {
61+
nextWall = container[nextBlocksIndex]
62+
}
63+
}
64+
} else {
65+
val referenceWall = if (nextWall > wall) wall else nextWall
66+
val currentBlocks = referenceWall - blocks
67+
units += if (currentBlocks >= 0) currentBlocks else 0
68+
}
69+
}
70+
71+
return units
72+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.mouredev.weeklychallenge2022
2+
3+
/*
4+
* Reto #46
5+
* ¿DÓNDE ESTÁ EL ROBOT?
6+
* Fecha publicación enunciado: 14/10/22
7+
* Fecha publicación resolución: 21/11/22
8+
* Dificultad: MEDIA
9+
*
10+
* Enunciado: Calcula dónde estará un robot (sus coordenadas finales) que se encuentra en una cudrícula
11+
* representada por los ejes "x" e "y".
12+
* - El robot comienza en la coordenada (0, 0).
13+
* - Para idicarle que se mueva, le enviamos un array formado por enteros (positivos o negativos)
14+
* que indican la secuencia de pasos a dar.
15+
* - Por ejemplo: [10, 5, -2] indica que primero se mueve 10 pasos, se detiene, luego 5, se detiene,
16+
* y finalmente 2. El resultado en este caso sería (x: -5, y: 12)
17+
* - Si el número de pasos es negativo, se desplazaría en sentido contrario al que está mirando.
18+
* - Los primeros pasos los hace en el eje "y". Interpretamos que está mirando hacia la parte
19+
* positiva del eje "y".
20+
* - El robot tiene un fallo en su programación: cada vez que finaliza una secuencia de pasos gira
21+
* 90 grados en el sentido contrario a las agujas del reloj.
22+
*
23+
* Información adicional:
24+
* - Usa el canal de nuestro Discord (https://mouredev.com/discord) "🔁reto-semanal"
25+
* para preguntas, dudas o prestar ayuda a la comunidad.
26+
* - Tienes toda la información sobre los retos semanales en
27+
* https://retosdeprogramacion.com/semanales2022.
28+
*
29+
*/
30+

0 commit comments

Comments
 (0)