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)
        ];
}
// --

Reply via email to