Necesito hacer un programa que a partir de una secuencia de letras, la separe en tripletes (grupo de 3 letras) e indique el número de veces que aparece cada triplete a lo largo de la secuencia.
He escrito el siguiente código:
Using perl Syntax Highlighting
$sec = 'CGACGATCTTCGTACGGGACTAGCTCGTGTCGGTCGC';
for($i=0; $i < (length($sec) - 2) ; $i += 3) {
$tres = substr($sec,$i,3);
# Contamos los tripletes
$contador = 0;
$contador++ while $sec =~ /$tres/g;
# Declaramos un hash en el cual las claves son los tripletes y el
# valor asociado las veces que aparecen
%hash = (
$tres => $contador,
);
print "$tres => $hash{$tres}";
}
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Con este programa obtengo lo siguiente:
Using text Syntax Highlighting
CGA => 2
CGA => 2
TCT => 1
TCG => 4
TAC => 1
GGG => 1
ACT => 1
AGC => 1
TCG => 4
TGT => 1
CGG => 2
TCG => 4
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
El problema es que obtengo los tripletes repetidos ¿Cómo podría solucionarlo para que la salida fuera:
Using text Syntax Highlighting
CGA => 2
TCT => 1
TCG => 4
TAC => 1
GGG => 1
ACT => 1
AGC => 1
TGT => 1
CGG => 2
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4