• Publicidad

Reto: ordenación de registros de actividad Git

Aprende Perl

Reto: ordenación de registros de actividad Git

Notapor explorer » 2010-12-30 15:45 @698

Se tiene un fichero de texto que es el registro de actividad de un repositorio git:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
user:Larry Wall
570320305
:100644 100644 fc05ca2... a486289... M  Makefile.SH
:100644 100644 728f44d... df4887a... M  arg.c
:100644 100644 2e1bd8a... d442b02... M  arg.h
:100644 100644 9eb4a8f... 9a019f2... M  cmd.h
:100644 100644 e19cd94... a6997a9... M  patchlevel.h
:100644 100644 751b8cd... 9b877f3... M  perl.h
:100644 100644 16f8a9a... b9a7a8e... M  perl.y
:000000 100644 0000000... d548f72... A  perldb
:000000 100644 0000000... 5a42241... A  perldb.man  
:100644 100644 dfd83d9... d2119ac... M  perly.c
:100644 100644 b812ee1... 3a15e29... M  search.c
:100644 100644 b9ef533... fc158ff... M  stab.c
:100644 100644 2cfe311... 015f442... M  t/base.lex  
:000000 100644 0000000... 1915710... A  t/op.eval
:100644 100644 b0b78f1... 3572c42... M  util.c
:100644 100644 8a1ad78... c995040... M  x2p/a2py.c
:100644 100644 04d133b... e745510... M  x2p/walk.c

user:Marnix (ain't unix!) A. van Ammers
570484716
:100755 100755 d32c305... 85ccf2d... M  Configure
:100644 100644 df4887a... 4ce4008... M  arg.c
:100644 100644 a6997a9... 618bca4... M  patchlevel.h
:100644 100644 9b877f3... 341afa8... M  perl.h

user:Peter E. Yee
570481130
:100755 100755 85ccf2d... d55cb72... M  Configure
:100644 100644 618bca4... 4e0e918... M  patchlevel.h

user:Mark Biggar
570657634
:100644 100644 4e0e918... 98702f8... M  patchlevel.h
:100644 100644 ea40065... d775ac4... M  perl.man.1  
:100644 100644 ecda600... 25f3c26... M  perl.man.2
:100644 100644 5a42241... 0cfe0f4... M  perldb.man
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

La distribución se ve que es muy clara:
* son registros separados por una línea en blanco
* cada registro es un conjunto de líneas
* la primera línea es el nombre de usuario
* la segunda es el tiempo en segundos epoch
* el resto de las siguientes líneas es la actividad (ficheros añadidos (A), modificados (M), y eliminados (D))

Normalmente, los registros salen ordenados por el valor de la fecha (el número de segundos), pero, antes de eso, están ordenados según la rama (fork) del desarrollo que se haya llevado a cabo.

La consecuencia es que los registros no están ordenados temporalmente, sino, primero por ramas de desarrollo y luego por tiempo. En el ejemplo, el tercer registro es anterior al segundo.

El reto consiste en hacer un programa que lea este fichero (perl.log) y saque otro perl_sorted.log) en que los registros sí que estén ordenados temporalmente. Vamos a suponer que no tenemos problemas de memoria, como para leer el fichero entero en memoria, por ejemplo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
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