Suma de elementos en posiciones dadas
Definir la función
sumaEnPosicion :: [Int] -> [Int] -> Int
tal que (sumaEnPosicion xs ys) es la suma de todos los elementos de xs cuyas posiciones se indican en ys. Por ejemplo,
sumaEnPosicion [1,2,3] [0,2] == 4 sumaEnPosicion [4,6,2] [1,3] == 6 sumaEnPosicion [3,5,1] [0,1] == 8
Soluciones
-- 1ª solución sumaEnPosicion1 :: [Int] -> [Int] -> Int sumaEnPosicion1 xs ys = sum [xs !! y | y <- ys, 0 <= y, y < n] where n = length xs -- 2ª solución sumaEnPosicion2 :: [Int] -> [Int] -> Int sumaEnPosicion2 xs ys = aux xs [y | y <- ys, 0 <= y, y < n] 0 where n = length xs aux _ [] r = r aux xs (y:ys) r = aux xs ys (r + xs!!y)