Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,37 @@
|
|||
templates radixsort&{base:}
|
||||
sink bucketize
|
||||
def value: $;
|
||||
$::raw ~/ $@radixsort.digit::raw -> #
|
||||
when <=0 ?($value::raw <0..>)> do
|
||||
..|@radixsort.positives: $value;
|
||||
when <=0> do
|
||||
..|@radixsort.negatives(last): $value;
|
||||
otherwise
|
||||
def bucket: $ mod $base -> \(<?($value<0..>)> $ + 1 ! <=0> $base ! <> $ !\);
|
||||
..|@radixsort.buckets($bucket): $value;
|
||||
@radixsort.done: 0;
|
||||
end bucketize
|
||||
// Negatives get completed in wrong length-order, we need to collect by length and correct at the end
|
||||
@: { done: 1, digit: 1, positives: [], negatives: [[]], buckets: [1..$base -> []]};
|
||||
$... -> !bucketize
|
||||
$@.done -> #
|
||||
when <=done´1> do
|
||||
[$@.negatives(last..1:-1)... ..., $@.positives...] !
|
||||
otherwise
|
||||
def previous: $@.buckets;
|
||||
..|@: {done: 1, digit: $@.digit::raw * $base, buckets:[1..$base -> []]};
|
||||
..|@.negatives: [];
|
||||
$previous... ... -> !bucketize
|
||||
$@.done -> #
|
||||
end radixsort
|
||||
|
||||
[170, 45, 75, 91, 90, 92, 802, 24, 2, 66] -> radixsort&{base:10} -> !OUT::write
|
||||
'
|
||||
' -> !OUT::write
|
||||
[-170, -45, -91, -90, -92, -802, -24, -2, -76] -> radixsort&{base:10} -> !OUT::write
|
||||
'
|
||||
' -> !OUT::write
|
||||
[170, 45, 75, -91, -90, -92, -802, 24, 2, 66] -> radixsort&{base:10} -> !OUT::write
|
||||
'
|
||||
' -> !OUT::write
|
||||
[170, 45, 75, -91, -90, -92, -802, 24, 2, 66] -> radixsort&{base:3} -> !OUT::write
|
||||
Loading…
Add table
Add a link
Reference in a new issue