<?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=Relaci%C3%B3n_5</id>
	<title>Relación 5 - 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=Relaci%C3%B3n_5"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_5&amp;action=history"/>
	<updated>2026-07-19T11:24:00Z</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=Relaci%C3%B3n_5&amp;diff=417&amp;oldid=prev</id>
		<title>Anasoscab en 08:29 17 nov 2021</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_5&amp;diff=417&amp;oldid=prev"/>
		<updated>2021-11-17T08:29:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 08:29 17 nov 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l55&quot;&gt;Línea 55:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 55:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mayuscula2int = undefined&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;mayuscula2int = undefined&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-- Ana Sosa Caballero &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mayuscula2int :: Char -&gt; Int&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mayuscula2int x  = ord x - ord &#039;A&#039;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- Ejercicio 3. Definir la función&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- Ejercicio 3. Definir la función&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l65&quot;&gt;Línea 65:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 68:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-- Ana Sosa Caballero&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;int2minuscula :: Int -&amp;gt; Char&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;int2minuscula :: Int -&amp;gt; Char&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;int2minuscula n = chr (ord &amp;#039;a&amp;#039; + n)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;int2minuscula n = chr (ord &amp;#039;a&amp;#039; + n)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l78&quot;&gt;Línea 78:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 82:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-- Ana Sosa Caballero&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;int2mayuscula :: Int -&amp;gt; Char&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;int2mayuscula :: Int -&amp;gt; Char&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;int2mayuscula = &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;undefined&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;int2mayuscula &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;x &lt;/ins&gt;= &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chr (x + ord &amp;#039;A&amp;#039;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Anasoscab</name></author>
	</entry>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_5&amp;diff=385&amp;oldid=prev</id>
		<title>Antlopgar10 en 08:19 5 nov 2021</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_5&amp;diff=385&amp;oldid=prev"/>
		<updated>2021-11-05T08:19:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 08:19 5 nov 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l225&quot;&gt;Línea 225:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 225:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;chiCuad :: [Float] -&amp;gt; [Float] -&amp;gt; Float&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;chiCuad :: [Float] -&amp;gt; [Float] -&amp;gt; Float&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;chiCuad os es = sum [((o-e)^2)/e | (o,e) &amp;lt;- zip os es]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;chiCuad os es = sum [((o-e)^2)/e | (o,e) &amp;lt;- zip os es]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-- Evita que si alguna lista tiene un cero, haskell divida entre 0 (= Infinity)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chiCuad&#039; :: [Float] -&gt; [Float] -&gt; Float&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chiCuad&#039; os es = if elem 0 os then sum [((o - e)^2)/e | (o,e)&amp;lt;-zip os es]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  else if elem 0 es then sum [((e - o)^2)/o | (o,e)&amp;lt;-zip os es]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  else sum [((o - e)^2)/e | (o,e)&amp;lt;-zip os es]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- ---------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Antlopgar10</name></author>
	</entry>
	<entry>
		<id>https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_5&amp;diff=342&amp;oldid=prev</id>
		<title>Mdelamor: Página creada con «&lt;source lang=&#039;haskell&#039;&gt;  -- I1M 2021-22: Rel_5.hs (29 de octubre de 2021) -- Definiciones por comprensión con cadenas: El cifrado César. -- Departamento de Ciencias de la…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/WIKIS/I1M2021G2/index.php?title=Relaci%C3%B3n_5&amp;diff=342&amp;oldid=prev"/>
		<updated>2021-10-28T22:27:58Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang=&amp;#039;haskell&amp;#039;&amp;gt;  -- I1M 2021-22: Rel_5.hs (29 de octubre de 2021) -- Definiciones por comprensión con cadenas: El cifrado César. -- Departamento de Ciencias de la…»&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;
-- I1M 2021-22: Rel_5.hs (29 de octubre de 2021)&lt;br /&gt;
-- Definiciones por comprensión con cadenas: El cifrado César.&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;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Introducción                                                       --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- En el tema 5, cuyas transparencias se encuentran en &lt;br /&gt;
--    http://www.cs.us.es/~jalonso/cursos/i1m/temas/tema-5.pdf&lt;br /&gt;
-- se estudió, como aplicación de las definiciones por comprensión, el&lt;br /&gt;
-- cifrado César. El objetivo de esta relación es modificar el programa&lt;br /&gt;
-- de cifrado César para que pueda utilizar también letras&lt;br /&gt;
-- mayúsculas. Por ejemplo,  &lt;br /&gt;
--    ghci&amp;gt; descifra &amp;quot;Ytit Ufwf Sfif&amp;quot;&lt;br /&gt;
--    &amp;quot;Todo Para Nada&amp;quot;&lt;br /&gt;
-- Para ello, se propone la modificación de las funciones correspondientes&lt;br /&gt;
-- del tema 5.&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Importación de librerías auxiliares                                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
import Data.Char&lt;br /&gt;
import Test.QuickCheck&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1. Definir la función&lt;br /&gt;
--    minuscula2int :: Char -&amp;gt; Int&lt;br /&gt;
-- tal que (minuscula2int c) es el entero correspondiente a la letra&lt;br /&gt;
-- minúscula c. Por ejemplo, &lt;br /&gt;
--    minuscula2int &amp;#039;a&amp;#039;  ==  0&lt;br /&gt;
--    minuscula2int &amp;#039;d&amp;#039;  ==  3&lt;br /&gt;
--    minuscula2int &amp;#039;z&amp;#039;  ==  25&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
minuscula2int :: Char -&amp;gt; Int&lt;br /&gt;
minuscula2int c = ord c - ord &amp;#039;a&amp;#039;&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2. Definir la función&lt;br /&gt;
--    mayuscula2int :: Char -&amp;gt; Int&lt;br /&gt;
-- tal que (mayuscula2int c) es el entero correspondiente a la letra&lt;br /&gt;
-- mayúscula c. Por ejemplo, &lt;br /&gt;
--    mayuscula2int &amp;#039;A&amp;#039;  ==  0&lt;br /&gt;
--    mayuscula2int &amp;#039;D&amp;#039;  ==  3&lt;br /&gt;
--    mayuscula2int &amp;#039;Z&amp;#039;  ==  25&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
mayuscula2int :: Char -&amp;gt; Int&lt;br /&gt;
mayuscula2int = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3. Definir la función&lt;br /&gt;
--    int2minuscula :: Int -&amp;gt; Char&lt;br /&gt;
-- tal que (int2minuscula n) es la letra minúscula correspondiente al&lt;br /&gt;
-- entero n. Por ejemplo, &lt;br /&gt;
--    int2minuscula 0   ==  &amp;#039;a&amp;#039;&lt;br /&gt;
--    int2minuscula 3   ==  &amp;#039;d&amp;#039;&lt;br /&gt;
--    int2minuscula 25  ==  &amp;#039;z&amp;#039;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
int2minuscula :: Int -&amp;gt; Char&lt;br /&gt;
int2minuscula n = chr (ord &amp;#039;a&amp;#039; + n)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4. Definir la función&lt;br /&gt;
--    int2mayuscula :: Int -&amp;gt; Char&lt;br /&gt;
-- tal que (int2mayuscula n) es la letra minúscula correspondiente al&lt;br /&gt;
-- entero n. Por ejemplo, &lt;br /&gt;
--    int2mayuscula 0   ==  &amp;#039;A&amp;#039;&lt;br /&gt;
--    int2mayuscula 3   ==  &amp;#039;D&amp;#039;&lt;br /&gt;
--    int2mayuscula 25  ==  &amp;#039;Z&amp;#039;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
int2mayuscula :: Int -&amp;gt; Char&lt;br /&gt;
int2mayuscula = undefined&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5. Definir la función&lt;br /&gt;
--    desplaza :: Int -&amp;gt; Char -&amp;gt; Char&lt;br /&gt;
-- tal que (desplaza n c) es el carácter obtenido desplazando n&lt;br /&gt;
-- caracteres el carácter c. Por ejemplo, &lt;br /&gt;
--    desplaza   3  &amp;#039;a&amp;#039;  ==  &amp;#039;d&amp;#039;&lt;br /&gt;
--    desplaza   3  &amp;#039;y&amp;#039;  ==  &amp;#039;b&amp;#039;&lt;br /&gt;
--    desplaza (-3) &amp;#039;d&amp;#039;  ==  &amp;#039;a&amp;#039;&lt;br /&gt;
--    desplaza (-3) &amp;#039;b&amp;#039;  ==  &amp;#039;y&amp;#039;&lt;br /&gt;
--    desplaza   3  &amp;#039;A&amp;#039;  ==  &amp;#039;D&amp;#039;&lt;br /&gt;
--    desplaza   3  &amp;#039;Y&amp;#039;  ==  &amp;#039;B&amp;#039;&lt;br /&gt;
--    desplaza (-3) &amp;#039;D&amp;#039;  ==  &amp;#039;A&amp;#039;&lt;br /&gt;
--    desplaza (-3) &amp;#039;B&amp;#039;  ==  &amp;#039;Y&amp;#039;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Extender a mayúsculas&lt;br /&gt;
desplaza :: Int -&amp;gt; Char -&amp;gt; Char&lt;br /&gt;
desplaza n c &lt;br /&gt;
    | elem c [&amp;#039;a&amp;#039;..&amp;#039;z&amp;#039;] = int2minuscula ((minuscula2int c+n) `mod` 26)&lt;br /&gt;
    | otherwise         = c&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6.1. Definir la función&lt;br /&gt;
--    codifica :: Int -&amp;gt; String -&amp;gt; String&lt;br /&gt;
-- tal que (codifica n xs) es el resultado de codificar el texto xs con&lt;br /&gt;
-- un desplazamiento n. Por ejemplo, &lt;br /&gt;
--    ghci&amp;gt; codifica   3  &amp;quot;En Todo La Medida&amp;quot; &lt;br /&gt;
--    &amp;quot;Hq Wrgr Od Phglgd&amp;quot;&lt;br /&gt;
--    ghci&amp;gt; codifica (-3) &amp;quot;Hq Wrgr Od Phglgd&amp;quot;&lt;br /&gt;
--    &amp;quot;En Todo La Medida&amp;quot;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
codifica :: Int -&amp;gt; String -&amp;gt; String&lt;br /&gt;
codifica n xs = [desplaza n x | x &amp;lt;- xs]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6.2. Comprobar con QuickCheck que para cualquier entero n y&lt;br /&gt;
-- cualquier cadena cs se tiene que (codifica (-n) (codifica n cs)) es&lt;br /&gt;
-- igual a cs.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_codifica :: Int -&amp;gt; String -&amp;gt; Bool&lt;br /&gt;
prop_codifica = undefined&lt;br /&gt;
&lt;br /&gt;
-- La comprobación es&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7 (resuelto). Definir la función&lt;br /&gt;
--    tabla :: [Float]&lt;br /&gt;
-- tal que tabla es la lista de la frecuencias de las letras en&lt;br /&gt;
-- castellano, Por ejemplo, la frecuencia de la &amp;#039;a&amp;#039; es del 12.53%, la de&lt;br /&gt;
-- la &amp;#039;b&amp;#039; es 1.42%. &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
tabla :: [Float]&lt;br /&gt;
tabla = [12.53, 1.42, 4.68, 5.86, 13.68, 0.69, 1.01, &lt;br /&gt;
          0.70, 6.25, 0.44, 0.01,  4.97, 3.15, 6.71, &lt;br /&gt;
          8.68, 2.51, 0.88, 6.87,  7.98, 4.63, 3.93, &lt;br /&gt;
          0.90, 0.02, 0.22, 0.90,  0.52]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8. Definir la función&lt;br /&gt;
--    porcentaje :: Int -&amp;gt; Int -&amp;gt; Float&lt;br /&gt;
-- tal que (porcentaje n m) es el porcentaje de n sobre m. Por ejemplo,&lt;br /&gt;
--    porcentaje 2 5  ==  40.0  &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
porcentaje :: Int -&amp;gt; Int -&amp;gt; Float&lt;br /&gt;
porcentaje n m = (fromIntegral n / fromIntegral m) * 100&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9. Definir la función&lt;br /&gt;
--    letras :: String -&amp;gt; String&lt;br /&gt;
-- tal que (letras xs) es la cadena formada por las letras de la cadena&lt;br /&gt;
-- xs. Por ejemplo,  &lt;br /&gt;
--    letras &amp;quot;Esto Es Una Prueba&amp;quot;  ==  &amp;quot;EstoEsUnaPrueba&amp;quot;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Extender a mayúsculas&lt;br /&gt;
letras :: String -&amp;gt; String&lt;br /&gt;
letras xs = [x | x &amp;lt;- xs, elem x [&amp;#039;a&amp;#039;..&amp;#039;z&amp;#039;]]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10.1. Definir la función&lt;br /&gt;
--    ocurrencias :: Eq a =&amp;gt; a -&amp;gt; [a] -&amp;gt; Int&lt;br /&gt;
-- tal que (ocurrencias x xs) es el número de veces que ocurre el&lt;br /&gt;
-- elemento x en la lista xs. Por ejemplo, &lt;br /&gt;
--    ocurrencias &amp;#039;a&amp;#039; &amp;quot;Salamanca&amp;quot;  ==  4  &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
ocurrencias :: Eq a =&amp;gt; a -&amp;gt; [a] -&amp;gt; Int&lt;br /&gt;
ocurrencias x xs = length [x&amp;#039; | x&amp;#039; &amp;lt;- xs, x == x&amp;#039;]  &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10.2. Comprobar con QuickCheck si el número de ocurrencias&lt;br /&gt;
-- de un elemento x en una lista xs es igual que en su inversa.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- La propiedad es &lt;br /&gt;
prop_ocurrencia_inv :: Int -&amp;gt; [Int] -&amp;gt; Bool&lt;br /&gt;
prop_ocurrencia_inv = undefined&lt;br /&gt;
&lt;br /&gt;
-- La comprobación es&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10.3. Comprobar con QuickCheck si el número de ocurrencias&lt;br /&gt;
-- de un elemento x en la concatenación de las listas xs e ys es igual a&lt;br /&gt;
-- la suma del número de ocurrencias de x en xs y en ys.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_ocurrencia_conc :: Int -&amp;gt; [Int] -&amp;gt; [Int] -&amp;gt; Bool&lt;br /&gt;
prop_ocurrencia_conc = undefined&lt;br /&gt;
&lt;br /&gt;
-- La comprobación es&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12. Definir la función&lt;br /&gt;
--    frecuencias :: String -&amp;gt; [Float]&lt;br /&gt;
-- tal que (frecuencias xs) es la frecuencia de cada una de las letras&lt;br /&gt;
-- de la cadena xs. Por ejemplo, &lt;br /&gt;
--    ghci&amp;gt; frecuencias &amp;quot;En Todo La Medida&amp;quot;&lt;br /&gt;
--    [14.3,0,0,21.4,14.3,0,0,0,7.1,0,0,7.1,&lt;br /&gt;
--     7.1,7.1,14.3,0,0,0,0,7.1,0,0,0,0,0,0]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
frecuencias :: String -&amp;gt; [Float]&lt;br /&gt;
frecuencias xs = &lt;br /&gt;
    [porcentaje (ocurrencias x xs&amp;#039;) n | x &amp;lt;- [&amp;#039;a&amp;#039;..&amp;#039;z&amp;#039;]]&lt;br /&gt;
    where xs&amp;#039; = [toLower x | x &amp;lt;- xs]&lt;br /&gt;
          n   = length (letras xs)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.1. Definir la función&lt;br /&gt;
--    chiCuad :: [Float] -&amp;gt; [Float] -&amp;gt; Float&lt;br /&gt;
-- tal que (chiCuad os es) es la medida chi cuadrado de las&lt;br /&gt;
-- distribuciones os y es. Por ejemplo, &lt;br /&gt;
--    chiCuad [3,5,6] [3,5,6]  ==  0.0&lt;br /&gt;
--    chiCuad [3,5,6] [5,6,3]  ==  3.9666667&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
chiCuad :: [Float] -&amp;gt; [Float] -&amp;gt; Float&lt;br /&gt;
chiCuad os es = sum [((o-e)^2)/e | (o,e) &amp;lt;- zip os es]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.2, Comprobar con QuickCheck que para cualquier par de&lt;br /&gt;
-- listas xs e ys se verifica que (chiCuad xs ys) es 0 y xs e ys son&lt;br /&gt;
-- iguales. &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_chiCuad_1 :: [Float] -&amp;gt; [Float] -&amp;gt; Bool&lt;br /&gt;
prop_chiCuad_1 = undefined&lt;br /&gt;
&lt;br /&gt;
-- La comprobación es&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.3. A la vista de los contraejemplos del apartado&lt;br /&gt;
-- anterior, qué condición hay que añadir para que se verifique la&lt;br /&gt;
-- propiedad.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_chiCuad_2 :: [Float] -&amp;gt; [Float] -&amp;gt; Property&lt;br /&gt;
prop_chiCuad_2 = undefined&lt;br /&gt;
&lt;br /&gt;
-- La comprobación es&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.3. A la vista del apartado anterior, el número de tests&lt;br /&gt;
-- que ha pasado puede ser menor que 100. Reescribir la propiedad de&lt;br /&gt;
-- forma que se verifique en los 100 tests.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_chiCuad_3 :: [Float] -&amp;gt; [Float] -&amp;gt; Bool&lt;br /&gt;
prop_chiCuad_3 = undefined&lt;br /&gt;
&lt;br /&gt;
-- La comprobación es&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14.1. Definir la función&lt;br /&gt;
--    rota :: Int -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
-- tal que (rota n xs) es la lista obtenida rotando n posiciones los&lt;br /&gt;
-- elementos de la lista xs. Por ejemplo, &lt;br /&gt;
--    rota  2 &amp;quot;manolo&amp;quot;              ==  &amp;quot;noloma&amp;quot;  &lt;br /&gt;
--    rota 10 &amp;quot;manolo&amp;quot;              ==  &amp;quot;lomano&amp;quot;&lt;br /&gt;
--    [rota n &amp;quot;abc&amp;quot; | n &amp;lt;- [0..5]]  ==  [&amp;quot;abc&amp;quot;,&amp;quot;bca&amp;quot;,&amp;quot;cab&amp;quot;,&amp;quot;abc&amp;quot;,&amp;quot;bca&amp;quot;,&amp;quot;cab&amp;quot;]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
chiCuad :: [Float] -&amp;gt; [Float] -&amp;gt; Float&lt;br /&gt;
chiCuad os es = sum [((o-e)^2)/e | (o,e) &amp;lt;- zip os es]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14.2. Comprobar con QuickCkeck si para cualquier lista xs&lt;br /&gt;
-- si se rota n veces y el resultado se rota m veces se obtiene lo mismo&lt;br /&gt;
-- que rotando xs (n+m) veces, donde n y m son números no nulos.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_rota :: Int -&amp;gt; Int -&amp;gt; [Int] -&amp;gt; Property&lt;br /&gt;
prop_rota = undefined&lt;br /&gt;
&lt;br /&gt;
-- La comprobación es&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15.1. Definir la función&lt;br /&gt;
--    descifra :: String -&amp;gt; String&lt;br /&gt;
-- tal que (descifra xs) es la cadena obtenida descodificando la cadena&lt;br /&gt;
-- xs por el anti-desplazamiento que produce una distribución de letras&lt;br /&gt;
-- con la menor deviación chi cuadrado respecto de la tabla de&lt;br /&gt;
-- distribución de las letras en castellano. Por ejemplo, &lt;br /&gt;
--    ghci&amp;gt; codifica 5 &amp;quot;Todo Para Nada&amp;quot;&lt;br /&gt;
--    &amp;quot;Ytit Ufwf Sfif&amp;quot;&lt;br /&gt;
--    ghci&amp;gt; descifra &amp;quot;Ytit Ufwf Sfif&amp;quot;&lt;br /&gt;
--    &amp;quot;Todo Para Nada&amp;quot;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
descifra :: String -&amp;gt; String&lt;br /&gt;
descifra xs =  codifica (-factor) xs&lt;br /&gt;
    where factor = head (posiciones (minimum tabChi) tabChi)&lt;br /&gt;
          tabChi = [chiCuad (rota n tabla&amp;#039;) tabla | n &amp;lt;- [0..25]]&lt;br /&gt;
          tabla&amp;#039; = frecuencias xs&lt;br /&gt;
&lt;br /&gt;
posiciones :: Eq a =&amp;gt; a -&amp;gt; [a] -&amp;gt; [Int]&lt;br /&gt;
posiciones x xs = &lt;br /&gt;
    [i | (x&amp;#039;,i) &amp;lt;- zip xs [0..], x == x&amp;#039;]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mdelamor</name></author>
	</entry>
</feed>