Selección por posición
Definir la función
1 |
seleccion :: Ord a => [a] -> [Int] -> [a] |
tal que (seleccion xs ps) es la lista ordenada de los elementos que ocupan las posiciones indicadas en la lista ps. Por ejemplo,
1 2 |
seleccion [6,2,4,7] [2,0] == [4,6] seleccion ['a'..'z'] [0,2..10] == "acegik" |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 |
import Data.List (sort) -- 1ª definición seleccion :: Ord a => [a] -> [Int] -> [a] seleccion xs ps = sort [x | (x,n) <- zip xs [0..] , n `elem` ps] -- 2ª definición seleccion2 :: Ord a => [a] -> [Int] -> [a] seleccion2 xs = sort . map (xs!!) |
De esta manera no se conserva el orden dado por
ps