Tengo una matriz de números hexadecimales, y necesito revisar otros números y comprobar si aparecen en esa matriz. En este momento estoy usando un loop foreach
que recorre toda la matriz cada vez. ¿Hay alguna manera de hacerlo más rápido al ordenar la matriz al principio y luego implementar la búsqueda binaria en ella?búsqueda binaria en una matriz en Perl
El código en la actualidad
sub is_bad_str{
my ($str, @keys) = @_;
my $flag = 0;
my ($key, $hex_num);
if ($str =~ m/14'h([0-9a-f][0-9a-f][0-9a-f][0-9a-f])/;){ #'# fixes bad highlighting
$hex_num = $1;
}
if (defined $hex_num){
foreach $key (@keys){
if ($hex_num =~ /\Q$key\E/i){
$flag = 1;
last;
}
}
}
if (($flag == 0) && (defined $hex_num)){
return 1;#Bad str
}else{
return 0;#Good str
}
}
ha encontrado un error muy sutil en ese país. La variable de coincidencia '$ 1' es * no * restablecida, por lo que una vez definida, permanecerá definida, independientemente de si hay una coincidencia de expresiones regulares. Debería verificar si 'x = ~ y' está definido, para determinar si hubo una coincidencia – Dancrumb
¿Es esta tarea? Si es así, eso es una cosa ... si no, debería usar un módulo CPAN para hacer esto. – Dancrumb
No es tarea. ¿Qué modelo exactamente? Revisé la lista de modelos y no parece que haya un modelo de búsqueda binaria allí. – SIMEL