Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/perl
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
sub radix {
|
||||
my @tab = ([@_]);
|
||||
|
||||
my $max_length = 0;
|
||||
length > $max_length and $max_length = length for @_;
|
||||
$_ = sprintf "%0${max_length}d", $_ for @{ $tab[0] }; # Add zeros.
|
||||
|
||||
for my $pos (reverse -$max_length .. -1) {
|
||||
my @newtab;
|
||||
for my $bucket (@tab) {
|
||||
for my $n (@$bucket) {
|
||||
my $char = substr $n, $pos, 1;
|
||||
$char = -1 if '-' eq $char;
|
||||
$char++;
|
||||
push @{ $newtab[$char] }, $n;
|
||||
}
|
||||
}
|
||||
@tab = @newtab;
|
||||
}
|
||||
|
||||
my @return;
|
||||
my $negative = shift @tab; # Negative bucket must be reversed.
|
||||
push @return, reverse @$negative;
|
||||
for my $bucket (@tab) {
|
||||
push @return, @{ $bucket // [] };
|
||||
}
|
||||
$_ = 0 + $_ for @return; # Remove zeros.
|
||||
return @return;
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
use Test::More tests => 1000;
|
||||
|
||||
for (1 .. 1000) {
|
||||
my @l = map int rand(2000) - 1000, 0 .. 20;
|
||||
is_deeply([radix(@l)], [sort { $a <=> $b } @l]);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue