• Publicidad

Reto: checksum progresivo

Aprende Perl

Reto: checksum progresivo

Notapor explorer » 2010-01-09 19:42 @862

Se plantea el siguiente problema.

Disponemos del fichero fichero.dat. Su tamaño nos lo dice el sistema operativo, pero una pista es que es muy grande. Para la resolución de este problema, supondremos que está en el directorio actual. En caso de que el tamaño del fichero sea impar, agregaremos un 0 al final.

Se requiere obtener un fichero llamado fichero_chk.dat, cuyo contenido sean líneas de texto. Cada línea contendrá un checksum (suma de control).

El orden de las líneas será el siguiente:

* la primera línea contendrá el checksum de todo el fichero
* la siguiente línea contendrá el checksum de la primera mitad
* la siguiente línea contendrá el checksum de la segunda mitad
* la siguiente línea contendrá el checksum del primer cuarto
* la siguiente línea contendrá el checksum del segundo cuarto
* etc.

Como se ve, se trata de generar checksum, en bloques de mayor a menor tamaño, hasta que los bloques a analizar sean de un tamaño inferior a 10KB (el fichero siempre será mucho mayor de 10KB).

La suma de control se calculará de la siguiente manera: a = (a + b) % 2^32
Es decir, es una simple suma de los datos, pero recortada para que entre en un valor de 32 bits. Esta forma de calcular el checksum es otra pista para su resolución.

El objetivo es hacer un programa que genere el fichero de salida, de la forma más rápida posible.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Volver a Formación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados