<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?action=history&amp;feed=atom&amp;title=Examen_11%2F12%2F20</id>
	<title>Examen 11/12/20 - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?action=history&amp;feed=atom&amp;title=Examen_11%2F12%2F20"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Examen_11/12/20&amp;action=history"/>
	<updated>2026-07-23T13:03:05Z</updated>
	<subtitle>Historial de revisiones de esta página en el wiki</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Examen_11/12/20&amp;diff=435&amp;oldid=prev</id>
		<title>Mdelamor: Protegió «Examen 11/12/20» ([Editar=Solo administradores] (indefinido) [Trasladar=Solo administradores] (indefinido))</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Examen_11/12/20&amp;diff=435&amp;oldid=prev"/>
		<updated>2021-11-17T22:14:43Z</updated>

		<summary type="html">&lt;p&gt;Protegió «&lt;a href=&quot;/WIKIS/I1M2021G2/index.php/Examen_11/12/20&quot; title=&quot;Examen 11/12/20&quot;&gt;Examen 11/12/20&lt;/a&gt;» ([Editar=Solo administradores] (indefinido) [Trasladar=Solo administradores] (indefinido))&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 22:14 17 nov 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Mdelamor</name></author>
	</entry>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Examen_11/12/20&amp;diff=434&amp;oldid=prev</id>
		<title>Mdelamor: Página creada con «&lt;source lang=&#039;haskell&#039;&gt;  -- ================================================================== -- Informática (1º del Grado en Matemáticas), Grupo 2 -- 1º examen de eva…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Examen_11/12/20&amp;diff=434&amp;oldid=prev"/>
		<updated>2021-11-17T22:14:36Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang=&amp;#039;haskell&amp;#039;&amp;gt;  -- ================================================================== -- Informática (1º del Grado en Matemáticas), Grupo 2 -- 1º examen de eva…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;#039;haskell&amp;#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- ==================================================================&lt;br /&gt;
-- Informática (1º del Grado en Matemáticas), Grupo 2&lt;br /&gt;
-- 1º examen de evaluación continua 1 de diciembre de 2020)&lt;br /&gt;
-- ------------------------------------------------------------------&lt;br /&gt;
-- Nombre: &lt;br /&gt;
--&lt;br /&gt;
-- Apellidos: &lt;br /&gt;
-- &lt;br /&gt;
-- Usuario Virtual de la Universidad(UVUS):&lt;br /&gt;
-- ==================================================================&lt;br /&gt;
-- Nota 1: Todos los ejercicios valen igual.&lt;br /&gt;
&lt;br /&gt;
-- Nota 2: Recordad que en cualquier momento podéis consultar la funciones&lt;br /&gt;
--         predefinidas en Haskell en la siguiente página si pensáis que os&lt;br /&gt;
--         hacen falta.&lt;br /&gt;
--         http://www.cs.us.es/~mjoseh/cursos/i1m-20/doc/Funciones_basicas.html&lt;br /&gt;
&lt;br /&gt;
import Data.List&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1 Define la función&lt;br /&gt;
--   alza :: Int -&amp;gt; [Int] -&amp;gt; Bool&lt;br /&gt;
-- tal que (alza n xs) comprueba si los últimos n elementos de la sucesión&lt;br /&gt;
-- xs están en orden creciente; es decir, cada elemento es mayor estricto&lt;br /&gt;
-- que el anterior. Por ejemplo,&lt;br /&gt;
-- &amp;gt; alza 3 [1..10]&lt;br /&gt;
-- True&lt;br /&gt;
-- &amp;gt; alza 3 [12,3,4,2,1]&lt;br /&gt;
-- False&lt;br /&gt;
-- &amp;gt; alza 4 [2,6,13,45,743,3445,3442,3443,3444]&lt;br /&gt;
-- False&lt;br /&gt;
-- &amp;gt; alza 3 [2,6,13,45,743,3445,3442,3443,3444]&lt;br /&gt;
-- True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
alza :: Int -&amp;gt; [Int] -&amp;gt; Bool&lt;br /&gt;
alza n xs = and [ x &amp;lt; y | (x,y) &amp;lt;- zip xs&amp;#039; (tail xs&amp;#039;)]&lt;br /&gt;
    where xs&amp;#039; = drop (length xs - n) xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2. (Problema 343 del proyecto Euler)&lt;br /&gt;
-- Para cualquier entero positivo k, se puede calcular la siguiente secuencia &lt;br /&gt;
-- finita cuyos términos ai se calculan con la fracción reducida xi/yi, siendo:&lt;br /&gt;
-- a1 = 1/k (donde x1 = 1 e y1 = k) &lt;br /&gt;
-- a2 = fraccionReducida (x1+1)/(y1-1) = fraccionReducida 2/(k-1) &lt;br /&gt;
-- ai = fraccionReducida (x{i-1}+1)/(y{i-1}-1), para los términos con i&amp;gt;1.&lt;br /&gt;
-- Cuando ai es un entero n, la secuencia termina (es decir, cuando yi=1)&lt;br /&gt;
-- Por ejemplo, &lt;br /&gt;
--  para k = 2, la sucesión es: 1/2 → 2/1 &lt;br /&gt;
--  para k = 4, la sucesión es: 1/4 → 2/3 → 3/2 → 4/1&lt;br /&gt;
--  para k = 3, la sucesión es: 1/3 → 2/2 = 1/1  (2/2 se reduce a 1/1, el cual es un entero)&lt;br /&gt;
--  para k = 20, la sucesión es: 1/20 → 2/19 → (3/18 que se reduce a 1/6) → 2/5 → 3/4 → 4/3 → 5/2 → 6/1 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2.1. Define la función &lt;br /&gt;
--     suc :: Int -&amp;gt; [(Int,Int)] &lt;br /&gt;
-- tal que (suc k) devuelva la sucesión finita para k, representando las fracciones como &lt;br /&gt;
-- pares de números enteros (numerador,denominador).&lt;br /&gt;
-- Por ejemplo:&lt;br /&gt;
-- &amp;gt; suc 2 &lt;br /&gt;
-- [(1,2),(2,1)]&lt;br /&gt;
-- &amp;gt; suc 4&lt;br /&gt;
-- [(1,4),(2,3),(3,2),(4,1)]&lt;br /&gt;
-- &amp;gt; suc 20&lt;br /&gt;
-- [(1,20),(2,19),(1,6),(2,5),(3,4),(4,3),(5,2),(6,1)]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
suc :: Int -&amp;gt; [(Int,Int)]&lt;br /&gt;
suc k = f&amp;#039; 1 k &lt;br /&gt;
&lt;br /&gt;
f&amp;#039; :: Int -&amp;gt; Int -&amp;gt; [(Int,Int)]&lt;br /&gt;
f&amp;#039; x y &lt;br /&gt;
    | b == 1 = [(a,b)]&lt;br /&gt;
    | otherwise = (a,b):f&amp;#039; (a+1) (b-1)&lt;br /&gt;
    where a = div x (gcd x y)&lt;br /&gt;
          b = div y (gcd x y)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2.2. Se define la función f (k) = n, siendo n el entero final&lt;br /&gt;
-- en la sucesión para k. Por ejemplo:&lt;br /&gt;
-- f (2) = 2&lt;br /&gt;
-- f (4) = 4&lt;br /&gt;
-- f (3) = 1&lt;br /&gt;
-- f (20) = 6&lt;br /&gt;
-- Define la función&lt;br /&gt;
--   f :: Int -&amp;gt; Int&lt;br /&gt;
-- tal que (f k) devuelva el entero n. Usa la función para calcular la&lt;br /&gt;
-- suma de f(k^3) para 1 &amp;lt;= k &amp;lt;= 100, cuyo resultado es 118937.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
f :: Int -&amp;gt; Int&lt;br /&gt;
f k = fst (last (suc k))&lt;br /&gt;
&lt;br /&gt;
suma :: Int&lt;br /&gt;
suma = sum [ f (k^3) | k &amp;lt;- [1..100]]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3. Decimos que un número contiene un primo si eliminando cifras,&lt;br /&gt;
-- de derecha a izquierda, encontramos un número primo. Por ejemplo,&lt;br /&gt;
-- 59912 no es primo, 5991 no es primo, 599 es primo.&lt;br /&gt;
-- Definir la función&lt;br /&gt;
--    contienePrimo :: Int -&amp;gt; Bool&lt;br /&gt;
-- tal que (contienePrimo x) se verifica si x contiene un primo.&lt;br /&gt;
-- Por ejemplo,&lt;br /&gt;
--    contienePrimo 5992  ==  True&lt;br /&gt;
--    contienePrimo 11    ==  True&lt;br /&gt;
--    contienePrimo 245   ==  True&lt;br /&gt;
--    contienePrimo 645   ==  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
contienePrimo :: Int -&amp;gt; Bool&lt;br /&gt;
contienePrimo x&lt;br /&gt;
  | x &amp;lt; 10    = primo x&lt;br /&gt;
  | otherwise = primo x || contienePrimo (x `div` 10)&lt;br /&gt;
&lt;br /&gt;
-- (primo x) se verifica si x es primo.&lt;br /&gt;
primo :: Int -&amp;gt; Bool&lt;br /&gt;
primo x = factores x == [1,x]&lt;br /&gt;
&lt;br /&gt;
-- (factores x) es la lista de los factores de x.&lt;br /&gt;
factores :: Int -&amp;gt; [Int]&lt;br /&gt;
factores x = [y | y &amp;lt;- [1..x], x `rem` y == 0]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4. A continuación se pedirá definir la función &lt;br /&gt;
--    separa :: (b -&amp;gt; a) -&amp;gt; (a -&amp;gt; Bool) -&amp;gt; [b] -&amp;gt; ([b], [b])&lt;br /&gt;
-- tal que (separa f p xs) devuelve un par donde en el primero elemento&lt;br /&gt;
-- se encuentran los elementos de xs que cumplen la propiedad p tras &lt;br /&gt;
-- aplicar la función f, y en el segundo elemento el resto de elementos&lt;br /&gt;
-- de la lista xs (los que no cumplen p tras aplicarles f). &lt;br /&gt;
-- Por ejemplo,&lt;br /&gt;
--  &amp;gt; separa length (&amp;gt;3) [&amp;quot;hola&amp;quot;,&amp;quot;que&amp;quot;,&amp;quot;tal&amp;quot;]&lt;br /&gt;
--  ([&amp;quot;hola&amp;quot;],[&amp;quot;que&amp;quot;,&amp;quot;tal&amp;quot;])     &lt;br /&gt;
--  &amp;gt; separa head (==&amp;#039;t&amp;#039;) [&amp;quot;trastear&amp;quot;,&amp;quot;tambor&amp;quot;,&amp;quot;animo&amp;quot;,&amp;quot;claro&amp;quot;]&lt;br /&gt;
--  ([&amp;quot;trastear&amp;quot;,&amp;quot;tambor&amp;quot;],[&amp;quot;animo&amp;quot;,&amp;quot;claro&amp;quot;])&lt;br /&gt;
--  &amp;gt; separa (*2) even [1..10]&lt;br /&gt;
--  ([1,2,3,4,5,6,7,8,9,10],[])&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4.1 Define la función por comprensión.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
separaC :: (b -&amp;gt; a) -&amp;gt; (a -&amp;gt; Bool) -&amp;gt; [b] -&amp;gt; ([b], [b])&lt;br /&gt;
separaC f p xs = ([x | x &amp;lt;- xs, p (f x)],[x | x &amp;lt;- xs, not (p (f x))])&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4.2 Define la función por orden superior (sin recurrir a&lt;br /&gt;
--  listas por comprensión ni recursión)&lt;br /&gt;
-- Nota: Puede resultarte útil hacer uso de la función predefinida partition.&lt;br /&gt;
-- Ejemplo de su utilidad:&lt;br /&gt;
--  &amp;gt; partition even [3,2,8,9,1,4] == ([2,8,4],[3,9,1])&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- 1ª Solución&lt;br /&gt;
separaO :: (b -&amp;gt; a) -&amp;gt; (a -&amp;gt; Bool) -&amp;gt; [b] -&amp;gt; ([b], [b])&lt;br /&gt;
separaO f p xs = (map snd ys, map snd zs) &lt;br /&gt;
    where valores = zip (map f xs) xs &lt;br /&gt;
          p&amp;#039; (x,_) = p x&lt;br /&gt;
          (ys,zs) = partition p&amp;#039; valores&lt;br /&gt;
&lt;br /&gt;
-- 2ª Solución&lt;br /&gt;
separaO&amp;#039; :: (b -&amp;gt; a) -&amp;gt; (a -&amp;gt; Bool) -&amp;gt; [b] -&amp;gt; ([b], [b])&lt;br /&gt;
separaO&amp;#039; f p xs = (ys, zs) &lt;br /&gt;
    where ys = filter (p.f) xs&lt;br /&gt;
          zs = filter (not.p.f) xs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mdelamor</name></author>
	</entry>
</feed>