• Publicidad

Ordenar array por fecha

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Ordenar array por fecha

Notapor danimera » 2008-10-03 19:17 @845

Lo que deseo es ordenar esta lista por orden cronológico de menor a mayor

los datos los tengo de esta forma

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$foto[1] = "2||valle.jpg||tumb_valle.jpg||categoria||19||09||2008";
$foto[2] = "2||valle.jpg||tumb_valle.jpg||categoria||17||09||2008";
$foto[3] = "2||valle.jpg||tumb_valle.jpg||categoria||18||09||2008";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


la idea es organizar de alguna forma para que me quede algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$foto[1] = "2||valle.jpg||tumb_valle.jpg||categoria||17||09||2008";
$foto[2] = "2||valle.jpg||tumb_valle.jpg||categoria||18||09||2008";
$foto[3] = "2||valle.jpg||tumb_valle.jpg||categoria||19||09||2008";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Probé unas cosas tan horribles que me da pena mostrar... pero ya mi solución estaba tomando muchas líneas y bueno... Me gustaría saber de qué forma puedo hacer eso más rápido. Gracias
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Publicidad

Notapor explorer » 2008-10-04 11:20 @513

La transformada de Schwartz está bien para estos casos...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
        1 #!/usr/bin/perl
        2 use strict;
        3 use warnings;
        4 use diagnostics;
        5
        6 my @foto = qw(
        7     2||valle.jpg||tumb_valle.jpg||categoria||19||09||2008
        8     2||valle.jpg||tumb_valle.jpg||categoria||17||09||2007
        9     2||valle.jpg||tumb_valle.jpg||categoria||17||11||2008
       10     2||valle.jpg||tumb_valle.jpg||categoria||18||09||2008
       11 );
       12
       13 print join "\n", @foto,'','';
       14
       15 @foto
       16     = map  { $_->[3] }
       17       sort {
       18           $a->[2] <=> $b->[2]
       19                   ||
       20           $a->[1] <=> $b->[1]
       21                   ||
       22           $a->[0] <=> $b->[0]
       23       }
       24       map { [ (split/\|\|/)[4..6], $_ ] }
       25       @foto
       26     ;
       27
       28 print join "\n", @foto, '';
       29
       30 __END__
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor salva » 2008-10-08 11:29 @520

Para ese formato de datos en concreto, donde la fecha aparece al final como DD||MM||YYYY puedes hacerlo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @foto = qw( 2||valle.jpg||tumb_valle.jpg||categoria||19||09||2008
               2||valle.jpg||tumb_valle.jpg||categoria||17||09||2007
               2||valle.jpg||tumb_valle.jpg||categoria||17||11||2008
               2||valle.jpg||tumb_valle.jpg||categoria||18||09||2008
             );

@foto = map join('|', reverse split /\|/),
        sort
        map join('|', reverse split /\|/), @foto;

print join "\n", @foto, '';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680


Volver a Intermedio

¿Quién está conectado?

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

cron