Estoy tratando de resolver este kyu 5 kata: https://www.codewars.com/kata/58e77c88fd2d893a77000102/
Mi solución pasa las pruebas pero no los intentos, y no puedo entender por qué. Este es mi código:
function rainVolume(towers) { let res = 0; return (function f(){ if(towers.length>=3){ let greatestIndex = towers.indexOf(Math.max(...towers)); towers[greatestIndex] = -1; let secondIndex = towers.indexOf(second = Math.max(...towers)); towers.splice(greatestIndex,1); //towers.splice(secondIndex,1) let between = (x=greatestIndex-secondIndex)<0 ? towers.splice(greatestIndex,x=Math.abs(x)-1) : towers.splice(secondIndex+1,x); res += second*between.length-between.reduce((a, b) => a + b, 0); f(towers); } return res })(); } Básicamente, pensé que si tomaba las posiciones de la torre más grande y la segunda más grande de la matriz (índice greatestIndex y secondIndex ), luego multiplicaba la altura de la segunda torre más grande por la cantidad de torres que están entre el índice greatestIndex y el secondIndex , podría obtener la lluvia volumen entre esas posiciones restando la suma de las alturas de las torres que están en el medio.
Mi inglés es pobre y no sé si lo expliqué bien.
Lo conseguí agregando -1 a x en towers.splice(secondIndex+1,x)