Descomposiciones en sumas de cuadrados en Haskell

Esta relación de ejercicios, para la asignatura de Informática de 1º del Grado en Matemáticas, se basa en el problema 19 de los desafíos matemáticos de El País titulado Cuadrados que suman grandes cifras cuyo enunciado es el siguiente

Los números cuadrados (o cuadrados perfectos) son los cuadrados de los números naturales, es decir: 1 (1^2), 4 (2^2), 9 (3^2), 16 (4^2), 25 (5^2), etcétera. En el problema de esta semana trataremos de descubrir de cuántas maneras distintas se puede escribir un número dado como suma de cuatro cuadrados. Por ejemplo, el número 39 se puede escribir de dos formas: 39=1+1+1+36 y 39=1+4+9+25. Observemos que se pueden repetir sumandos y que no contaremos como maneras distintas de escritura las que se obtienen al cambiar el orden de los sumandos.

Las preguntas concretas son: ¿De cuántas formas distintas se puede escribir 2^2012 como suma de cuatro cuadrados? ¿Y de cuántas formas se puede escribir 2^2011?

La relación de ejercicios es la siguiente
Read More “Descomposiciones en sumas de cuadrados en Haskell”

Expresiones aritméticas mediante tipos abstracto de datos y polinomios en Haskell

El objetivo de esta relación de ejercicios es estudiar dos representaciones de las expresiones aritméticas construidas con una variable, los números enteros y las operaciones suma y producto.

Una representación es mediante tipo algebraico y la otra es mediante la lista de los coeficientes del polinomio correspondiente.

Se verá como puede transformarse una representación en la otra y se comprobará con QuickCheck la equivalencia de las representaciones.

La relación está basada en el ejercicio 3.3 (página 15) del artículo Interactive Proof Introduction to Isabelle/HOL de Tobias Nipkow.

El contenido de la relación de ejercicios se encuentra en LógicaMente y se muestra a continuación:
Read More “Expresiones aritméticas mediante tipos abstracto de datos y polinomios en Haskell”

El problema de las puertas en Haskell

En Gaussianos han comentado esta semana El problema de las 100 puertas y los divisores de un número natural cuyo enunciado es el siguiente

Supongamos que tenemos n puertas numeradas del 1 al n que están todas cerradas. Realizaremos, para cada puerta, el siguiente proceso: cambiar de estado todas las puertas cuyo número sea múltiplo de la puerta en la que estemos en ese momento. El problema consiste en caracterizar las puertas que quedan abierta al final del proceso.

Por ejemplo, supongamos que n=5 y usamos A para indicar que la puerta está abierta y C para indicar que está cerrada.

  • Inicialmente, nos encontramos en la posición 1 y el estado de las puertas es CCCCC.
  • Cambiamos de estado todas las puertas que tienen como número un múltiplo de 1 (es decir, en este caso las abrimos todas, con lo que tenemos AAAAA) y aumentamos la posición a 2.
  • Cambiamos de estado todas las puertas que tienen como número un múltiplo de 2, (es decir, cerramos la 2 y la 4, con lo que tenemos ACACA) y aumentamos la posición a 3.
  • Cambiamos de estado todas las puertas que tienen como número un múltiplo de 3, (es decir, cerramos la 3, con lo que tenemos ACCCA) y aumentamos la posición a 4.
  • Cambiamos de estado todas las puertas que tienen como número un múltiplo de 4, (es decir, abrimos la 4, con lo que tenemos ACCAA) y aumentamos la posición a 5.
  • Cambiamos de estado todas las puertas que tienen como número un múltiplo de 4, (es decir, cerramos la 5, con lo que tenemos ACCAC).

En este ejemplo han quedado abiertas la puerta 1 y la puerta 4.

Basándome en este problema he escrito la siguiente relación de ejercicios de Haskell para la asignatura de Informática de 1º del Grado en Matemáticas
Read More “El problema de las puertas en Haskell”

Un problema de las olimpiadas rusas en Haskell

En el blog Números y algo más plantean hoy un problema de las olimpiadas rusas cuyo enunciado es el siguiente

Si escribimos todos los números enteros empezando por el uno, uno al lado del otro (o sea, 1234567891011121314…), ¿qué dígito ocupa la posición 206788?

Basándome en este problema he escrito la siguiente relación de ejercicios de Haskell para la asignatura de Informática de 1º del Grado en Matemáticas como ejemplo de uso de cadenas infinitas.
Read More “Un problema de las olimpiadas rusas en Haskell”

“El próximo después de 1811” con Haskell

El enunciado del problema de hoy de Números y algo más … es el siguiente

1811 fue el último año que no teniendo ceros en su composición, tanto su suma digital como su producto digital están incluidos como cadenas dentro del número

Suma digital (1811) = 1+8+1+1 = 11
Producto dígital (1811) = 1x8x1x1 = 8

¿Cuál es próximo año sin ceros en que esto ocurrirá?

A partir del problema he escrito la siguinte relación de ejercicios para la asignatura de Informática de 1º del Grado en Matemáticas.
Read More ““El próximo después de 1811” con Haskell”