[bcn-pm] pregunta: unio de dues cadenes de caracters
'Josep Ruano'
jruano a capside.com
dll set 28 08:18:16 PDT 2009
Hola!
A mi se m'acut que una manera llegible de fer-ho, ja que en José Luis
demanava això, podria ser la següent, pressuposant que NO tindrem lletra a
les dues cadenes al mateix temps i que ambdues cadenes tenen igual longitud:
----------------------------------------------------------------------------
--------------------
my $patro = { '-' => { '-' => '-', 'A' => 'A', 'C' => 'C', 'T' => 'T', 'G'
=> 'G' },
'A' => { '-' => 'A'},
'C' => { '-' => 'C' },
'G' => { '-' => 'G' },
'T' => { '-' => 'T' },
' ' => { ' ' => ' ' };
my $unio = '';
for (my $i = 0; $i < length($seq1); $i++) {
$unio .= $patro{ substr($seq1, $i, 1) }{ substr($seq2, $i, 1) }; }
----------------------------------------------------------------------------
--------------------
També podriem canviar l'ús de substr per un accés a un vector, en la forma:
---------------------
my $unio = '';
my @seq1a = split //, $seq1;
my @seq2a = split //, $seq2;
for (my $i = 0; $i < @seq1a; $i++) {
$unio .= $patro{$seq1a[$i]}{$seq2a[$i]}; }
---------------------
Què us sembla? Ho trobeu llegible? No he provat a nivell de rendiment què
tal es compara amb les opcions basades en expressions regulars...
Salutacions,
Josep Ruano
CAPSiDE
w w w . c a p s i d e . c o m
Més informació sobre la llista de correu Barcelona-pm