Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,29 @@
|
|||
import std.stdio, std.array, std.range, std.algorithm;
|
||||
|
||||
void patienceSort(T)(T[] items) /*pure nothrow @safe*/
|
||||
if (__traits(compiles, T.init < T.init)) {
|
||||
//SortedRange!(int[][], q{ a.back < b.back }) piles;
|
||||
T[][] piles;
|
||||
|
||||
foreach (x; items) {
|
||||
auto p = [x];
|
||||
immutable i = piles.length -
|
||||
piles
|
||||
.assumeSorted!q{ a.back < b.back }
|
||||
.upperBound(p)
|
||||
.length;
|
||||
if (i != piles.length)
|
||||
piles[i] ~= x;
|
||||
else
|
||||
piles ~= p;
|
||||
}
|
||||
|
||||
piles.nWayUnion!q{ a > b }.copy(items.retro);
|
||||
}
|
||||
|
||||
void main() {
|
||||
auto data = [4, 65, 2, -31, 0, 99, 83, 782, 1];
|
||||
data.patienceSort;
|
||||
assert(data.isSorted);
|
||||
data.writeln;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue