so I have this code below, that creates an array of tuples.
but instead of hardcoding 5 tuples (or hardcoding any amount of
tuples),
what I really want to do is automate the creation of
how-ever-many tuples I ask for:
i.e.
instead of calling this: createBoolMatrix(mArrBool);
I would call something like this: createBoolMatrix(mArrBool,5);
// create an array of 5 typles.
Some ideas about direction would be welcome ;-)
// ---
module test;
import std.stdio;
import std.range;
import std.traits;
import std.random;
@safe:
void main()
{
uint[][] mArrBool;
createBoolMatrix(mArrBool);
process(mArrBool);
}
void process(T)(const ref T t) if (isForwardRange!T &&
!isInfinite!T)
{
t.writeln; // sample output -> [[0, 1], [1, 0], [1, 1], [1,
1], [1, 1]]
}
void createBoolMatrix(ref uint[][] m)
{
auto rnd = Random(unpredictableSeed);
// btw. below does register with -profile=gc
m = [ [cast(uint)rnd.dice(0.6, 1.4), cast(uint)rnd.dice(0.4,
1.6)].randomShuffle(rnd),
[cast(uint)rnd.dice(0.6, 1.4), cast(uint)rnd.dice(0.4,
1.6)].randomShuffle(rnd),
[cast(uint)rnd.dice(0.6, 1.4), cast(uint)rnd.dice(0.4,
1.6)].randomShuffle(rnd),
[cast(uint)rnd.dice(0.6, 1.4), cast(uint)rnd.dice(0.4,
1.6)].randomShuffle(rnd),
[cast(uint)rnd.dice(0.6, 1.4), cast(uint)rnd.dice(0.4,
1.6)].randomShuffle(rnd)
];
}
// --