67 lines · 1.7 KB · D
RawDownload
// Written in the D programming language. /// Helper functions for std.algorithm package.module std.algorithm.internal;  // Same as std.string.format, but "self-importing".// Helps reduce code and imports, particularly in static asserts.// Also helps with missing imports errors.package template algoFormat(){    import std.format : format;    alias algoFormat = format;} // Internal random array generatorsversion (StdUnittest){    package enum size_t maxArraySize = 50;    package enum size_t minArraySize = maxArraySize - 1;     package string[] rndstuff(T : string)()    {        import std.random : Xorshift, uniform;         static rnd = Xorshift(234_567_891);        string[] result =            new string[uniform(minArraySize, maxArraySize, rnd)];        string alpha = "abcdefghijABCDEFGHIJ";        foreach (ref s; result)        {            foreach (i; 0 .. uniform(0u, 20u, rnd))            {                auto j = uniform(0, alpha.length - 1, rnd);                s ~= alpha[j];            }        }        return result;    }     package int[] rndstuff(T : int)()    {        import std.random : Xorshift, uniform;         static rnd = Xorshift(345_678_912);        int[] result = new int[uniform(minArraySize, maxArraySize, rnd)];        foreach (ref i; result)        {            i = uniform(-100, 100, rnd);        }        return result;    }     package double[] rndstuff(T : double)()    {        double[] result;        foreach (i; rndstuff!(int)())        {            result ~= i / 50.0;        }        return result;    }} // Used instead of `&object.member` when `member` may be// either a field or a @property function.package(std) T* addressOf(T)(ref T val) { return &val; }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t