Newsgroup: it.comp.lang.perl
Titolo: Ordinamento THREAD in un NG


e cioè esattamente quelli dei messaggi di: djkanjo, Giovanni Zezza e
djkanjo, dall'ultimo al primo.
Fatta tutta la spiegazione teorica (pallosa e quasi incomprensibile), e
ripetendo la premessa che quanto sopra detto NON E' ALTRO CHE QUELLO CHE
__IO__ ho capito fin'ora dell'NNTP (quindi potrei anche aver capito
male...), e constatato che a Napoli fa un cazzo di caldo... non so da voi...
la domanda è:
-> Qualcuno conosce un metodo, un algoritmo, un comando (se esiste nel
protocollo NNTP), una funzione, un miracolo qualsiasi che faccia questo
ordinamento??
Se non vi è ancora venuto il mal di testa, vi prego rispondete.. anche se
non avete una mazza da dire :-))
E cmq... non vi preoccupate, il mal di testa vi verrà!! :-))
Ciao a tutti,
Guido.

E cmq... non vi preoccupate, il mal di testa vi verrà!! :-))
Farei cosi`, credo.
Mi pare che si possa scrivere un prima stesura dell'algoritmo usando
soltanto il riferimento  al post di cui un post e` diretta risposta.
Senti puzza di ricorsione? ;) Ecco un po' di (pseudo)codice.
 
	sub visit
	{
		$id = shift;
		# stampa il subject del messaggio, indentandolo
		# opportunamente, usando $depth
		print_subject( id );
		++$depth;
		# cerca tutti i messaggi figli di $id
		# questi figli stanno in @children
		# per ognuno di questi figli, chiama 
		# ricorsivamente la sub visit
		foreach my $child ( @children ) {
			visit( $child->{ id } );
		}
		--$depth;
	}
E all'inizio del programma, chiami C<visit> per ogni messaggio che
"non e` figlio di nessuno". $depth all'inizio vale 0 (se lo usi 
per stabilire l'indentazione, vuol dire che i messaggi stanno 
contro il bordo).
Codice non testato. Inoltre, la ricorsione costa.
Altre opinioni le puoi trovare qui:
http://www.perlmonks.org/index.pl?node_id=76249
http://www.perlmonks.org/index.pl?node_id=62108
ciao
Stefano

 
http://www.perlmonks.org/index.pl?node_id=62108
Ottimo questo link. Ora è tardi per applicarmici, ma domani gli daro' uno
sguardo con calma.
Ciao e grazie!
Ps.: Mi aspetto altre risposte!! SVEGLIATEVI CODERS!!! :-))

 questo ordinamento??
Non è sufficiente creare una struttura ad albero ricavando il padre dai
references di ogni messaggio e ricostruendo la lista dei children?
Abbozzo un po' di codice. (Non l'ho compilato, possibili errori di
sintassi).
[Message.pm]
  package Message;
  sub new {
       my $self = {  references => [ ], children => [ ] };
       return bless $self;
   }
  sub children   { 
       if( ref($_[1]) eq 'ARRAY' ) { $_[0]->{children} = $_[1] }
       return $_[0]->{children}; 
  }
  sub references { 
       if( ref($_[1]) eq 'ARRAY' ) { $_[0]->{references} = $_[1] }
       return $_[0]->{references}; 
  }
 
[
script.pl
]
  use Message;
  my @messages;
  my %msgid_map;
  while( ... ){
  # leggo i vari post, e per ognuno creo un Message,
  # imposto i suoi references e aggiungo il suo $msgid
  # a %msgid_map:
     my $m = new Message;
     $m->references( [ "<ref1@host>", "<ref2@host>"] );
     $msgid_map{ $msgid } = $m;
     push @messages, $m;
  }
  my @roots;
  for my $m( @messages )
  {
	my $parent_id = $m->references()->[0];
        my $parent = $msgid_map{ $parent_id };
	if( $parent )
        {
            my $children = $parent->children();
            push @{ $children }, $m;
        } 
        else    # references vuoto oppure parent_id non
                # trovato in %msgid_map
        {
             push @roots, $m;
        }
  }
Max

20020602152637
(In luogo dei references, che crea chiavi molto lunghe, potresti usare un
tuo identificativo, in relazione biunivoca con gli ID dei messaggi.)
L'hash, naturalmente, andrebbe mantenuto su disco (modulo DB_File, NDBM_FIle
o accesso ad altri database esterni).
Lascio ad altri di colmare quelle poche decinaia di lacune residue, ma ad
orecchio mi pare una strada praticabile.
Ciao.

I STILL NEED HELP !!!
Mi sono inceppato alla grande!
Tutti gli esempi che ho trovato in rete non servono al mio scopo...
Qualcuno č minimamente di aiuto ma cmq non riesco a sbrogliare la matassa!
...

 ha scritto nel messaggio
news:af1q8j$gfa$1...@lacerta.tiscalinet.it...


9같(
!
Perche` non provi prima a mettere un po' di codice da qualche parte?
a presto
Stefano

Perche` non provi prima a mettere un po' di codice da qualche parte?
...in maniera tale che possiamo renderci meglio conto dei problemi che
hai incontrato/stai incontrando, intendo dire.
ciao
Stefano "ma questo mi pare proprio un flood!"