O módulo Quantum::Superpositions agrega dois operadores ao Perl: all e any. Eles recebem como parâmetro uma lista que é comprimida para um único valor que é a sobreposição de todos os valores da lista original. Então, magicamente, podemos realizar operações e comparações simultâneas sobre todos os valores de uma lista.
Fundamentalmente, o Countdown Sort é simples. Ele percorre uma lista de números positivos, subtraindo 1 de cada valor; cada vez que a subtração resultar em 0, o elemento original correspondente é adicionado à lista ordenada.
Com a sobreposição quântica, podemos simplificar substancialmente o código. Quanto a melhorar o desempenho, teremos que esperar um computador quântico.
use Quantum::Superpositions;
sub quantum_countdown_sort {
my @unsorted=@_;
my @sorted=();
my $d=0;
while($#sorted<$#unsorted) {
push(@sorted, $d) if any(@unsorted)-$d==0;
$d++;
}
return @sorted;
}
E um pequeno teste confirma que a rotina realmente funciona:
print join ',', quantum_countdown_sort 10,25,2,30,0,1,11;
0,1,2,10,11,25,30
O nome do método já garante a seriedade do pesquisador!
Nenhum comentário:
Postar um comentário