<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/WIKIS/I1M2021G2/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Manalcgar</id>
	<title>Informática de 1º de Matemáticas [Curso 2021-22, Grupo 2] - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/WIKIS/I1M2021G2/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Manalcgar"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php/Especial:Contribuciones/Manalcgar"/>
	<updated>2026-07-21T01:42:33Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_9&amp;diff=504</id>
		<title>Relación 9</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_9&amp;diff=504"/>
		<updated>2021-12-03T09:46:59Z</updated>

		<summary type="html">&lt;p&gt;Manalcgar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;#039;haskell&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- I1M 2021-22: Rel_9.hs (01 de diciembre de 2021)&lt;br /&gt;
-- Funciones de orden superior y definiciones por plegados (II)&lt;br /&gt;
-- Departamento de Ciencias de la Computación e Inteligencia Artificial&lt;br /&gt;
-- Universidad de Sevilla&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- Librerías auxiliares&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
import Data.Char&lt;br /&gt;
import Data.List&lt;br /&gt;
-- El siguiente módulo hay que instalarlo:&lt;br /&gt;
--cabal install Primes&lt;br /&gt;
import Data.Numbers.Primes&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1. Se considera la función&lt;br /&gt;
--      resultadoPos :: (a -&amp;gt; Integer) -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
-- tal que (resultadoPos f xs) es la lista de los elementos de la lista&lt;br /&gt;
-- xs tales que el valor de la función f sobre ellos es positivo. Por ejemplo,&lt;br /&gt;
--   resultadoPos head [[-1,2],[-9,4],[2,3]]       ==  [[2,3]]&lt;br /&gt;
--   resultadoPos sum [[1,2],[9],[-8,3],[],[3,5]]  ==  [[1,2],[9],[3,5]]&lt;br /&gt;
--&lt;br /&gt;
-- Define esta función&lt;br /&gt;
-- 1) por comprensión,&lt;br /&gt;
-- 2) por orden superior (map, filter, ...),&lt;br /&gt;
-- 3) por recursión,&lt;br /&gt;
-- 4) por plegado (con &amp;#039;foldr&amp;#039;).&lt;br /&gt;
-- -----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Elsa Domínguez&lt;br /&gt;
resultadoPosC :: (a -&amp;gt; Integer) -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
resultadoPosC f xs = [x | x &amp;lt;- xs, f x &amp;gt; 0]&lt;br /&gt;
&lt;br /&gt;
resultadoPosS :: (a -&amp;gt; Integer) -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
resultadoPosS f xs = filter g xs&lt;br /&gt;
                   where g x = f x &amp;gt; 0&lt;br /&gt;
&lt;br /&gt;
resultadoPosR :: (a -&amp;gt; Integer) -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
resultadoPosR f [] = []&lt;br /&gt;
resultadoPosR f (x:xs) | f x &amp;gt; 0    = x : resultadoPosR f xs&lt;br /&gt;
                       | otherwise  = resultadoPosR f xs&lt;br /&gt;
&lt;br /&gt;
resultadoPosPR :: (a -&amp;gt; Integer) -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
resultadoPosPR f xs = foldr g [] xs&lt;br /&gt;
                    where g prim recu | f prim &amp;gt; 0 = prim : recu&lt;br /&gt;
                                      | otherwise = recu&lt;br /&gt;
&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2. Se considera la función&lt;br /&gt;
--     intercala :: Int -&amp;gt; [Int] -&amp;gt; [Int]&lt;br /&gt;
-- tal que (intercala y xs) es la lista que resulta de intercalar el elemento&lt;br /&gt;
-- y delante de todos los elementos de la lista xs que sean menores que y.&lt;br /&gt;
-- Por ejemplo,&lt;br /&gt;
--   intercala 5 [1,2,6,3,7,9]  ==  [5,1,5,2,6,5,3,7,9]&lt;br /&gt;
--   intercala 5 [6,7,9,8]      ==  [6,7,9,8]&lt;br /&gt;
--&lt;br /&gt;
-- Define esta función&lt;br /&gt;
-- 1) por comprensión,&lt;br /&gt;
-- 2) por orden superior (map, filter, ...)&lt;br /&gt;
-- 3) por recursión,&lt;br /&gt;
-- 4) por plegado (con &amp;#039;foldr&amp;#039;).&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Elsa Domínguez&lt;br /&gt;
intercalaC :: Int -&amp;gt; [Int] -&amp;gt; [Int]&lt;br /&gt;
intercalaC y xs = concat [if x&amp;lt;y then [y,x] else [x] | x &amp;lt;- xs]&lt;br /&gt;
&lt;br /&gt;
intercalaS :: Int -&amp;gt; [Int] -&amp;gt; [Int]&lt;br /&gt;
intercalaS y xs = concat (map f xs)&lt;br /&gt;
                where f x = if x&amp;lt;y then [y,x] else [x]&lt;br /&gt;
&lt;br /&gt;
intercalaR :: Int -&amp;gt; [Int] -&amp;gt; [Int]&lt;br /&gt;
intercalaR y [] = []&lt;br /&gt;
intercalaR y (x:xs) | x&amp;lt;y  = [y,x] ++ intercalaR y xs&lt;br /&gt;
                    | x&amp;gt;y  = [x] ++ intercalaR y xs&lt;br /&gt;
&lt;br /&gt;
intercalaPR :: Int -&amp;gt; [Int] -&amp;gt; [Int]&lt;br /&gt;
intercalaPR y xs = foldr g [] xs&lt;br /&gt;
                 where g x recu | x&amp;lt;y  = [y,x] ++ recu&lt;br /&gt;
                                | x&amp;gt;y  = [x] ++ recu&lt;br /&gt;
&lt;br /&gt;
intercalaA :: Int -&amp;gt; [Int] -&amp;gt; [Int]&lt;br /&gt;
intercalaA y xs = aux [] xs&lt;br /&gt;
                where aux v [] = v&lt;br /&gt;
                      aux v (x:xs) | x&amp;lt;y        = aux (v++[y,x]) xs&lt;br /&gt;
                                   | otherwise  = aux (v++[x]) xs&lt;br /&gt;
&lt;br /&gt;
--José Manuel García&lt;br /&gt;
intercala1 :: (Ord a, Num a) =&amp;gt; a -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
intercala1 n xs = concat [if a &amp;lt; n then [n,a] else [a] | a&amp;lt;-xs]&lt;br /&gt;
&lt;br /&gt;
intercala2 :: (Ord a, Num a) =&amp;gt; a -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
intercala22 n xs = concat (map f xs)&lt;br /&gt;
                  where f x = if x &amp;lt; n then [n,x] else [x]&lt;br /&gt;
&lt;br /&gt;
intercala3 :: (Ord a, Num a) =&amp;gt; a -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
intercala3 n [] = []&lt;br /&gt;
intercala3 n (x:xs) = (if x &amp;lt; n then [n,x] else [x]) ++ (intercala3 n (xs))&lt;br /&gt;
&lt;br /&gt;
intercala4 n (x:xs) = (foldr (p) [] (x:xs) )&lt;br /&gt;
                      where p prim recu | prim &amp;lt; n = (n : prim:recu)&lt;br /&gt;
                                        | otherwise = (prim:recu)&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3. Se considera la función&lt;br /&gt;
--    dec2ent :: [Integer] -&amp;gt; Integer&lt;br /&gt;
-- tal que (dec2ent xs) es el número entero cuyas cifras ordenadas son los&lt;br /&gt;
-- elementos de la lista xs. Por ejemplo,&lt;br /&gt;
--   dec2ent [2,3,4,5]  ==  2345&lt;br /&gt;
--   dec2ent [1..9]     ==  123456789&lt;br /&gt;
--&lt;br /&gt;
-- Defie esta función&lt;br /&gt;
-- 1) por comprensión,&lt;br /&gt;
-- 2) por orden superior (map, filter, ...)&lt;br /&gt;
-- 3) por recursión,&lt;br /&gt;
-- 4) por plegado (con &amp;#039;foldr&amp;#039;).&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--José Manuel García&lt;br /&gt;
dec2ent1 :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2ent1 xs = read (concat [show x| x &amp;lt;- (sort xs)]) :: Integer&lt;br /&gt;
&lt;br /&gt;
dec2ent2 :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2ent2 xs = read (concat (map show (sort xs))) :: Integer&lt;br /&gt;
&lt;br /&gt;
dec2ent3 :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2ent3Aux :: Show a =&amp;gt; [a] -&amp;gt; [Char]&lt;br /&gt;
dec2ent3Aux [] = []&lt;br /&gt;
dec2ent3Aux (x:xs) = (show x) ++ (dec2ent3Aux xs)&lt;br /&gt;
dec2ent3 xs = read (dec2ent3Aux (sort xs)) :: Integer&lt;br /&gt;
&lt;br /&gt;
dec2ent4 :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2ent4 xs = read (concat (foldr f [] (sort xs))) :: Integer&lt;br /&gt;
            where f prim recu = show prim :recu&lt;br /&gt;
&lt;br /&gt;
-- Elsa Domínguez&lt;br /&gt;
dec2entC :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2entC xs = sum [x*10^i | (x,i) &amp;lt;- zip xs (reverse [0..length xs-1])]&lt;br /&gt;
&lt;br /&gt;
dec2entS :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2entS xs = sum (map f xs)&lt;br /&gt;
            where f x = x*10^(length (dropWhile (/=x) xs) -1)&lt;br /&gt;
&lt;br /&gt;
-- Juan José Calero Vela:&lt;br /&gt;
&lt;br /&gt;
pos :: Integer -&amp;gt; [Integer] -&amp;gt; Integer&lt;br /&gt;
pos x [] = 0&lt;br /&gt;
pos x (y:xs) = if x==y then 1 else 1 + pos x xs&lt;br /&gt;
&lt;br /&gt;
dec2entC :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2entC xs = sum [ x*(10^(pos x (reverse xs)-1)) | x&amp;lt;-xs]&lt;br /&gt;
&lt;br /&gt;
-- profesor: solución vista en clase&lt;br /&gt;
dec2entS xs = sum (map f (zip xs [n-1,n-2..0]))&lt;br /&gt;
            where f (x,i) = x * 10^i&lt;br /&gt;
                  n = length xs -1&lt;br /&gt;
&lt;br /&gt;
dec2entR :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2entR [] = 0&lt;br /&gt;
dec2entR (x:xs) = x*10^(length xs) + dec2entR xs&lt;br /&gt;
&lt;br /&gt;
dec2entPR :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2entPR xs = foldr f 0 xs&lt;br /&gt;
             where f x recu = x*10^(length (dropWhile (/=x) xs) -1) + recu&lt;br /&gt;
&lt;br /&gt;
--Manuel Alcaide&lt;br /&gt;
&lt;br /&gt;
dec2ent1&amp;#039; :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2ent1&amp;#039; xs = sum[x*(10^y)|(x,y)&amp;lt;-(zip xs [((length (xs))-1),((length (xs))-2)..0])]&lt;br /&gt;
&lt;br /&gt;
dec2ent2&amp;#039; :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2ent2&amp;#039; xs = sum (map f (zip xs [((length (xs))-1),((length (xs))-2)..0]))&lt;br /&gt;
  where f (x,y) = x*(10^y)&lt;br /&gt;
&lt;br /&gt;
dec2ent3&amp;#039; :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2ent3&amp;#039; [] = 0&lt;br /&gt;
dec2ent3&amp;#039; (x:xs) = x*(10^((length (x:xs))-1)) + dec2ent3 xs&lt;br /&gt;
&lt;br /&gt;
dec2ent4&amp;#039; :: [Integer] -&amp;gt; Integer&lt;br /&gt;
dec2ent4&amp;#039; xs = foldr f 0 $ zip xs [((length xs)-1),((length xs)-2)..0]&lt;br /&gt;
  where f (x,p) recu = x*(10^p) + recu&lt;br /&gt;
&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4. Se considera la función&lt;br /&gt;
--     diferencia :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
-- tal que (diferencia xs ys) es la diferencia entre los conjuntos xs e&lt;br /&gt;
-- ys; es decir, el conjunto de los elementos de la lista xs que no se&lt;br /&gt;
-- encuentran en la lista ys. Por ejemplo,&lt;br /&gt;
--   diferencia [2,3,5,6] [5,2,7]  ==  [3,6]&lt;br /&gt;
--   diferencia [1,3,5,7] [2,4,6]  ==  [1,3,5,7]&lt;br /&gt;
--   diferencia [1,3] [1..9]       ==  []&lt;br /&gt;
--&lt;br /&gt;
-- Define esta función&lt;br /&gt;
-- 1) por comprensión,&lt;br /&gt;
-- 2) por orden superior (map, filter, ...)&lt;br /&gt;
-- 3) por recursión,&lt;br /&gt;
-- 4) por plegado (con &amp;#039;foldr&amp;#039;).&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Elsa Domínguez&lt;br /&gt;
diferenciaC :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
diferenciaC xs ys = [x | x &amp;lt;- xs, notElem x ys]&lt;br /&gt;
  &lt;br /&gt;
diferenciaS :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
diferenciaS xs ys = concat (map f xs)&lt;br /&gt;
                  where f x | notElem x ys  = [x]&lt;br /&gt;
                            | otherwise     = []&lt;br /&gt;
  &lt;br /&gt;
diferenciaR :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
diferenciaR [] _ = []&lt;br /&gt;
diferenciaR (x:xs) ys | notElem x ys  = [x] ++ diferenciaR xs ys&lt;br /&gt;
                      | otherwise     = diferenciaR xs ys&lt;br /&gt;
  &lt;br /&gt;
diferenciaPR :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
diferenciaPR xs ys = foldr g [] xs&lt;br /&gt;
                   where g x recu | notElem x ys  = [x] ++ recu&lt;br /&gt;
                                  | otherwise     = recu&lt;br /&gt;
&lt;br /&gt;
--José Manuel García&lt;br /&gt;
diferencia1 :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
diferencia1 xs ys = [x | x &amp;lt;- xs, not (elem x ys) ] -- ++ [y | y &amp;lt;- ys, not (elem y xs) ]&lt;br /&gt;
&lt;br /&gt;
diferencia2 :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
diferencia2 (x:xs) ys = filter f (x:xs)&lt;br /&gt;
                   where f a = not (elem a ys)&lt;br /&gt;
&lt;br /&gt;
diferencia3 :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
diferencia3 [] _ = []&lt;br /&gt;
diferencia3 (x:xs) ys | not (elem x ys) = x : (diferencia3 xs ys)&lt;br /&gt;
                      | otherwise = (diferencia3 xs ys)&lt;br /&gt;
&lt;br /&gt;
diferencia4 :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
diferencia4 (x:xs) ys = foldr f [] (x:xs)&lt;br /&gt;
                     where f prim recu | not (elem prim ys) = prim : recu&lt;br /&gt;
                                       | otherwise = recu&lt;br /&gt;
&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5. Se considera la función&lt;br /&gt;
--   primerosYultimos :: [[a]] -&amp;gt; ([a],[a])&lt;br /&gt;
-- tal que (primerosYultimos xss) es el par formado por la lista de los&lt;br /&gt;
-- primeros elementos de las listas no vacías de xss y la lista de los&lt;br /&gt;
-- últimos elementos de las listas no vacías de xss. Por ejemplo,&lt;br /&gt;
--   primerosYultimos [[1,2],[5,3,4],[],[9]]  ==  ([1,5,9],[2,4,9])&lt;br /&gt;
--   primerosYultimos [[1,2],[1,2,3],[1..4]]  ==  ([1,1,1],[2,3,4])&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
-- Define esta función&lt;br /&gt;
-- 1) por comprensión,&lt;br /&gt;
-- 2) por orden superior (map, filter, ...)&lt;br /&gt;
-- 3) por recursión,&lt;br /&gt;
-- 4) por plegado (con &amp;#039;foldr&amp;#039;).&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--José Manuel García&lt;br /&gt;
primerosYultimos1 :: [[a]] -&amp;gt; ([a], [a])&lt;br /&gt;
primerosYultimos1 xss = ([head x | x &amp;lt;- xss, not (null x)], [last x | x &amp;lt;- xss, not (null x)]) &lt;br /&gt;
&lt;br /&gt;
noVacios :: Foldable t =&amp;gt; [t a] -&amp;gt; [t a]&lt;br /&gt;
noVacios xss = filter (not.null) xss&lt;br /&gt;
primerosYultimos2 :: [[a]] -&amp;gt; ([a], [a])&lt;br /&gt;
primerosYultimos2 xss = (map head (noVacios xss), map last (noVacios xss))&lt;br /&gt;
&lt;br /&gt;
primeros3 :: [[a]] -&amp;gt; [a]&lt;br /&gt;
primeros3 [] = []&lt;br /&gt;
primeros3 (xs:xss) | not (null xs) = (head xs) : (primeros3 xss)&lt;br /&gt;
                   | otherwise = (primeros3 xss)&lt;br /&gt;
ultimos3 :: [[a]] -&amp;gt; [a]&lt;br /&gt;
ultimos3 [] = []&lt;br /&gt;
ultimos3 (xs:xss) | not (null xs) = (last xs) : (ultimos3 xss)&lt;br /&gt;
                  | otherwise = (ultimos3 xss)&lt;br /&gt;
primerosYultimos3 :: [[a]] -&amp;gt; ([a], [a])&lt;br /&gt;
primerosYultimos3 xss = (primeros3 xss, ultimos3 xss )&lt;br /&gt;
&lt;br /&gt;
primeros4 :: Foldable t =&amp;gt; t [a] -&amp;gt; [a]&lt;br /&gt;
primeros4 xss = foldr p4 [] xss&lt;br /&gt;
             where p4 prim recu | not (null prim) = head prim : recu&lt;br /&gt;
                                | otherwise = recu&lt;br /&gt;
ultimos4 :: Foldable t =&amp;gt; t [a] -&amp;gt; [a]                                &lt;br /&gt;
ultimos4 xss = foldr u4 [] xss&lt;br /&gt;
             where u4 prim recu | not (null prim) = last prim : recu&lt;br /&gt;
                                | otherwise = recu&lt;br /&gt;
primerosYultimos4 :: [[a]] -&amp;gt; ([a], [a])&lt;br /&gt;
primerosYultimos4 xss = (primeros4 xss, ultimos4 xss)&lt;br /&gt;
&lt;br /&gt;
-- Elsa Domínguez&lt;br /&gt;
primerosYultimosC :: [[a]] -&amp;gt; ([a],[a])&lt;br /&gt;
primerosYultimosC xss = (concat [(take 1  xs) | xs &amp;lt;- xss], concat [take 1 (reverse xs) | xs &amp;lt;- xss])&lt;br /&gt;
                     &lt;br /&gt;
primerosYultimosS :: [[a]] -&amp;gt; ([a],[a])&lt;br /&gt;
primerosYultimosS xss = (concat (map (take 1) xss), concat (map (take 1) (map reverse xss)))&lt;br /&gt;
&lt;br /&gt;
primerosYultimosR :: [[a]] -&amp;gt; ([a],[a])&lt;br /&gt;
primerosYultimosR xss = (primerosR xss, ultimosR xss)&lt;br /&gt;
&lt;br /&gt;
primerosR [] = []&lt;br /&gt;
primerosR (xs:xss) | null xs    = primerosR xss&lt;br /&gt;
                   | otherwise  = [head xs] ++ primerosR xss&lt;br /&gt;
ultimosR [] = []&lt;br /&gt;
ultimosR (xs:xss) | null xs    = ultimosR xss&lt;br /&gt;
                  | otherwise  = [last xs] ++ ultimosR xss&lt;br /&gt;
                  &lt;br /&gt;
primerosYultimosPR :: [[a]] -&amp;gt; ([a],[a])&lt;br /&gt;
primerosYultimosPR xss = (primerosPR xss, ultimosPR xss) &lt;br /&gt;
&lt;br /&gt;
primerosPR xss = foldr f [] xss&lt;br /&gt;
              where f x recu | null x     = recu&lt;br /&gt;
                             | otherwise  = [head x] ++ recu&lt;br /&gt;
ultimosPR xss = foldr f [] xss&lt;br /&gt;
              where f x recu | null x     = recu&lt;br /&gt;
                             | otherwise  = [last x] ++ recu&lt;br /&gt;
&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6. Una lista hermanada es una lista de números estrictamente&lt;br /&gt;
-- positivos en la que cada elemento tiene algún factor primo en común con el&lt;br /&gt;
-- siguiente, en caso de que exista, o alguno de los dos es un 1. Por ejemplo,&lt;br /&gt;
-- [2,6,3,9,1,5] es una lista hermanada.&lt;br /&gt;
&lt;br /&gt;
-- Se considera la función&lt;br /&gt;
--    hermanada :: [Int] -&amp;gt; Bool&lt;br /&gt;
-- tal que (hermanada xs) comprueba que la lista xs es hermanada según la&lt;br /&gt;
-- definición anterior. Por ejemplo,&lt;br /&gt;
--    hermanada [2,6,3,9,1,5]  ==  True&lt;br /&gt;
--    hermanada [2,3,5]        ==  False&lt;br /&gt;
--&lt;br /&gt;
-- Se pide definir esta función&lt;br /&gt;
-- 1) por comprensión,&lt;br /&gt;
-- 2) por orden superior (map, filter, ...)&lt;br /&gt;
-- 3) por recursión,&lt;br /&gt;
-- 4) por plegado (con &amp;#039;foldr&amp;#039;).&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
-- Nota: Usa la función &amp;#039;gcd&amp;#039;&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--José Manuel García&lt;br /&gt;
primo1 :: Integral a =&amp;gt; a -&amp;gt; Bool&lt;br /&gt;
primo1 x = [1,x]==[a| a&amp;lt;- [1..x], rem x a == 0] -- Me dice si un número es primo&lt;br /&gt;
hermanada1 :: [Int] -&amp;gt; Bool&lt;br /&gt;
hermanada1 xs = sum [1 | (a,b) &amp;lt;- (zip xs (tail xs)), (if ((a/=1) &amp;amp;&amp;amp; (b/=1))&lt;br /&gt;
                                                  then ((gcd a b /= 1) &amp;amp;&amp;amp; (primo1 (gcd a b)))&lt;br /&gt;
                                                  else True),&lt;br /&gt;
                                                                                a&amp;gt;0, b&amp;gt;0 ] == (length xs) -1&lt;br /&gt;
          -- a,b &amp;gt; 0 porque tienen que ser extrictamente positivos&lt;br /&gt;
          -- ((length xs) - 1) == length (zip xs (tail xs))&lt;br /&gt;
&lt;br /&gt;
primo2 :: Integral a =&amp;gt; a -&amp;gt; Bool&lt;br /&gt;
primo2 x = filter p2 [1..x] == [1,x]&lt;br /&gt;
         where p2 b = (rem x b == 0)&lt;br /&gt;
hermanada2 :: [Int] -&amp;gt; Bool&lt;br /&gt;
hermanada2 xs = and (map prop2 (zip xs (tail xs)))&lt;br /&gt;
           where prop2 (a,b) = if a&amp;gt;0 &amp;amp;&amp;amp; b&amp;gt;0&lt;br /&gt;
                               then (if ((a/=1) &amp;amp;&amp;amp; (b/=1)) then ((gcd a b /= 1) &amp;amp;&amp;amp; (primo2 (gcd a b))) else True)&lt;br /&gt;
                               else False&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
primo3 :: Integral a =&amp;gt; a -&amp;gt; Bool&lt;br /&gt;
primo3 n = noHayNumerosDivisoresDe n 2 (n - 1)&lt;br /&gt;
noHayNumerosDivisoresDe :: Integral t =&amp;gt; t -&amp;gt; t -&amp;gt; t -&amp;gt; Bool&lt;br /&gt;
noHayNumerosDivisoresDe n minimo maximo   | minimo &amp;gt;= maximo  = True&lt;br /&gt;
                                          | rem n minimo == 0 = False&lt;br /&gt;
                                          | otherwise         = noHayNumerosDivisoresDe n (minimo + 1) maximo&lt;br /&gt;
hermanada3 :: [Int] -&amp;gt; Bool&lt;br /&gt;
hermanada3 [b] = True&lt;br /&gt;
hermanada3 (a:b:xs) = (if ((a/=1) &amp;amp;&amp;amp; (b/=1)) then ((gcd a b /= 1) &amp;amp;&amp;amp; (primo2 (gcd a b))) else True)&lt;br /&gt;
                      &amp;amp;&amp;amp; hermanada3 (b:xs)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
hermanada4 xs = undefined&lt;br /&gt;
---------------------------------------------------------------------------------------&lt;br /&gt;
--Adriana Gordillo, Elsa Domínguez&lt;br /&gt;
hermanadaC :: [Int] -&amp;gt; Bool&lt;br /&gt;
hermanadaC xs | elem 0 xs  = False&lt;br /&gt;
              | otherwise  = and [(gcd x y == x) || (gcd x y == y) || not (null (primeFactors (gcd x y))) | (x,y) &amp;lt;- zip xs (tail xs)]&lt;br /&gt;
        &lt;br /&gt;
hermanadaS :: [Int] -&amp;gt; Bool&lt;br /&gt;
hermanadaS xs | elem 0 xs  = False&lt;br /&gt;
              | otherwise  = and (map f (zip xs (tail xs)))&lt;br /&gt;
              where f (x,y) = (gcd x y == x) || (gcd x y == y) || not (null (primeFactors (gcd x y)))&lt;br /&gt;
                                    &lt;br /&gt;
hermanadaR :: [Int] -&amp;gt; Bool&lt;br /&gt;
hermanadaR [x] = True&lt;br /&gt;
hermanadaR (x:y:xs) | elem 0 (x:y:xs)  = False&lt;br /&gt;
                    | otherwise        = ((gcd x y == x) || (gcd x y == y) || not (null (primeFactors (gcd x y)))) &amp;amp;&amp;amp; hermanadaR (y:xs)&lt;br /&gt;
&lt;br /&gt;
hermanadaPR :: [Int] -&amp;gt; Bool   &lt;br /&gt;
hermanadaPR xs | elem 0 xs = False&lt;br /&gt;
               | otherwise = foldr f True (zip xs (tail xs))&lt;br /&gt;
               where f (x,y) recu = ((gcd x y == x) || (gcd x y == y) || not (null (primeFactors (gcd x y)))) &amp;amp;&amp;amp; recu&lt;br /&gt;
&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7. Un elemento de una lista es permanente si ninguno de los que&lt;br /&gt;
-- vienen a continuación en la lista es mayor que él. Consideramos la función&lt;br /&gt;
--   permanentes :: [Int] -&amp;gt; [Int]&lt;br /&gt;
-- tal que (permanentes xs) es la lista de los elementos permanentes de la&lt;br /&gt;
-- lista xs. Por ejemplo,&lt;br /&gt;
--   permanentes [80,1,7,8,4]  ==  [80,8,4]&lt;br /&gt;
&lt;br /&gt;
-- Se pide definir esta función&lt;br /&gt;
-- 1) por comprensión,&lt;br /&gt;
-- 2) por orden superior (map, filter, ...)&lt;br /&gt;
-- 3) por recursión,&lt;br /&gt;
-- 4) por plegado (con &amp;#039;foldr&amp;#039;).&lt;br /&gt;
-- ---------------------------------------------------------------------------&lt;br /&gt;
-- Nota: Usa la función &amp;#039;tails&amp;#039; de Data.List.&lt;br /&gt;
-- ----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--José Manuel García&lt;br /&gt;
permanentes1 :: [Int] -&amp;gt; [Int]&lt;br /&gt;
permanentes1 xs = [a | (a,b) &amp;lt;- (zip xs (init (tails xs))), a == maximum b ]&lt;br /&gt;
&lt;br /&gt;
permanentes2 :: [Int] -&amp;gt; [Int]&lt;br /&gt;
permanentes2 xs = map head (filter p2 (init (tails xs)))&lt;br /&gt;
              where p2 (x:xs) = x == maximum (x:xs)&lt;br /&gt;
&lt;br /&gt;
comparacion3 :: Ord a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; Bool&lt;br /&gt;
comparacion3 a [] = True&lt;br /&gt;
comparacion3 a b = a &amp;gt;= b &lt;br /&gt;
permanentes3 :: [Int] -&amp;gt; [Int]&lt;br /&gt;
permanentes3 [] = []&lt;br /&gt;
permanentes3 (x:xs) | [x] `comparacion3` [maximum3 xs] = x : permanentes3 xs&lt;br /&gt;
                    | otherwise = permanentes3 xs&lt;br /&gt;
                 where maximum3 [] = if x &amp;lt; 0 then x else -x&lt;br /&gt;
                       maximum3 xs = maximum xs&lt;br /&gt;
&lt;br /&gt;
permanentes4:: [Int] -&amp;gt; [Int]&lt;br /&gt;
permanentes4 (x:xs) = foldr f4 [] (x:xs)&lt;br /&gt;
                    where f4 prim recu | [prim] `comparacion3` [maximum3 recu] = prim : recu&lt;br /&gt;
                                       | otherwise = recu&lt;br /&gt;
                          maximum3 [] = if x &amp;lt; 0 then x else -x&lt;br /&gt;
                          maximum3 xs = maximum xs&lt;br /&gt;
&lt;br /&gt;
-- Elsa Domínguez&lt;br /&gt;
permanentesC :: [Int] -&amp;gt; [Int]&lt;br /&gt;
permanentesC xs = [x | (x, xs&amp;#039;) &amp;lt;- zip xs (tails (drop 1 xs)), xs&amp;#039; == [] || x &amp;gt;= maximum xs&amp;#039;] &lt;br /&gt;
&lt;br /&gt;
permanentesS :: [Int] -&amp;gt; [Int]&lt;br /&gt;
permanentesS xs = filter p xs&lt;br /&gt;
                where p x = x == maximum (dropWhile (/=x) xs)&lt;br /&gt;
  &lt;br /&gt;
permanentesR :: [Int] -&amp;gt; [Int]&lt;br /&gt;
permanentesR [] = []&lt;br /&gt;
permanentesR [x] = [x] &lt;br /&gt;
permanentesR (x:xs) | x &amp;gt;= maximum xs  = [x] ++ permanentesR xs&lt;br /&gt;
                    | otherwise        = permanentesR xs&lt;br /&gt;
                    &lt;br /&gt;
permanentesPR :: [Int] -&amp;gt; [Int]&lt;br /&gt;
permanentesPR (x:xs) = foldr f [] (x:xs)&lt;br /&gt;
                     where f x recu | x &amp;gt;= maximum&amp;#039; (dropWhile (/=x) xs)  = [x] ++ recu&lt;br /&gt;
                                    | otherwise                           = recu&lt;br /&gt;
maximum&amp;#039; xs | null xs    = 0&lt;br /&gt;
            | otherwise  = maximum xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8. Un número entero positivo n es muy primo si es n primo&lt;br /&gt;
-- y todos los números que resultan de ir suprimimiendo la última cifra&lt;br /&gt;
-- también son primos. Por ejemplo, 7193 es muy primo pues los números&lt;br /&gt;
-- 7193, 719, 71 y 7 son todos primos. &lt;br /&gt;
-- &lt;br /&gt;
-- Define la función &lt;br /&gt;
--    muyPrimo :: Integer -&amp;gt; Bool&lt;br /&gt;
-- que (muyPrimo n) se verifica si n es muy primo. Por ejemplo,&lt;br /&gt;
--    muyPrimo 7193  == True&lt;br /&gt;
--    muyPrimo 71932 == False&lt;br /&gt;
-- --------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--José Manuel García&lt;br /&gt;
esPrimo :: Integral a =&amp;gt; a -&amp;gt; Bool&lt;br /&gt;
esPrimo x = filter p2 [1..x] == [1,x]&lt;br /&gt;
         where p2 b = (rem x b == 0)&lt;br /&gt;
muyPrimo :: Integer -&amp;gt; Bool         &lt;br /&gt;
muyPrimo n | esPrimo n = length (show n) == sum [1 | a &amp;lt;- (descomposicion n), esPrimo (read a :: Integer) ]&lt;br /&gt;
           | otherwise = False&lt;br /&gt;
           where descomposicion n =  [reverse x | x &amp;lt;- (init(tails (reverse (show n))))] &lt;br /&gt;
-- Elsa Domínguez&lt;br /&gt;
muyPrimo&amp;#039; :: Integer -&amp;gt; Bool&lt;br /&gt;
muyPrimo&amp;#039; n = and (map isPrime (lista n))&lt;br /&gt;
lista n = [read a :: Integer | a &amp;lt;- tail (inits (show n))] &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- ¿Cuántos números de cinco cifras son muy primos?&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- El cálculo es&lt;br /&gt;
&lt;br /&gt;
--José Manuel García&lt;br /&gt;
calculoMuyPrimo = sum [1 | x &amp;lt;- [10000..99999], muyPrimo x] -- Tras unos minutos, sale 15.&lt;br /&gt;
-- Elsa Domínguez&lt;br /&gt;
muyPrimos5cifras = sum [1 | x &amp;lt;- [10000..99999], muyPrimo&amp;#039; x] -- Sale 15 &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Manalcgar</name></author>
	</entry>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_1&amp;diff=105</id>
		<title>Relación 1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_1&amp;diff=105"/>
		<updated>2021-09-29T08:51:27Z</updated>

		<summary type="html">&lt;p&gt;Manalcgar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;#039;haskell&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- I1M 2021-22: Rel_1.hs (24 de septiembre de 2021)&lt;br /&gt;
-- Definiciones por composición sobre números, listas y booleanos. &lt;br /&gt;
-- Departamento de Ciencias de la Computación e I.A.&lt;br /&gt;
-- Universidad de Sevilla&lt;br /&gt;
-- =====================================================================&lt;br /&gt;
&lt;br /&gt;
import Data.List&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Introducción                                                       --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- En esta relación se plantean ejercicios con definiciones de funciones &lt;br /&gt;
-- por composición sobre números, listas y booleanos.&lt;br /&gt;
-- &lt;br /&gt;
-- Para solucionar los ejercicios puede ser útil el manual de&lt;br /&gt;
-- funciones de Haskell que se encuentra en http://bit.ly/1uJZiqi y su&lt;br /&gt;
-- resumen en http://bit.ly/ZwSMHO&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1. Definir la función media3 tal que (media3 x y z) es&lt;br /&gt;
-- la media aritmética de los números x, y y z. Por ejemplo, &lt;br /&gt;
--    media3 1 3 8     ==  4.0&lt;br /&gt;
--    media3 (-1) 0 7  ==  2.0&lt;br /&gt;
--    media3 (-3) 0 3  ==  0.0&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
media3 x y z = undefined&lt;br /&gt;
-- Miguel Ángel Martínez&lt;br /&gt;
media3 x y z = .sdfsdfadf&lt;br /&gt;
-- Manuel Alcaide García, Lucía Hernández, Adriana Gordillo Melero, Nicolás Rodríguez Ruiz, Irene Ortega Moncayo, Laura Arango, Ana Sosa Caballero, Adolfo Sagrera Vivancos, Pelayo INfante Pérez, Sara Cerro Torres, Virginia Sánchez, Carmen Blanco&lt;br /&gt;
media3 x y z = (x+y+z)/3&lt;br /&gt;
-- Antonio López García, César Fornis Catalán&lt;br /&gt;
media3 x y z = (sum [x,y,z])/3&lt;br /&gt;
media3 x y z = (x+y+z)/3&lt;br /&gt;
-- Francisco José Espinosa&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2. Definir la función sumaMonedas tal que &lt;br /&gt;
-- (sumaMonedas a b c d e) es la suma de los euros correspondientes a &lt;br /&gt;
-- a monedas de 1 euro, b de 2 euros, c de 5 euros, d 10 euros y&lt;br /&gt;
-- e de 20 euros. Por ejemplo,&lt;br /&gt;
--    sumaMonedas 0 0 0 0 1  ==  20&lt;br /&gt;
--    sumaMonedas 0 0 8 0 3  == 100&lt;br /&gt;
--    sumaMonedas 1 1 1 1 1  ==  38&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
sumaMonedas a b c d e = undefined&lt;br /&gt;
-- Adriana Gordillo Melero, Nicolás Rodríguez Ruiz, Lucía Hernández, Laura Arango, Ana Sosa Caballero, Sara Cerro Torres&lt;br /&gt;
sumamonedas a b c d e = a+b*2+c*5+d*10+e*20&lt;br /&gt;
-- Antonio López García, Irene Ortega, César Fornis Catalán, Virginia Sánchez&lt;br /&gt;
sumaMonedas a b c d e = sum [a, b*2, c*5, d*10, e*20]&lt;br /&gt;
-- Adolfo Sagrera Vivancos, Lucía González, Pelayo Infante, Francisco José Espinosa, Carmen Blanco&lt;br /&gt;
sumaMonedas a b c d e = a*1+b*2+c*5+d*10+e*20&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3. Definir la función volumenEsfera tal que &lt;br /&gt;
-- (volumenEsfera r) es el volumen de la esfera de radio r. Por ejemplo,&lt;br /&gt;
--    volumenEsfera 10  ==  4188.790204786391&lt;br /&gt;
-- Indicación: Usar la constante pi.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
volumenEsfera r = undefined &lt;br /&gt;
-- Adriana Gordillo Melero, Lucía Hernández, Nicolás Rodríguez Ruiz, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía González, Pelayo Infante, Sara Cerro Torres&lt;br /&gt;
 volumenEsfera r = (4/3)*pi*r^3&lt;br /&gt;
-- Adolfo Sagrera Vivancos, Carmen Blanco&lt;br /&gt;
volumenEsfera r =(4/3)*(pi*r^3)&lt;br /&gt;
-- Irene Ortega&lt;br /&gt;
volumenEsfera r = pi*(r^3)*4/3&lt;br /&gt;
-- Francisco José Espinosa&lt;br /&gt;
-- César Fornis Catalán, Virginia Sánchez&lt;br /&gt;
volumenEsfera r = (4*pi*r^3)/3&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4. Definir la función areaDeCoronaCircular tal que &lt;br /&gt;
-- (areaDeCoronaCircular r1 r2) es el área de una corona circular de&lt;br /&gt;
-- radio interior r1 y radio exterior r2. Por ejemplo,&lt;br /&gt;
--    areaDeCoronaCircular 1 2 == 9.42477796076938&lt;br /&gt;
--    areaDeCoronaCircular 2 5 == 65.97344572538566&lt;br /&gt;
--    areaDeCoronaCircular 3 5 == 50.26548245743669&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Adriana Gordillo Melero, Antonio López García, Lucía González, Nicolás Rodríguez Ruiz, Sara Cerro Torres&lt;br /&gt;
areaDeCoronaCircular r1 r2 = pi*r2^2 - pi*r1^2&lt;br /&gt;
--Álvaro Cano, Ana Sosa Caballero, Irene Ortega, César Fornis Catalán&lt;br /&gt;
areaDeCoronaCircular r1 r2 = pi*(r2^2-r1^2)&lt;br /&gt;
--Laura Arango&lt;br /&gt;
areaDeCoronaCircular r1 r2 = areaCirculo r2 - areaCirculo r1&lt;br /&gt;
                             where areaCirculo r = pi*r^2&lt;br /&gt;
--Adolfo Sagrera Vivancos, Pelayo INfante , Francisco José Espinosa&lt;br /&gt;
areaDeCoronaCircular r1 r2 = (pi*r2^2)-(pi*r1^2)&lt;br /&gt;
-- Carmen Blanco&lt;br /&gt;
-- Virginia Sánchez&lt;br /&gt;
areaDeCoronaCircular r1 r2 = (pi*(r2)^2) - (pi*(r1)^2)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5. Definir la función ultimaCifra tal que (ultimaCifra x)&lt;br /&gt;
-- es la última cifra del nímero x. Por ejemplo,&lt;br /&gt;
--    ultimaCifra 325  ==  5&lt;br /&gt;
-- Indicación: Usar la función rem&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Adriana Gordillo Melero, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía González, Adolfo Sagrera Vivancos Francisco José Espinosa, Lucía González, Nicolás Rodríguez Ruiz, Irene Ortega, Carmen Blanco, César Fornis Catalán&lt;br /&gt;
ultimaCifra x = rem x 10&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6. Definir la función maxTres tal que (maxTres x y z) es&lt;br /&gt;
-- el máximo de x, y y z. Por ejemplo,&lt;br /&gt;
--    maxTres 6 2 4  ==  6&lt;br /&gt;
--    maxTres 6 7 4  ==  7&lt;br /&gt;
--    maxTres 6 7 9  ==  9&lt;br /&gt;
-- Indicación: Usar la función max.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Laura Arango, Adriana Gordillo, Irene Ortega, Nicolás Rodríguez Ruiz&lt;br /&gt;
maxTres x y z = max(max x y)(z)&lt;br /&gt;
-- Ana Sosa Caballero, Adolfo Sagrera Vivancos&lt;br /&gt;
maxTres x y z = max x t&lt;br /&gt;
                where t = max y z&lt;br /&gt;
&lt;br /&gt;
-- Antonio López García, Lucía González, Carmen Blanco&lt;br /&gt;
maxTres x y z = maximum [x,y,z]&lt;br /&gt;
--César Fornis Catalán&lt;br /&gt;
maxTres x y z = max(max x y) z&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7. Definir la función rota1 tal que (rota1 xs) es la lista&lt;br /&gt;
-- obtenida poniendo el primer elemento de xs al final de la lista. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    rota1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Laura Arango, Adriana Gordillo, Ana Sosa Caballero , Irene Ortega, Lucía González, Nicolás Rodríguez Ruiz, Carmen Blanco, Adolfo Sagrera Vivancos&lt;br /&gt;
rota1 xs = tail xs ++ [head xs]&lt;br /&gt;
-- Antonio López García&lt;br /&gt;
rota1 xs = drop 1 xs ++ take 1 xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8. Definir la función rota tal que (rota n xs) es la lista&lt;br /&gt;
-- obtenida poniendo los n primeros elementos de xs al final de la&lt;br /&gt;
-- lista. Por ejemplo, &lt;br /&gt;
--    rota 1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
--    rota 2 [3,2,5,7]  ==  [5,7,3,2]&lt;br /&gt;
--    rota 3 [3,2,5,7]  ==  [7,3,2,5]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Lucía Hernández, Laura Arango, Adriana Gordillo, Ana Sosa Caballero, Antonio López García, Irene Ortega, Lucía González, Adolfo Sagrera Vivancos&lt;br /&gt;
rota n xs = drop n xs ++ take n xs&lt;br /&gt;
&lt;br /&gt;
-- Fernando Ruiz (mejora para conseguir rotar el vector un número mayor de veces que de elementos en el vector)&lt;br /&gt;
rota n xs = drop (mod n (length xs)) xs ++ take (mod n (length xs)) xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9. Definir la función rango tal que (rango xs) es la&lt;br /&gt;
-- lista formada por el menor y mayor elemento de xs.&lt;br /&gt;
--    rango [3,2,7,5]  ==  [2,7]&lt;br /&gt;
-- Indicación: Se pueden usar minimum y maximum.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Lucía Hernández, Laura Arango, Irene Ortega, Lucía González, Adolfo Sagrera Vivancos&lt;br /&gt;
rango xs = [minimum xs] ++ [maximum xs]&lt;br /&gt;
-- Ana Sosa Caballero, Antonio López García&lt;br /&gt;
rango xs = [minimum xs, maximum xs]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10. Definir la función palindromo tal que (palindromo xs) se&lt;br /&gt;
-- verifica si xs es un palíndromo; es decir, es lo mismo leer xs de&lt;br /&gt;
-- izquierda a derecha que de derecha a izquierda. Por ejemplo,&lt;br /&gt;
--    palindromo [3,2,5,2,3]    ==  True&lt;br /&gt;
--    palindromo [3,2,5,6,2,3]  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Álvaro Cano, José Manuel Sánchez Parra, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía Hernández, Manuel Alcaide&lt;br /&gt;
palindromo xs = xs == reverse xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11. Definir la función interior tal que (interior xs) es la&lt;br /&gt;
-- lista obtenida eliminando los extremos de la lista xs. Por ejemplo,&lt;br /&gt;
--    interior [2,5,3,7,3]  ==  [5,3,7]&lt;br /&gt;
--    interior [2..7]       ==  [3,4,5,6]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Lucía Hernández, Ana Sosa Caballero&lt;br /&gt;
interior xs = tail (init xs)&lt;br /&gt;
--Laura Arango&lt;br /&gt;
interior xs = drop 1 (init xs)&lt;br /&gt;
--Fernando Ruiz, Antonio López García&lt;br /&gt;
interior xs = init (tail xs)&lt;br /&gt;
--Manuel Alcaide García&lt;br /&gt;
interior xs = init (drop 1 xs)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12. Definir la función finales tal que (finales n xs) es la&lt;br /&gt;
-- lista formada por los n finales elementos de xs. Por ejemplo,&lt;br /&gt;
--    finales 3 [2,5,4,7,9,6]  ==  [7,9,6]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Álvaro Cano&lt;br /&gt;
finales n xs = drop n xs&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
finales n xs = reverse (take n (reverse xs))&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
finales n xs = drop m xs&lt;br /&gt;
               where m = length xs - n&lt;br /&gt;
-- Antonio López García, Fernando Ruiz Mazo, Pelayo Infante, Manuel Alcaide García&lt;br /&gt;
finales n xs = drop (length xs - n) xs&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13. Definir la función segmento tal que (segmento m n xs) es&lt;br /&gt;
-- la lista de los elementos de xs comprendidos entre las posiciones m y&lt;br /&gt;
-- n. Por ejemplo,&lt;br /&gt;
--    segmento 3 4 [3,4,1,2,7,9,0]  ==  [1,2]&lt;br /&gt;
--    segmento 3 5 [3,4,1,2,7,9,0]  ==  [1,2,7]&lt;br /&gt;
--    segmento 5 3 [3,4,1,2,7,9,0]  ==  []&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
--Laura Arango&lt;br /&gt;
segmento m n xs = drop (m-1) (reverse (drop a ys))&lt;br /&gt;
                  where a  = length xs - n&lt;br /&gt;
                        ys = reverse XS&lt;br /&gt;
-- Ana Sosa Caballero, Antonio López García &lt;br /&gt;
segmento m n xs = drop (m-1) (take n xs)&lt;br /&gt;
-- Fernando Ruiz &lt;br /&gt;
segmento m n xs = reverse (drop ((length xs)-n+m-2)(reverse (drop (m-1) xs)))&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
segmento m n xs = take (n-m+1)(drop(m-1) xs)&lt;br /&gt;
--Manuel Alcaide García&lt;br /&gt;
segmento m n xs = take (n-(m-1)) (drop (m-1) xs)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14. Definir la función extremos tal que (extremos n xs) es&lt;br /&gt;
-- la lista formada por los n primeros elementos de xs y los n finales&lt;br /&gt;
-- elementos de xs. Por ejemplo, &lt;br /&gt;
--    extremos 3 [2,6,7,1,2,4,5,8,9,2,3]  ==  [2,6,7,9,2,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango&lt;br /&gt;
extremos n xs = take n xs ++ finales n XS&lt;br /&gt;
-- Ana Sosa Caballero, Lucía Hernández, Fernando Ruiz&lt;br /&gt;
extremos n xs = take n xs ++ reverse (take n (reverse xs))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15. Definir la función mediano tal que (mediano x y z) es el&lt;br /&gt;
-- número mediano de los tres números x, y y z. Por ejemplo,&lt;br /&gt;
--    mediano 3 2 5  ==  3&lt;br /&gt;
--    mediano 2 4 5  ==  4&lt;br /&gt;
--    mediano 2 6 5  ==  5&lt;br /&gt;
--    mediano 2 6 6  ==  6&lt;br /&gt;
-- Indicación: Usar maximum y minimum.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
--Laura Arango&lt;br /&gt;
 mediano x y z = max x (min y z) (Contraejemplo : mediano 8 10 3)&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
mediano x y z = minimum [maximum [x,y], z] (Contraejemplo : mediano 8 10 3)&lt;br /&gt;
-- Antonio López García&lt;br /&gt;
mediano x y z = maximum [minimum [x,y], minimum[x,z], minimum[y,z]]&lt;br /&gt;
-- Fernando Ruiz Mazo&lt;br /&gt;
mediano x y z = minimum ([maximum [x,y]] ++ [maximum [y,z]] ++ [maximum [x,z]])&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 16. Definir la función tresIguales tal que &lt;br /&gt;
-- (tresIguales x y z) se verifica si los elementos x, y y z son&lt;br /&gt;
-- iguales. Por ejemplo, &lt;br /&gt;
--    tresIguales 4 4 4  ==  True&lt;br /&gt;
--    tresIguales 4 3 4  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero, Lucía Hernández&lt;br /&gt;
tresIguales x y z = x==y &amp;amp;&amp;amp; x==z&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 17. Definir la función tresDiferentes tal que &lt;br /&gt;
-- (tresDiferentes x y z) se verifica si los elementos x, y y z son&lt;br /&gt;
-- distintos. Por ejemplo, &lt;br /&gt;
--    tresDiferentes 3 5 2  ==  True&lt;br /&gt;
--    tresDiferentes 3 5 3  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Lucía Hernández&lt;br /&gt;
tresDiferentes x y z = x/=y &amp;amp;&amp;amp; x/=z&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
tresDiferentes x y z = and [x/=y, y/=z, x/=z]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 18. Definir la función cuatroIguales tal que &lt;br /&gt;
-- (cuatroIguales x y z u) se verifica si los elementos x, y, z y u son&lt;br /&gt;
-- iguales. Por ejemplo, &lt;br /&gt;
--    cuatroIguales 5 5 5 5   ==  True&lt;br /&gt;
--    cuatroIguales 5 5 4 5   ==  False&lt;br /&gt;
-- Indicación: Usar la función tresIguales.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
cuatroIguales x y z u = tresIguales x y z == True &amp;amp;&amp;amp; x==u&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
cuatroIguales x y z u = tresIguales x y z &amp;amp;&amp;amp; x==u&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicios para trabajar con Data.List. Ver:&lt;br /&gt;
-- http://www.cs.us.es/~jalonso/cursos/i1m-19/doc/Funciones_basicas.html&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 19. Definir la función unicos, tal que (unicos xs)&lt;br /&gt;
-- devuelva la cantidad de elementos únicos que hay en la lista xs.&lt;br /&gt;
-- Por ejemplo, &lt;br /&gt;
--    unicos [1,4,8,2,1,4,6,1]  == 5 &lt;br /&gt;
--    unicos [10,9,8,10,5,10]  == 4&lt;br /&gt;
--    unicos [10,9,8]  == 3&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Lucía Hernández&lt;br /&gt;
unicos xs = length (nub xs)&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
unicos xs = length(group(sort xs))&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 20. Definir la función segundoMinimo, tal que (segundoMinimo xs)&lt;br /&gt;
-- devuelve el segundo elemento más pequeńo de la lista xs, obviando &lt;br /&gt;
-- repeticiones. Por ejemplo, &lt;br /&gt;
--    segundoMinimo [6,9,2,4]  ==  4&lt;br /&gt;
--    segundoMinimo [0.5,1.2,0.5,4.4,0.5]  ==  1.2&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango&lt;br /&gt;
segundoMinimo xs = sort (nub xs) !! 1&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
segundoMinimo xs = minimum (delete(minimum (xs))(nub xs))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 21. Definir la función kMaximo, tal que (kMaximo n xs) &lt;br /&gt;
-- devuelve el k-máximo elemento de xs (es decir, el que está en la&lt;br /&gt;
-- posición k de valores más altos), obviando repeticiones. Por ejemplo, &lt;br /&gt;
--    kMaximo 2 [6,9,2,4]  == 6&lt;br /&gt;
--    kMaximo 3 [10,9,8,10,5]  == 8&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
kMaximo k xs = reverse (sort (nub xs)) !! (k-1)&lt;br /&gt;
--José Manuel Sánchez Parra&lt;br /&gt;
kMaximo k xs = maximum(take k xs)&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
kMaximo k xs = head(drop(k-1) (reverse(sort (nub xs))))&lt;br /&gt;
--Antonio Medinilla Garófano&lt;br /&gt;
quitarMaximo xs = delete (maximum xs) xs&lt;br /&gt;
kMaximo k xs = maximum ((iterate quitarMaximo (nub xs)) !! (k-1))&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 22. Definir la función numPermut, tal que (numPermut xs) &lt;br /&gt;
-- devuelve el número de permutaciones sin repetición posibles con los&lt;br /&gt;
-- elementos de la lista xs. Por ejemplo, &lt;br /&gt;
--    numPermut [6,2,4]  == 6&lt;br /&gt;
--    numPermut [10,8,10,5]  == 24&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero, Lucía Hernández, José Manuel Sánchez Parra&lt;br /&gt;
numPermut xs = length (permutations xs)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 23 Definir la función numPares, tal que (numPares xs)&lt;br /&gt;
-- devuelva cuantos números pares en total (sin repeticiones) aparecen&lt;br /&gt;
-- en la lista xs. Por ejemplo, &lt;br /&gt;
--    numPares [1,4,8,2,1,4,6,1]  == 4&lt;br /&gt;
--    numPares [10,9,8,10,5,10]  == 2&lt;br /&gt;
--    numPares [10,9,8]  == 2&lt;br /&gt;
-- Indicación: puede ser útil la función partitions&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, José Manuel Sánchez Parra&lt;br /&gt;
numPares xs = length (nub (filter even xs))&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
numPares xs = length(group (sort (filter even xs)))&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
numPares xs = length(fst(partition even (nub xs)))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Manalcgar</name></author>
	</entry>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_1&amp;diff=98</id>
		<title>Relación 1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_1&amp;diff=98"/>
		<updated>2021-09-29T08:40:29Z</updated>

		<summary type="html">&lt;p&gt;Manalcgar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;#039;haskell&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- I1M 2021-22: Rel_1.hs (24 de septiembre de 2021)&lt;br /&gt;
-- Definiciones por composición sobre números, listas y booleanos. &lt;br /&gt;
-- Departamento de Ciencias de la Computación e I.A.&lt;br /&gt;
-- Universidad de Sevilla&lt;br /&gt;
-- =====================================================================&lt;br /&gt;
&lt;br /&gt;
import Data.List&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Introducción                                                       --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- En esta relación se plantean ejercicios con definiciones de funciones &lt;br /&gt;
-- por composición sobre números, listas y booleanos.&lt;br /&gt;
-- &lt;br /&gt;
-- Para solucionar los ejercicios puede ser útil el manual de&lt;br /&gt;
-- funciones de Haskell que se encuentra en http://bit.ly/1uJZiqi y su&lt;br /&gt;
-- resumen en http://bit.ly/ZwSMHO&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1. Definir la función media3 tal que (media3 x y z) es&lt;br /&gt;
-- la media aritmética de los números x, y y z. Por ejemplo, &lt;br /&gt;
--    media3 1 3 8     ==  4.0&lt;br /&gt;
--    media3 (-1) 0 7  ==  2.0&lt;br /&gt;
--    media3 (-3) 0 3  ==  0.0&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
media3 x y z = undefined&lt;br /&gt;
-- Miguel Ángel Martínez&lt;br /&gt;
media3 x y z = .sdfsdfadf&lt;br /&gt;
-- Manuel Alcaide García, Lucía Hernández, Adriana Gordillo Melero, Nicolás Rodríguez Ruiz, Irene Ortega Moncayo, Laura Arango, Ana Sosa Caballero, Adolfo Sagrera Vivancos, Pelayo INfante Pérez, Sara Cerro Torres, Virginia Sánchez, Carmen Blanco&lt;br /&gt;
media3 x y z = (x+y+z)/3&lt;br /&gt;
-- Antonio López García, César Fornis Catalán&lt;br /&gt;
media3 x y z = (sum [x,y,z])/3&lt;br /&gt;
media3 x y z = (x+y+z)/3&lt;br /&gt;
-- Francisco José Espinosa&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2. Definir la función sumaMonedas tal que &lt;br /&gt;
-- (sumaMonedas a b c d e) es la suma de los euros correspondientes a &lt;br /&gt;
-- a monedas de 1 euro, b de 2 euros, c de 5 euros, d 10 euros y&lt;br /&gt;
-- e de 20 euros. Por ejemplo,&lt;br /&gt;
--    sumaMonedas 0 0 0 0 1  ==  20&lt;br /&gt;
--    sumaMonedas 0 0 8 0 3  == 100&lt;br /&gt;
--    sumaMonedas 1 1 1 1 1  ==  38&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
sumaMonedas a b c d e = undefined&lt;br /&gt;
-- Adriana Gordillo Melero, Nicolás Rodríguez Ruiz, Lucía Hernández, Laura Arango, Ana Sosa Caballero, Sara Cerro Torres&lt;br /&gt;
sumamonedas a b c d e = a+b*2+c*5+d*10+e*20&lt;br /&gt;
-- Antonio López García, Irene Ortega, César Fornis Catalán, Virginia Sánchez&lt;br /&gt;
sumaMonedas a b c d e = sum [a, b*2, c*5, d*10, e*20]&lt;br /&gt;
-- Adolfo Sagrera Vivancos, Lucía González, Pelayo Infante, Francisco José Espinosa, Carmen Blanco&lt;br /&gt;
sumaMonedas a b c d e = a*1+b*2+c*5+d*10+e*20&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3. Definir la función volumenEsfera tal que &lt;br /&gt;
-- (volumenEsfera r) es el volumen de la esfera de radio r. Por ejemplo,&lt;br /&gt;
--    volumenEsfera 10  ==  4188.790204786391&lt;br /&gt;
-- Indicación: Usar la constante pi.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
volumenEsfera r = undefined &lt;br /&gt;
-- Adriana Gordillo Melero, Lucía Hernández, Nicolás Rodríguez Ruiz, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía González, Pelayo Infante, Sara Cerro Torres&lt;br /&gt;
 volumenEsfera r = (4/3)*pi*r^3&lt;br /&gt;
-- Adolfo Sagrera Vivancos, Carmen Blanco&lt;br /&gt;
volumenEsfera r =(4/3)*(pi*r^3)&lt;br /&gt;
-- Irene Ortega&lt;br /&gt;
volumenEsfera r = pi*(r^3)*4/3&lt;br /&gt;
-- Francisco José Espinosa&lt;br /&gt;
-- César Fornis Catalán, Virginia Sánchez&lt;br /&gt;
volumenEsfera r = (4*pi*r^3)/3&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4. Definir la función areaDeCoronaCircular tal que &lt;br /&gt;
-- (areaDeCoronaCircular r1 r2) es el área de una corona circular de&lt;br /&gt;
-- radio interior r1 y radio exterior r2. Por ejemplo,&lt;br /&gt;
--    areaDeCoronaCircular 1 2 == 9.42477796076938&lt;br /&gt;
--    areaDeCoronaCircular 2 5 == 65.97344572538566&lt;br /&gt;
--    areaDeCoronaCircular 3 5 == 50.26548245743669&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Adriana Gordillo Melero, Antonio López García, Lucía González, Nicolás Rodríguez Ruiz, Sara Cerro Torres&lt;br /&gt;
areaDeCoronaCircular r1 r2 = pi*r2^2 - pi*r1^2&lt;br /&gt;
--Álvaro Cano, Ana Sosa Caballero, Irene Ortega, César Fornis Catalán&lt;br /&gt;
areaDeCoronaCircular r1 r2 = pi*(r2^2-r1^2)&lt;br /&gt;
--Laura Arango&lt;br /&gt;
areaDeCoronaCircular r1 r2 = areaCirculo r2 - areaCirculo r1&lt;br /&gt;
                             where areaCirculo r = pi*r^2&lt;br /&gt;
--Adolfo Sagrera Vivancos, Pelayo INfante , Francisco José Espinosa&lt;br /&gt;
areaDeCoronaCircular r1 r2 = (pi*r2^2)-(pi*r1^2)&lt;br /&gt;
-- Carmen Blanco&lt;br /&gt;
-- Virginia Sánchez&lt;br /&gt;
areaDeCoronaCircular r1 r2 = (pi*(r2)^2) - (pi*(r1)^2)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5. Definir la función ultimaCifra tal que (ultimaCifra x)&lt;br /&gt;
-- es la última cifra del nímero x. Por ejemplo,&lt;br /&gt;
--    ultimaCifra 325  ==  5&lt;br /&gt;
-- Indicación: Usar la función rem&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Adriana Gordillo Melero, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía González, Adolfo Sagrera Vivancos Francisco José Espinosa, Lucía González, Nicolás Rodríguez Ruiz, Irene Ortega, Carmen Blanco, César Fornis Catalán&lt;br /&gt;
ultimaCifra x = rem x 10&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6. Definir la función maxTres tal que (maxTres x y z) es&lt;br /&gt;
-- el máximo de x, y y z. Por ejemplo,&lt;br /&gt;
--    maxTres 6 2 4  ==  6&lt;br /&gt;
--    maxTres 6 7 4  ==  7&lt;br /&gt;
--    maxTres 6 7 9  ==  9&lt;br /&gt;
-- Indicación: Usar la función max.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Laura Arango, Adriana Gordillo, Irene Ortega, Nicolás Rodríguez Ruiz&lt;br /&gt;
maxTres x y z = max(max x y)(z)&lt;br /&gt;
-- Ana Sosa Caballero, Adolfo Sagrera Vivancos&lt;br /&gt;
maxTres x y z = max x t&lt;br /&gt;
                where t = max y z&lt;br /&gt;
&lt;br /&gt;
-- Antonio López García, Lucía González, Carmen Blanco&lt;br /&gt;
maxTres x y z = maximum [x,y,z]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7. Definir la función rota1 tal que (rota1 xs) es la lista&lt;br /&gt;
-- obtenida poniendo el primer elemento de xs al final de la lista. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    rota1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Laura Arango, Adriana Gordillo, Ana Sosa Caballero , Irene Ortega, Lucía González&lt;br /&gt;
rota1 xs = tail xs ++ [head xs]&lt;br /&gt;
-- Antonio López García&lt;br /&gt;
rota1 xs = drop 1 xs ++ take 1 xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8. Definir la función rota tal que (rota n xs) es la lista&lt;br /&gt;
-- obtenida poniendo los n primeros elementos de xs al final de la&lt;br /&gt;
-- lista. Por ejemplo, &lt;br /&gt;
--    rota 1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
--    rota 2 [3,2,5,7]  ==  [5,7,3,2]&lt;br /&gt;
--    rota 3 [3,2,5,7]  ==  [7,3,2,5]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Lucía Hernández, Laura Arango, Adriana Gordillo, Ana Sosa Caballero, Antonio López García, Irene Ortega, Lucía González&lt;br /&gt;
rota n xs = drop n xs ++ take n xs&lt;br /&gt;
&lt;br /&gt;
-- Fernando Ruiz (mejora para conseguir rotar el vector un número mayor de veces que de elementos en el vector)&lt;br /&gt;
rota n xs = drop (mod n (length xs)) xs ++ take (mod n (length xs)) xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9. Definir la función rango tal que (rango xs) es la&lt;br /&gt;
-- lista formada por el menor y mayor elemento de xs.&lt;br /&gt;
--    rango [3,2,7,5]  ==  [2,7]&lt;br /&gt;
-- Indicación: Se pueden usar minimum y maximum.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Lucía Hernández, Laura Arango, Irene Ortega&lt;br /&gt;
rango xs = [minimum xs] ++ [maximum xs]&lt;br /&gt;
-- Ana Sosa Caballero, Antonio López García&lt;br /&gt;
rango xs = [minimum xs, maximum xs]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10. Definir la función palindromo tal que (palindromo xs) se&lt;br /&gt;
-- verifica si xs es un palíndromo; es decir, es lo mismo leer xs de&lt;br /&gt;
-- izquierda a derecha que de derecha a izquierda. Por ejemplo,&lt;br /&gt;
--    palindromo [3,2,5,2,3]    ==  True&lt;br /&gt;
--    palindromo [3,2,5,6,2,3]  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Álvaro Cano, José Manuel Sánchez Parra, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía Hernández, Manuel Alcaide&lt;br /&gt;
palindromo xs = xs == reverse xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11. Definir la función interior tal que (interior xs) es la&lt;br /&gt;
-- lista obtenida eliminando los extremos de la lista xs. Por ejemplo,&lt;br /&gt;
--    interior [2,5,3,7,3]  ==  [5,3,7]&lt;br /&gt;
--    interior [2..7]       ==  [3,4,5,6]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Lucía Hernández, Ana Sosa Caballero&lt;br /&gt;
interior xs = tail (init xs)&lt;br /&gt;
--Laura Arango&lt;br /&gt;
interior xs = drop 1 (init xs)&lt;br /&gt;
--Fernando Ruiz, Antonio López García&lt;br /&gt;
interior xs = init (tail xs)&lt;br /&gt;
--Manuel Alcaide García&lt;br /&gt;
interior xs = init (drop 1 xs)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12. Definir la función finales tal que (finales n xs) es la&lt;br /&gt;
-- lista formada por los n finales elementos de xs. Por ejemplo,&lt;br /&gt;
--    finales 3 [2,5,4,7,9,6]  ==  [7,9,6]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Álvaro Cano&lt;br /&gt;
finales n xs = drop n xs&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
finales n xs = reverse (take n (reverse xs))&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
finales n xs = drop m xs&lt;br /&gt;
               where m = length xs - n&lt;br /&gt;
-- Antonio López García, Fernando Ruiz Mazo, Pelayo Infante, Manuel Alcaide García&lt;br /&gt;
finales n xs = drop (length xs - n) xs&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13. Definir la función segmento tal que (segmento m n xs) es&lt;br /&gt;
-- la lista de los elementos de xs comprendidos entre las posiciones m y&lt;br /&gt;
-- n. Por ejemplo,&lt;br /&gt;
--    segmento 3 4 [3,4,1,2,7,9,0]  ==  [1,2]&lt;br /&gt;
--    segmento 3 5 [3,4,1,2,7,9,0]  ==  [1,2,7]&lt;br /&gt;
--    segmento 5 3 [3,4,1,2,7,9,0]  ==  []&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
--Laura Arango&lt;br /&gt;
segmento m n xs = drop (m-1) (reverse (drop a ys))&lt;br /&gt;
                  where a  = length xs - n&lt;br /&gt;
                        ys = reverse XS&lt;br /&gt;
-- Ana Sosa Caballero, Antonio López García &lt;br /&gt;
segmento m n xs = drop (m-1) (take n xs)&lt;br /&gt;
-- Fernando Ruiz &lt;br /&gt;
segmento m n xs = reverse (drop ((length xs)-n+m-2)(reverse (drop (m-1) xs)))&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
segmento m n xs = take (n-m+1)(drop(m-1) xs)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14. Definir la función extremos tal que (extremos n xs) es&lt;br /&gt;
-- la lista formada por los n primeros elementos de xs y los n finales&lt;br /&gt;
-- elementos de xs. Por ejemplo, &lt;br /&gt;
--    extremos 3 [2,6,7,1,2,4,5,8,9,2,3]  ==  [2,6,7,9,2,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango&lt;br /&gt;
extremos n xs = take n xs ++ finales n XS&lt;br /&gt;
-- Ana Sosa Caballero, Lucía Hernández, Fernando Ruiz&lt;br /&gt;
extremos n xs = take n xs ++ reverse (take n (reverse xs))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15. Definir la función mediano tal que (mediano x y z) es el&lt;br /&gt;
-- número mediano de los tres números x, y y z. Por ejemplo,&lt;br /&gt;
--    mediano 3 2 5  ==  3&lt;br /&gt;
--    mediano 2 4 5  ==  4&lt;br /&gt;
--    mediano 2 6 5  ==  5&lt;br /&gt;
--    mediano 2 6 6  ==  6&lt;br /&gt;
-- Indicación: Usar maximum y minimum.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
--Laura Arango&lt;br /&gt;
 mediano x y z = max x (min y z) (Contraejemplo : mediano 8 10 3)&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
mediano x y z = minimum [maximum [x,y], z] (Contraejemplo : mediano 8 10 3)&lt;br /&gt;
-- Antonio López García&lt;br /&gt;
mediano x y z = maximum [minimum [x,y], minimum[x,z], minimum[y,z]]&lt;br /&gt;
-- Fernando Ruiz Mazo&lt;br /&gt;
mediano x y z = minimum ([maximum [x,y]] ++ [maximum [y,z]] ++ [maximum [x,z]])&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 16. Definir la función tresIguales tal que &lt;br /&gt;
-- (tresIguales x y z) se verifica si los elementos x, y y z son&lt;br /&gt;
-- iguales. Por ejemplo, &lt;br /&gt;
--    tresIguales 4 4 4  ==  True&lt;br /&gt;
--    tresIguales 4 3 4  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero, Lucía Hernández&lt;br /&gt;
tresIguales x y z = x==y &amp;amp;&amp;amp; x==z&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 17. Definir la función tresDiferentes tal que &lt;br /&gt;
-- (tresDiferentes x y z) se verifica si los elementos x, y y z son&lt;br /&gt;
-- distintos. Por ejemplo, &lt;br /&gt;
--    tresDiferentes 3 5 2  ==  True&lt;br /&gt;
--    tresDiferentes 3 5 3  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Lucía Hernández&lt;br /&gt;
tresDiferentes x y z = x/=y &amp;amp;&amp;amp; x/=z&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
tresDiferentes x y z = and [x/=y, y/=z, x/=z]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 18. Definir la función cuatroIguales tal que &lt;br /&gt;
-- (cuatroIguales x y z u) se verifica si los elementos x, y, z y u son&lt;br /&gt;
-- iguales. Por ejemplo, &lt;br /&gt;
--    cuatroIguales 5 5 5 5   ==  True&lt;br /&gt;
--    cuatroIguales 5 5 4 5   ==  False&lt;br /&gt;
-- Indicación: Usar la función tresIguales.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
cuatroIguales x y z u = tresIguales x y z == True &amp;amp;&amp;amp; x==u&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
cuatroIguales x y z u = tresIguales x y z &amp;amp;&amp;amp; x==u&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicios para trabajar con Data.List. Ver:&lt;br /&gt;
-- http://www.cs.us.es/~jalonso/cursos/i1m-19/doc/Funciones_basicas.html&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 19. Definir la función unicos, tal que (unicos xs)&lt;br /&gt;
-- devuelva la cantidad de elementos únicos que hay en la lista xs.&lt;br /&gt;
-- Por ejemplo, &lt;br /&gt;
--    unicos [1,4,8,2,1,4,6,1]  == 5 &lt;br /&gt;
--    unicos [10,9,8,10,5,10]  == 4&lt;br /&gt;
--    unicos [10,9,8]  == 3&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Lucía Hernández&lt;br /&gt;
unicos xs = length (nub xs)&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
unicos xs = length(group(sort xs))&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 20. Definir la función segundoMinimo, tal que (segundoMinimo xs)&lt;br /&gt;
-- devuelve el segundo elemento más pequeńo de la lista xs, obviando &lt;br /&gt;
-- repeticiones. Por ejemplo, &lt;br /&gt;
--    segundoMinimo [6,9,2,4]  ==  4&lt;br /&gt;
--    segundoMinimo [0.5,1.2,0.5,4.4,0.5]  ==  1.2&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango&lt;br /&gt;
segundoMinimo xs = sort (nub xs) !! 1&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
segundoMinimo xs = minimum (delete(minimum (xs))(nub xs))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 21. Definir la función kMaximo, tal que (kMaximo n xs) &lt;br /&gt;
-- devuelve el k-máximo elemento de xs (es decir, el que está en la&lt;br /&gt;
-- posición k de valores más altos), obviando repeticiones. Por ejemplo, &lt;br /&gt;
--    kMaximo 2 [6,9,2,4]  == 6&lt;br /&gt;
--    kMaximo 3 [10,9,8,10,5]  == 8&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
kMaximo k xs = reverse (sort (nub xs)) !! (k-1)&lt;br /&gt;
--José Manuel Sánchez Parra&lt;br /&gt;
kMaximo k xs = maximum(take k xs)&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
kMaximo k xs = head(drop(k-1) (reverse(sort (nub xs))))&lt;br /&gt;
--Antonio Medinilla Garófano&lt;br /&gt;
quitarMaximo xs = delete (maximum xs) xs&lt;br /&gt;
kMaximo k xs = maximum ((iterate quitarMaximo (nub xs)) !! (k-1))&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 22. Definir la función numPermut, tal que (numPermut xs) &lt;br /&gt;
-- devuelve el número de permutaciones sin repetición posibles con los&lt;br /&gt;
-- elementos de la lista xs. Por ejemplo, &lt;br /&gt;
--    numPermut [6,2,4]  == 6&lt;br /&gt;
--    numPermut [10,8,10,5]  == 24&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero, Lucía Hernández, José Manuel Sánchez Parra&lt;br /&gt;
numPermut xs = length (permutations xs)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 23 Definir la función numPares, tal que (numPares xs)&lt;br /&gt;
-- devuelva cuantos números pares en total (sin repeticiones) aparecen&lt;br /&gt;
-- en la lista xs. Por ejemplo, &lt;br /&gt;
--    numPares [1,4,8,2,1,4,6,1]  == 4&lt;br /&gt;
--    numPares [10,9,8,10,5,10]  == 2&lt;br /&gt;
--    numPares [10,9,8]  == 2&lt;br /&gt;
-- Indicación: puede ser útil la función partitions&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, José Manuel Sánchez Parra&lt;br /&gt;
numPares xs = length (nub (filter even xs))&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
numPares xs = length(group (sort (filter even xs)))&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
numPares xs = length(fst(partition even (nub xs)))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Manalcgar</name></author>
	</entry>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_1&amp;diff=89</id>
		<title>Relación 1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_1&amp;diff=89"/>
		<updated>2021-09-29T08:22:24Z</updated>

		<summary type="html">&lt;p&gt;Manalcgar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;#039;haskell&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- I1M 2021-22: Rel_1.hs (24 de septiembre de 2021)&lt;br /&gt;
-- Definiciones por composición sobre números, listas y booleanos. &lt;br /&gt;
-- Departamento de Ciencias de la Computación e I.A.&lt;br /&gt;
-- Universidad de Sevilla&lt;br /&gt;
-- =====================================================================&lt;br /&gt;
&lt;br /&gt;
import Data.List&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Introducción                                                       --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- En esta relación se plantean ejercicios con definiciones de funciones &lt;br /&gt;
-- por composición sobre números, listas y booleanos.&lt;br /&gt;
-- &lt;br /&gt;
-- Para solucionar los ejercicios puede ser útil el manual de&lt;br /&gt;
-- funciones de Haskell que se encuentra en http://bit.ly/1uJZiqi y su&lt;br /&gt;
-- resumen en http://bit.ly/ZwSMHO&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1. Definir la función media3 tal que (media3 x y z) es&lt;br /&gt;
-- la media aritmética de los números x, y y z. Por ejemplo, &lt;br /&gt;
--    media3 1 3 8     ==  4.0&lt;br /&gt;
--    media3 (-1) 0 7  ==  2.0&lt;br /&gt;
--    media3 (-3) 0 3  ==  0.0&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
media3 x y z = undefined&lt;br /&gt;
-- Miguel Ángel Martínez&lt;br /&gt;
media3 x y z = .sdfsdfadf&lt;br /&gt;
-- Manuel Alcaide García, Lucía Hernández, Adriana Gordillo Melero, Nicolás Rodríguez Ruiz, Irene Ortega Moncayo, Laura Arango, Ana Sosa Caballero, Adolfo Sagrera Vivancos, Pelayo INfante Pérez, Sara Cerro Torres, Virginia Sánchez&lt;br /&gt;
media3 x y z = (x+y+z)/3&lt;br /&gt;
-- Antonio López García, Carmen Blanco, César Fornis Catalán&lt;br /&gt;
media3 x y z = (sum [x,y,z])/3&lt;br /&gt;
media3 x y z = (x+y+z)/3&lt;br /&gt;
-- Francisco José Espinosa&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2. Definir la función sumaMonedas tal que &lt;br /&gt;
-- (sumaMonedas a b c d e) es la suma de los euros correspondientes a &lt;br /&gt;
-- a monedas de 1 euro, b de 2 euros, c de 5 euros, d 10 euros y&lt;br /&gt;
-- e de 20 euros. Por ejemplo,&lt;br /&gt;
--    sumaMonedas 0 0 0 0 1  ==  20&lt;br /&gt;
--    sumaMonedas 0 0 8 0 3  == 100&lt;br /&gt;
--    sumaMonedas 1 1 1 1 1  ==  38&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
sumaMonedas a b c d e = undefined&lt;br /&gt;
-- Adriana Gordillo Melero, Nicolás Rodríguez Ruiz, Lucía Hernández, Laura Arango, Ana Sosa Caballero, Sara Cerro Torres&lt;br /&gt;
sumamonedas a b c d e = a+b*2+c*5+d*10+e*20&lt;br /&gt;
-- Antonio López García, Irene Ortega, César Fornis Catalán, Virginia Sánchez&lt;br /&gt;
sumaMonedas a b c d e = sum [a, b*2, c*5, d*10, e*20]&lt;br /&gt;
-- Adolfo Sagrera Vivancos, Lucía González, Pelayo Infante, Francisco José Espinosa, Carmen Blanco&lt;br /&gt;
sumaMonedas a b c d e = a*1+b*2+c*5+d*10+e*20&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3. Definir la función volumenEsfera tal que &lt;br /&gt;
-- (volumenEsfera r) es el volumen de la esfera de radio r. Por ejemplo,&lt;br /&gt;
--    volumenEsfera 10  ==  4188.790204786391&lt;br /&gt;
-- Indicación: Usar la constante pi.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
volumenEsfera r = undefined &lt;br /&gt;
-- Adriana Gordillo Melero, Lucía Hernández, Nicolás Rodríguez Ruiz, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía González, Pelayo Infante, Sara Cerro Torres&lt;br /&gt;
 volumenEsfera r = (4/3)*pi*r^3&lt;br /&gt;
-- Adolfo Sagrera Vivancos&lt;br /&gt;
volumenEsfera r =(4/3)*(pi*r^3)&lt;br /&gt;
-- Carmen Blanco, Irene Ortega&lt;br /&gt;
volumenEsfera r = pi*(r^3)*4/3&lt;br /&gt;
-- Francisco José Espinosa&lt;br /&gt;
-- César Fornis Catalán, Virginia Sánchez&lt;br /&gt;
volumenEsfera r = (4*pi*r^3)/3&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4. Definir la función areaDeCoronaCircular tal que &lt;br /&gt;
-- (areaDeCoronaCircular r1 r2) es el área de una corona circular de&lt;br /&gt;
-- radio interior r1 y radio exterior r2. Por ejemplo,&lt;br /&gt;
--    areaDeCoronaCircular 1 2 == 9.42477796076938&lt;br /&gt;
--    areaDeCoronaCircular 2 5 == 65.97344572538566&lt;br /&gt;
--    areaDeCoronaCircular 3 5 == 50.26548245743669&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Adriana Gordillo Melero, Antonio López García, Lucía González, Nicolás Rodríguez Ruiz, Sara Cerro Torres&lt;br /&gt;
areaDeCoronaCircular r1 r2 = pi*r2^2 - pi*r1^2&lt;br /&gt;
--Álvaro Cano, Ana Sosa Caballero, Irene Ortega, César Fornis Catalán&lt;br /&gt;
areaDeCoronaCircular r1 r2 = pi*(r2^2-r1^2)&lt;br /&gt;
--Laura Arango&lt;br /&gt;
areaDeCoronaCircular r1 r2 = areaCirculo r2 - areaCirculo r1&lt;br /&gt;
                             where areaCirculo r = pi*r^2&lt;br /&gt;
--Adolfo Sagrera Vivancos, Pelayo INfante , Francisco José Espinosa&lt;br /&gt;
areaDeCoronaCircular r1 r2 = (pi*r2^2)-(pi*r1^2)&lt;br /&gt;
-- Carmen Blanco&lt;br /&gt;
-- Virginia Sánchez&lt;br /&gt;
areaDeCoronaCircular r1 r2 = (pi*(r2)^2) - (pi*(r1)^2)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5. Definir la función ultimaCifra tal que (ultimaCifra x)&lt;br /&gt;
-- es la última cifra del nímero x. Por ejemplo,&lt;br /&gt;
--    ultimaCifra 325  ==  5&lt;br /&gt;
-- Indicación: Usar la función rem&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Adriana Gordillo Melero, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía González, Adolfo Sagrera Vivancos Francisco José Espinosa, Lucía González, Nicolás Rodríguez Ruiz, Irene Ortega&lt;br /&gt;
ultimaCifra x = rem x 10&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6. Definir la función maxTres tal que (maxTres x y z) es&lt;br /&gt;
-- el máximo de x, y y z. Por ejemplo,&lt;br /&gt;
--    maxTres 6 2 4  ==  6&lt;br /&gt;
--    maxTres 6 7 4  ==  7&lt;br /&gt;
--    maxTres 6 7 9  ==  9&lt;br /&gt;
-- Indicación: Usar la función max.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Laura Arango, Adriana Gordillo, Irene Ortega, Nicolás Rodríguez Ruiz&lt;br /&gt;
maxTres x y z = max(max x y)(z)&lt;br /&gt;
-- Ana Sosa Caballero, Adolfo Sagrera Vivancos&lt;br /&gt;
maxTres x y z = max x t&lt;br /&gt;
                where t = max y z&lt;br /&gt;
&lt;br /&gt;
-- Antonio López García, Lucía González&lt;br /&gt;
maxTres x y z = maximum [x,y,z]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7. Definir la función rota1 tal que (rota1 xs) es la lista&lt;br /&gt;
-- obtenida poniendo el primer elemento de xs al final de la lista. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    rota1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Lucía Hernández, Laura Arango, Adriana Gordillo, Ana Sosa Caballero , Irene Ortega, Lucía González&lt;br /&gt;
rota1 xs = tail xs ++ [head xs]&lt;br /&gt;
-- Antonio López García&lt;br /&gt;
rota1 xs = drop 1 xs ++ take 1 xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8. Definir la función rota tal que (rota n xs) es la lista&lt;br /&gt;
-- obtenida poniendo los n primeros elementos de xs al final de la&lt;br /&gt;
-- lista. Por ejemplo, &lt;br /&gt;
--    rota 1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
--    rota 2 [3,2,5,7]  ==  [5,7,3,2]&lt;br /&gt;
--    rota 3 [3,2,5,7]  ==  [7,3,2,5]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Lucía Hernández, Laura Arango, Adriana Gordillo, Ana Sosa Caballero, Antonio López García, Irene Ortega&lt;br /&gt;
rota n xs = drop n xs ++ take n xs&lt;br /&gt;
&lt;br /&gt;
-- Fernando Ruiz (mejora para conseguir rotar el vector un número mayor de veces que de elementos en el vector)&lt;br /&gt;
rota n xs = drop (mod n (length xs)) xs ++ take (mod n (length xs)) xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9. Definir la función rango tal que (rango xs) es la&lt;br /&gt;
-- lista formada por el menor y mayor elemento de xs.&lt;br /&gt;
--    rango [3,2,7,5]  ==  [2,7]&lt;br /&gt;
-- Indicación: Se pueden usar minimum y maximum.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Lucía Hernández, Laura Arango, Irene Ortega&lt;br /&gt;
rango xs = [minimum xs] ++ [maximum xs]&lt;br /&gt;
-- Ana Sosa Caballero, Antonio López García&lt;br /&gt;
rango xs = [minimum xs, maximum xs]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10. Definir la función palindromo tal que (palindromo xs) se&lt;br /&gt;
-- verifica si xs es un palíndromo; es decir, es lo mismo leer xs de&lt;br /&gt;
-- izquierda a derecha que de derecha a izquierda. Por ejemplo,&lt;br /&gt;
--    palindromo [3,2,5,2,3]    ==  True&lt;br /&gt;
--    palindromo [3,2,5,6,2,3]  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Álvaro Cano, José Manuel Sánchez Parra, Laura Arango, Ana Sosa Caballero, Antonio López García, Lucía Hernández&lt;br /&gt;
palindromo xs = xs == reverse xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11. Definir la función interior tal que (interior xs) es la&lt;br /&gt;
-- lista obtenida eliminando los extremos de la lista xs. Por ejemplo,&lt;br /&gt;
--    interior [2,5,3,7,3]  ==  [5,3,7]&lt;br /&gt;
--    interior [2..7]       ==  [3,4,5,6]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Lucía Hernández, Ana Sosa Caballero&lt;br /&gt;
interior xs = tail (init xs)&lt;br /&gt;
--Laura Arango&lt;br /&gt;
interior xs = drop 1 (init xs)&lt;br /&gt;
--Fernando Ruiz, Antonio López García&lt;br /&gt;
interior xs = init (tail xs)&lt;br /&gt;
--Manuel Rafael Alcaide García&lt;br /&gt;
interior xs = init (drop 1 xs)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12. Definir la función finales tal que (finales n xs) es la&lt;br /&gt;
-- lista formada por los n finales elementos de xs. Por ejemplo,&lt;br /&gt;
--    finales 3 [2,5,4,7,9,6]  ==  [7,9,6]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
--Álvaro Cano&lt;br /&gt;
finales n xs = drop n xs&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
finales n xs = reverse (take n (reverse xs))&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
finales n xs = drop m xs&lt;br /&gt;
               where m = length xs - n&lt;br /&gt;
-- Antonio López García, Fernando Ruiz Mazo, Pelayo Infante&lt;br /&gt;
finales n xs = drop (length xs - n) xs&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13. Definir la función segmento tal que (segmento m n xs) es&lt;br /&gt;
-- la lista de los elementos de xs comprendidos entre las posiciones m y&lt;br /&gt;
-- n. Por ejemplo,&lt;br /&gt;
--    segmento 3 4 [3,4,1,2,7,9,0]  ==  [1,2]&lt;br /&gt;
--    segmento 3 5 [3,4,1,2,7,9,0]  ==  [1,2,7]&lt;br /&gt;
--    segmento 5 3 [3,4,1,2,7,9,0]  ==  []&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
--Laura Arango&lt;br /&gt;
segmento m n xs = drop (m-1) (reverse (drop a ys))&lt;br /&gt;
                  where a  = length xs - n&lt;br /&gt;
                        ys = reverse XS&lt;br /&gt;
-- Ana Sosa Caballero, Antonio López García &lt;br /&gt;
segmento m n xs = drop (m-1) (take n xs)&lt;br /&gt;
-- Fernando Ruiz &lt;br /&gt;
segmento m n xs = reverse (drop ((length xs)-n+m-2)(reverse (drop (m-1) xs)))&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14. Definir la función extremos tal que (extremos n xs) es&lt;br /&gt;
-- la lista formada por los n primeros elementos de xs y los n finales&lt;br /&gt;
-- elementos de xs. Por ejemplo, &lt;br /&gt;
--    extremos 3 [2,6,7,1,2,4,5,8,9,2,3]  ==  [2,6,7,9,2,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango&lt;br /&gt;
extremos n xs = take n xs ++ finales n XS&lt;br /&gt;
-- Ana Sosa Caballero, Lucía Hernández, Fernando Ruiz&lt;br /&gt;
extremos n xs = take n xs ++ reverse (take n (reverse xs))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15. Definir la función mediano tal que (mediano x y z) es el&lt;br /&gt;
-- número mediano de los tres números x, y y z. Por ejemplo,&lt;br /&gt;
--    mediano 3 2 5  ==  3&lt;br /&gt;
--    mediano 2 4 5  ==  4&lt;br /&gt;
--    mediano 2 6 5  ==  5&lt;br /&gt;
--    mediano 2 6 6  ==  6&lt;br /&gt;
-- Indicación: Usar maximum y minimum.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
--Laura Arango&lt;br /&gt;
 mediano x y z = max x (min y z)&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
mediano x y z = minimum [maximum [x,y], z]&lt;br /&gt;
-- Antonio López García&lt;br /&gt;
mediano x y z = maximum [minimum [x,y], minimum[x,z], minimum[y,z]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 16. Definir la función tresIguales tal que &lt;br /&gt;
-- (tresIguales x y z) se verifica si los elementos x, y y z son&lt;br /&gt;
-- iguales. Por ejemplo, &lt;br /&gt;
--    tresIguales 4 4 4  ==  True&lt;br /&gt;
--    tresIguales 4 3 4  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero, Lucía Hernández&lt;br /&gt;
tresIguales x y z = x==y &amp;amp;&amp;amp; x==z&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 17. Definir la función tresDiferentes tal que &lt;br /&gt;
-- (tresDiferentes x y z) se verifica si los elementos x, y y z son&lt;br /&gt;
-- distintos. Por ejemplo, &lt;br /&gt;
--    tresDiferentes 3 5 2  ==  True&lt;br /&gt;
--    tresDiferentes 3 5 3  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Lucía Hernández&lt;br /&gt;
tresDiferentes x y z = x/=y &amp;amp;&amp;amp; x/=z&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
tresDiferentes x y z = and [x/=y, y/=z, x/=z]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 18. Definir la función cuatroIguales tal que &lt;br /&gt;
-- (cuatroIguales x y z u) se verifica si los elementos x, y, z y u son&lt;br /&gt;
-- iguales. Por ejemplo, &lt;br /&gt;
--    cuatroIguales 5 5 5 5   ==  True&lt;br /&gt;
--    cuatroIguales 5 5 4 5   ==  False&lt;br /&gt;
-- Indicación: Usar la función tresIguales.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
cuatroIguales x y z u = tresIguales x y z == True &amp;amp;&amp;amp; x==u&lt;br /&gt;
-- Lucía Hernández&lt;br /&gt;
cuatroIguales x y z u = tresIguales x y z &amp;amp;&amp;amp; x==u&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicios para trabajar con Data.List. Ver:&lt;br /&gt;
-- http://www.cs.us.es/~jalonso/cursos/i1m-19/doc/Funciones_basicas.html&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 19. Definir la función unicos, tal que (unicos xs)&lt;br /&gt;
-- devuelva la cantidad de elementos únicos que hay en la lista xs.&lt;br /&gt;
-- Por ejemplo, &lt;br /&gt;
--    unicos [1,4,8,2,1,4,6,1]  == 5 &lt;br /&gt;
--    unicos [10,9,8,10,5,10]  == 4&lt;br /&gt;
--    unicos [10,9,8]  == 3&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Lucía Hernández&lt;br /&gt;
unicos xs = length (nub xs)&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
unicos xs = length(group(sort xs))&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 20. Definir la función segundoMinimo, tal que (segundoMinimo xs)&lt;br /&gt;
-- devuelve el segundo elemento más pequeńo de la lista xs, obviando &lt;br /&gt;
-- repeticiones. Por ejemplo, &lt;br /&gt;
--    segundoMinimo [6,9,2,4]  ==  4&lt;br /&gt;
--    segundoMinimo [0.5,1.2,0.5,4.4,0.5]  ==  1.2&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango&lt;br /&gt;
segundoMinimo xs = sort (nub xs) !! 1&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
segundoMinimo xs = minimum (delete(minimum (xs))(nub xs))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 21. Definir la función kMaximo, tal que (kMaximo n xs) &lt;br /&gt;
-- devuelve el k-máximo elemento de xs (es decir, el que está en la&lt;br /&gt;
-- posición k de valores más altos), obviando repeticiones. Por ejemplo, &lt;br /&gt;
--    kMaximo 2 [6,9,2,4]  == 6&lt;br /&gt;
--    kMaximo 3 [10,9,8,10,5]  == 8&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero&lt;br /&gt;
kMaximo k xs = reverse (sort (nub xs)) !! (k-1)&lt;br /&gt;
--José Manuel Sánchez Parra&lt;br /&gt;
kMaximo k xs = maximum(take k xs)&lt;br /&gt;
--Lucía Hernández&lt;br /&gt;
kMaximo k xs = head(drop(k-1) (reverse(sort (nub xs))))&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 22. Definir la función numPermut, tal que (numPermut xs) &lt;br /&gt;
-- devuelve el número de permutaciones sin repetición posibles con los&lt;br /&gt;
-- elementos de la lista xs. Por ejemplo, &lt;br /&gt;
--    numPermut [6,2,4]  == 6&lt;br /&gt;
--    numPermut [10,8,10,5]  == 24&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango, Ana Sosa Caballero, Lucía Hernández&lt;br /&gt;
numPermut xs = length (permutations xs)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 23 Definir la función numPares, tal que (numPares xs)&lt;br /&gt;
-- devuelva cuantos números pares en total (sin repeticiones) aparecen&lt;br /&gt;
-- en la lista xs. Por ejemplo, &lt;br /&gt;
--    numPares [1,4,8,2,1,4,6,1]  == 4&lt;br /&gt;
--    numPares [10,9,8,10,5,10]  == 2&lt;br /&gt;
--    numPares [10,9,8]  == 2&lt;br /&gt;
-- Indicación: puede ser útil la función partitions&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
--Laura Arango&lt;br /&gt;
numPares xs = length (nub (filter even xs))&lt;br /&gt;
-- Ana Sosa Caballero&lt;br /&gt;
numPares xs = length(group (sort (filter even xs)))&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Manalcgar</name></author>
	</entry>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_1&amp;diff=16</id>
		<title>Relación 1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_1&amp;diff=16"/>
		<updated>2021-09-24T08:11:04Z</updated>

		<summary type="html">&lt;p&gt;Manalcgar: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;#039;haskell&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- I1M 2021-22: Rel_1.hs (24 de septiembre de 2021)&lt;br /&gt;
-- Definiciones por composición sobre números, listas y booleanos. &lt;br /&gt;
-- Departamento de Ciencias de la Computación e I.A.&lt;br /&gt;
-- Universidad de Sevilla&lt;br /&gt;
-- =====================================================================&lt;br /&gt;
&lt;br /&gt;
import Data.List&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Introducción                                                       --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- En esta relación se plantean ejercicios con definiciones de funciones &lt;br /&gt;
-- por composición sobre números, listas y booleanos.&lt;br /&gt;
-- &lt;br /&gt;
-- Para solucionar los ejercicios puede ser útil el manual de&lt;br /&gt;
-- funciones de Haskell que se encuentra en http://bit.ly/1uJZiqi y su&lt;br /&gt;
-- resumen en http://bit.ly/ZwSMHO&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1. Definir la función media3 tal que (media3 x y z) es&lt;br /&gt;
-- la media aritmética de los números x, y y z. Por ejemplo, &lt;br /&gt;
--    media3 1 3 8     ==  4.0&lt;br /&gt;
--    media3 (-1) 0 7  ==  2.0&lt;br /&gt;
--    media3 (-3) 0 3  ==  0.0&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
media3 x y z = undefined&lt;br /&gt;
-- Miguel Ángel Martínez&lt;br /&gt;
media3 x y z = .sdfsdfadf&lt;br /&gt;
-- Manuel Alcaide García&lt;br /&gt;
media3 x y z = (x+y+z)/3&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2. Definir la función sumaMonedas tal que &lt;br /&gt;
-- (sumaMonedas a b c d e) es la suma de los euros correspondientes a &lt;br /&gt;
-- a monedas de 1 euro, b de 2 euros, c de 5 euros, d 10 euros y&lt;br /&gt;
-- e de 20 euros. Por ejemplo,&lt;br /&gt;
--    sumaMonedas 0 0 0 0 1  ==  20&lt;br /&gt;
--    sumaMonedas 0 0 8 0 3  == 100&lt;br /&gt;
--    sumaMonedas 1 1 1 1 1  ==  38&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
sumaMonedas a b c d e = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3. Definir la función volumenEsfera tal que &lt;br /&gt;
-- (volumenEsfera r) es el volumen de la esfera de radio r. Por ejemplo,&lt;br /&gt;
--    volumenEsfera 10  ==  4188.790204786391&lt;br /&gt;
-- Indicación: Usar la constante pi.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
volumenEsfera r = undefined &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4. Definir la función areaDeCoronaCircular tal que &lt;br /&gt;
-- (areaDeCoronaCircular r1 r2) es el área de una corona circular de&lt;br /&gt;
-- radio interior r1 y radio exterior r2. Por ejemplo,&lt;br /&gt;
--    areaDeCoronaCircular 1 2 == 9.42477796076938&lt;br /&gt;
--    areaDeCoronaCircular 2 5 == 65.97344572538566&lt;br /&gt;
--    areaDeCoronaCircular 3 5 == 50.26548245743669&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
areaDeCoronaCircular r1 r2 = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5. Definir la función ultimaCifra tal que (ultimaCifra x)&lt;br /&gt;
-- es la última cifra del nímero x. Por ejemplo,&lt;br /&gt;
--    ultimaCifra 325  ==  5&lt;br /&gt;
-- Indicación: Usar la función rem&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
ultimaCifra x = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6. Definir la función maxTres tal que (maxTres x y z) es&lt;br /&gt;
-- el máximo de x, y y z. Por ejemplo,&lt;br /&gt;
--    maxTres 6 2 4  ==  6&lt;br /&gt;
--    maxTres 6 7 4  ==  7&lt;br /&gt;
--    maxTres 6 7 9  ==  9&lt;br /&gt;
-- Indicación: Usar la función max.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
maxTres x y z = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7. Definir la función rota1 tal que (rota1 xs) es la lista&lt;br /&gt;
-- obtenida poniendo el primer elemento de xs al final de la lista. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    rota1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
rota1 xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8. Definir la función rota tal que (rota n xs) es la lista&lt;br /&gt;
-- obtenida poniendo los n primeros elementos de xs al final de la&lt;br /&gt;
-- lista. Por ejemplo, &lt;br /&gt;
--    rota 1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
--    rota 2 [3,2,5,7]  ==  [5,7,3,2]&lt;br /&gt;
--    rota 3 [3,2,5,7]  ==  [7,3,2,5]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
rota n xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9. Definir la función rango tal que (rango xs) es la&lt;br /&gt;
-- lista formada por el menor y mayor elemento de xs.&lt;br /&gt;
--    rango [3,2,7,5]  ==  [2,7]&lt;br /&gt;
-- Indicación: Se pueden usar minimum y maximum.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
rango xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10. Definir la función palindromo tal que (palindromo xs) se&lt;br /&gt;
-- verifica si xs es un palíndromo; es decir, es lo mismo leer xs de&lt;br /&gt;
-- izquierda a derecha que de derecha a izquierda. Por ejemplo,&lt;br /&gt;
--    palindromo [3,2,5,2,3]    ==  True&lt;br /&gt;
--    palindromo [3,2,5,6,2,3]  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
palindromo xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11. Definir la función interior tal que (interior xs) es la&lt;br /&gt;
-- lista obtenida eliminando los extremos de la lista xs. Por ejemplo,&lt;br /&gt;
--    interior [2,5,3,7,3]  ==  [5,3,7]&lt;br /&gt;
--    interior [2..7]       ==  [3,4,5,6]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
interior xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12. Definir la función finales tal que (finales n xs) es la&lt;br /&gt;
-- lista formada por los n finales elementos de xs. Por ejemplo,&lt;br /&gt;
--    finales 3 [2,5,4,7,9,6]  ==  [7,9,6]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
finales n xs = undefined&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13. Definir la función segmento tal que (segmento m n xs) es&lt;br /&gt;
-- la lista de los elementos de xs comprendidos entre las posiciones m y&lt;br /&gt;
-- n. Por ejemplo,&lt;br /&gt;
--    segmento 3 4 [3,4,1,2,7,9,0]  ==  [1,2]&lt;br /&gt;
--    segmento 3 5 [3,4,1,2,7,9,0]  ==  [1,2,7]&lt;br /&gt;
--    segmento 5 3 [3,4,1,2,7,9,0]  ==  []&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
segmento m n xs = undefined&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14. Definir la función extremos tal que (extremos n xs) es&lt;br /&gt;
-- la lista formada por los n primeros elementos de xs y los n finales&lt;br /&gt;
-- elementos de xs. Por ejemplo, &lt;br /&gt;
--    extremos 3 [2,6,7,1,2,4,5,8,9,2,3]  ==  [2,6,7,9,2,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
extremos n xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15. Definir la función mediano tal que (mediano x y z) es el&lt;br /&gt;
-- número mediano de los tres números x, y y z. Por ejemplo,&lt;br /&gt;
--    mediano 3 2 5  ==  3&lt;br /&gt;
--    mediano 2 4 5  ==  4&lt;br /&gt;
--    mediano 2 6 5  ==  5&lt;br /&gt;
--    mediano 2 6 6  ==  6&lt;br /&gt;
-- Indicación: Usar maximum y minimum.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
mediano x y z = undefined&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 16. Definir la función tresIguales tal que &lt;br /&gt;
-- (tresIguales x y z) se verifica si los elementos x, y y z son&lt;br /&gt;
-- iguales. Por ejemplo, &lt;br /&gt;
--    tresIguales 4 4 4  ==  True&lt;br /&gt;
--    tresIguales 4 3 4  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
tresIguales x y z = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 17. Definir la función tresDiferentes tal que &lt;br /&gt;
-- (tresDiferentes x y z) se verifica si los elementos x, y y z son&lt;br /&gt;
-- distintos. Por ejemplo, &lt;br /&gt;
--    tresDiferentes 3 5 2  ==  True&lt;br /&gt;
--    tresDiferentes 3 5 3  ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
tresDiferentes x y z = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 18. Definir la función cuatroIguales tal que &lt;br /&gt;
-- (cuatroIguales x y z u) se verifica si los elementos x, y, z y u son&lt;br /&gt;
-- iguales. Por ejemplo, &lt;br /&gt;
--    cuatroIguales 5 5 5 5   ==  True&lt;br /&gt;
--    cuatroIguales 5 5 4 5   ==  False&lt;br /&gt;
-- Indicación: Usar la función tresIguales.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cuatroIguales x y z u = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicios para trabajar con Data.List. Ver:&lt;br /&gt;
-- http://www.cs.us.es/~jalonso/cursos/i1m-19/doc/Funciones_basicas.html&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 19. Definir la función unicos, tal que (unicos xs)&lt;br /&gt;
-- devuelva la cantidad de elementos únicos que hay en la lista xs.&lt;br /&gt;
-- Por ejemplo, &lt;br /&gt;
--    unicos [1,4,8,2,1,4,6,1]  == 5 &lt;br /&gt;
--    unicos [10,9,8,10,5,10]  == 4&lt;br /&gt;
--    unicos [10,9,8]  == 3&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
unicos xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 20. Definir la función segundoMinimo, tal que (segundoMinimo xs)&lt;br /&gt;
-- devuelve el segundo elemento más pequeńo de la lista xs, obviando &lt;br /&gt;
-- repeticiones. Por ejemplo, &lt;br /&gt;
--    segundoMinimo [6,9,2,4]  ==  4&lt;br /&gt;
--    segundoMinimo [0.5,1.2,0.5,4.4,0.5]  ==  1.2&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
segundoMinimo xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 21. Definir la función kMaximo, tal que (kMaximo n xs) &lt;br /&gt;
-- devuelve el k-máximo elemento de xs (es decir, el que está en la&lt;br /&gt;
-- posición k de valores más altos), obviando repeticiones. Por ejemplo, &lt;br /&gt;
--    kMaximo 2 [6,9,2,4]  == 6&lt;br /&gt;
--    kMaximo 3 [10,9,8,10,5]  == 8&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
kMaximo k xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 22. Definir la función numPermut, tal que (numPermut xs) &lt;br /&gt;
-- devuelve el número de permutaciones sin repetición posibles con los&lt;br /&gt;
-- elementos de la lista xs. Por ejemplo, &lt;br /&gt;
--    numPermut [6,2,4]  == 6&lt;br /&gt;
--    numPermut [10,8,10,5]  == 24&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
numPermut xs = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 23 Definir la función numPares, tal que (numPares xs)&lt;br /&gt;
-- devuelva cuantos números pares en total (sin repeticiones) aparecen&lt;br /&gt;
-- en la lista xs. Por ejemplo, &lt;br /&gt;
--    numPares [1,4,8,2,1,4,6,1]  == 4&lt;br /&gt;
--    numPares [10,9,8,10,5,10]  == 2&lt;br /&gt;
--    numPares [10,9,8]  == 2&lt;br /&gt;
-- Indicación: puede ser útil la función partitions&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
numPares xs = undefined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Manalcgar</name></author>
	</entry>
</feed>