πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

5 total messages Started by VASQUEZ MORALES MAURICIO ANDRES Thu, 29 Jul 1999 00:00
Desordenar ?
#108
Author: VASQUEZ MORALES MAURICIO ANDRES
Date: Thu, 29 Jul 1999 00:00
9 lines
827 bytes
Hola ... queria preguntar si alguien conocia algun comando 
unix o funcion (C o Perl) para desordenar un archivo (desordenar
un arreglo tambien sirve) ya que con archivos de miles de lineas
y con random, los tiempos se me van a las nubes ....

Gracias

-- 
Mauro Vasquez
Re: Desordenar ?
#107
Author: Jens Hardings Perl
Date: Wed, 28 Jul 1999 00:00
16 lines
1128 bytes
VASQUEZ MORALES MAURICIO ANDRES wrote:
> 
> Hola ... queria preguntar si alguien conocia algun comando
> unix o funcion (C o Perl) para desordenar un archivo (desordenar
> un arreglo tambien sirve) ya que con archivos de miles de lineas
> y con random, los tiempos se me van a las nubes ....

AlgοΏ½na tarea de mechones con un quicksort mal implementado? ;-)

--
Jens.

No Gates, no Windows... It's open!

Hi! I'm a .signature virus! cp me into your .signature file to help me
spread!
Re: Desordenar ?
#109
Author: VASQUEZ MORALES MAURICIO ANDRES
Date: Thu, 29 Jul 1999 00:00
21 lines
1403 bytes
In uch.ing.dcc Jens Hardings Perl <jharding@dcc.uchile.cl> wrote:
: VASQUEZ MORALES MAURICIO ANDRES wrote:
:> 
:> Hola ... queria preguntar si alguien conocia algun comando
:> unix o funcion (C o Perl) para desordenar un archivo (desordenar
:> un arreglo tambien sirve) ya que con archivos de miles de lineas
:> y con random, los tiempos se me van a las nubes ....

: Alguna tarea de mechones con un quicksort mal implementado? ;-)

: --
: Jens.

  No ... pa' na .... tengo que hacer una publicidad aleatoria pero que
  se garantice que salga una vez cada aviso .... 
  En todo caso se me han ocurrido ideas de como optimizarlo (
  desordenando de a pedazos y luego uniendo) pero la idea era de si habia
  algun comando .... :( 


  Mauro Vasquez
Re: Desordenar ?
#110
Author: Denis eccp Fuenzalida
Date: Thu, 29 Jul 1999 00:00
23 lines
1688 bytes
In uch.ing.dcc VASQUEZ MORALES MAURICIO ANDRES <mvasquez@anakena.dcc.uchile.cl> wrote:
/*   No ... pa' na .... tengo que hacer una publicidad aleatoria pero que
/*   se garantice que salga una vez cada aviso .... 
/*   En todo caso se me han ocurrido ideas de como optimizarlo (
/*   desordenando de a pedazos y luego uniendo) pero la idea era de si habia
/*   algun comando .... :( 

  Lo que suelo hacer es usar el tiempo del sistema como variable aleatoria,
  si es un caso como 'poner banners en un sitio web':

  banner_a_poner = segundos_del_sistema % total_banners;

  Puedes hacer una rutina en javascript que recoja el tiempo y escriba
  un trozo de HTML que contenga el banner que tu quieres, basado en el
  indice que obtienes.

  Ojala te sirva,

                Denis Fuenzalida (eccp / ADR), aka ".denis"
---
 "Verschlingen aus Durst das letzte bisschen Licht
  es gibt sie gestern nicht mehr und morgen noch nicht !"
  www.dcc.uchile.cl/~dfuenzal -> demoscene@Chile, RexRemix0.3, ADR !!!
Re: Desordenar ?
#111
Author: Aldrin Martoq A.
Date: Thu, 29 Jul 1999 00:00
84 lines
3524 bytes
In uch.ing.dcc VASQUEZ MORALES MAURICIO ANDRES <mvasquez@anakena.dcc.uchile.cl> wrote:
> In uch.ing.dcc Jens Hardings Perl <jharding@dcc.uchile.cl> wrote:
> : VASQUEZ MORALES MAURICIO ANDRES wrote:
> :> Hola ... queria preguntar si alguien conocia algun comando
> :> unix o funcion (C o Perl) para desordenar un archivo (desordenar
> :> un arreglo tambien sirve) ya que con archivos de miles de lineas
> :> y con random, los tiempos se me van a las nubes ....
> : Alguna tarea de mechones con un quicksort mal implementado? ;-)
>   No ... pa' na .... tengo que hacer una publicidad aleatoria pero que
>   se garantice que salga una vez cada aviso .... 
>   En todo caso se me han ocurrido ideas de como optimizarlo (
>   desordenando de a pedazos y luego uniendo) pero la idea era de si habia
>   algun comando .... :( 
Aqui lo hice en perl, mas de una vez lo necesite, asi que aqui va:

Lee un archivo y lo desordena por lineas. Aqui estan los benchmarks:
los archivos tienen 10mil, 100mil o 1millon de lineas. (cada linea cuenta
desde 0 hasta N).

2:06pm [agm@cipres:~/bin/]% set time
2:06pm [agm@cipres:~/bin/]% ./desordename 10mil 10mil2
0.48u 0.02s 0:00.58 86.2%
2:07pm [agm@cipres:~/bin/]% ./desordename 100mil 100mil2
28.12u 0.19s 0:35.28 80.2%
2:07pm [agm@cipres:~/bin/]% ./desordename 1millon 1millon2
[me aburri, son las 2:25pm]

Este ultimo ocupo 45MB de RAM, segun top.

Entonces, lo que puedes hacer es poner a cada tipo en un archivo y lo
desordenas. Luego, lees el primero, el 2do .. etc, sin desordenar el archivo
a cada rato (para asegurar que a todos le toque su turno). Si llega alguien
nuevo, lo pones al principio o al final; no tienes para que re-desordenar
todo cada vez que agregas uno nuevo.

---desordename---ini---
#!/usr/bin/perl
# desordename
# Copyright(c) 1999
# Aldrin Martoq A.

sub println
  {	print $_[0]. "\n";  }

if ($#ARGV < 0 or $#ARGV > 1)
  {	println "Uso:\n\t$0 <archivo_entrada> [archivo_salida]";
	exit 0;
  }

open(ENTRADA, $ARGV[0]) or die "$ARGV[0] no se puede leer: $!";

if ($#ARGV == 1)
  {	open(SALIDA, "> $ARGV[1]") or die "$ARGV[1] no se puede escribir: $!";  }
else
  {	open(SALIDA, ">&STDOUT");  }

while(<ENTRADA>)
  {	push @DATOS, $_;  }

while ($#DATOS >= 0)
  {	$r = int(rand($#DATOS));
	print SALIDA $DATOS[$r];
	splice(@DATOS,$r,1);
  }
---desordename---fin---



Para crear los numeros del benchmark:
---a---ini---
#!/usr/bin/perl

for ($i=0; $i<$ARGV[0]; $i++)
  {	print $i. "\n";  }
---a---fin---
2:16pm [agm@cipres:~/bin/]% ./a 10000 > 10mil
2:16pm [agm@cipres:~/bin/]% ./a 100000 > 100mil
2:16pm [agm@cipres:~/bin/]% ./a 1000000 > 1millon


-- 
Aldrin.
Area de Ingenieria
CEC U.Chile
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads