Tecnología

Inicio

Cómo quitar los duplicados de la matriz Perl

Perl y muchos otros lenguajes de programación utilizan matrices para almacenar una lista de datos. Sin embargo, Perl también es compatible con una estructura de datos específica que se llama hash. Un hash Perl asocia un valor particular con una llave. Un ejemplo es el hash {ene => 31, abr => 30}, en el que un mes es una clave y un número de días es un valor. Un hash de Perl hace posible el desarrollo de un algoritmo simple para eliminar duplicados de una matriz. La subrutina correspondiente tiene menos de diez comandos en Perl.

Instrucciones

Creación de una subrutina "Remove_duplicates;" un algoritmo

1 Obtener datos de la matriz y declarar un hash "entradas". Otra matriz llamada "new_array" contendrá los datos no duplicadas. Los pasos 1 a 5 se ilustra con el código Perl dada en la Sección 2, paso 3.

2 Asignar todos los elementos de la matriz como las claves hash y asignar valores hash igual a 1 para todas las claves.

3 Recorrer todos los elementos de la matriz y comprobar el valor hash asociada a este elemento.

4 Si el valor hash es 1 (ver paso 3) a continuación, el elemento es original o no duplica y se debe agregar a "new_array." En el mismo tiempo, este elemento está marcado; es decir, el valor hash cambia a 0.

5 Si el valor hash es 0, entonces este elemento ha sido ya encontrado; es decir, se duplica y se omitirá.

Ejemplo de programa y Perl

6 Eliminar duplicados de la matriz con los elementos (1 2 6 7 9 2 1 2 6).

7 Imprimir las matrices iniciales y finales (sin duplicados).

Sección 8 Comienza 1Subroutine

remove_duplicates sub {
mi ($ matriz, $ array nuevo) = @; #Step 1. Leer matriz inicial
mis entradas% = (); #Step 1. Declarar el hash

foreach (@ $ array) {
siguiente si existe $ entradas {$};

$ entradas {$} = 1; #Paso 2
}

foreach (@ $ array) {#Step 3. Recorrer todos los elementos de la matriz
Si se omite entradas ($ {$ _}) {#Step 5. El elemento Si el valor hash es 0.
@ $ empujar nueva matriz, $; #Step 4. Agregar un elemento a la nueva matriz sólo si el valor hash es 1

$ {$ _ entradas} = 0; #Step 4. El elemento está marcado es decir, cambiar el valor hash a 0.
}

}
}

EndsSection subrutina 2

mi $ array = [QW (1 2 6 7 9 2 1 2 6)]; # Paso 1: ejemplo una matriz

mi new_array $ = []; #

remove_duplicates ($ array, $ new_array);
print "@ $ array \ n"; #Step 2. Impresión matriz inicial
print "@ $ new_array \ n"; # Impresión de matriz definitiva
salida;

Consejos y advertencias

  • "remove_duplicates" de subrutina se pueden incorporar fácilmente en cualquier programa de Perl.