Idiomatic way to generate all possible values a static array of ubyte can have

jkpl via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Apr 2 02:45:40 PDT 2016


On Saturday, 2 April 2016 at 09:11:34 UTC, jkpl wrote:
> On Saturday, 2 April 2016 at 08:48:10 UTC, rikki cattermole 
> wrote:
>> On 02/04/2016 9:36 PM, jkpl wrote:
>>> On Saturday, 2 April 2016 at 08:27:07 UTC, rikki cattermole 
>>> wrote:
>> Okay that is a problem then.
>
> Yes clearly!
>
> Maybe this, a bit better:
>
>
>     foreach (b0; randomCover(iota(0,256)))
>     foreach (b1; randomCover(iota(0,256)))
>     ...
>     foreach (b255; randomCover(iota(0,256)))
>     {
>         ...
>     }

Still not the right approach,


import std.stdio;
import std.random;
import std.range;

void testRunner(bool function(ubyte[128]) test)
{
     uint[32] arr;

     foreach (v0;  randomCover(iota(0U,uint.max)))
     foreach (v1;  randomCover(iota(0U,uint.max)))
     foreach (v2;  randomCover(iota(0U,uint.max)))
     foreach (v3;  randomCover(iota(0U,uint.max)))
     foreach (v4;  randomCover(iota(0U,uint.max)))
     foreach (v5;  randomCover(iota(0U,uint.max)))
     foreach (v6;  randomCover(iota(0U,uint.max)))
     foreach (v7;  randomCover(iota(0U,uint.max)))
     foreach (v8;  randomCover(iota(0U,uint.max)))
     foreach (v9;  randomCover(iota(0U,uint.max)))
     foreach (v10; randomCover(iota(0U,uint.max)))
     foreach (v11; randomCover(iota(0U,uint.max)))
     foreach (v12; randomCover(iota(0U,uint.max)))
     foreach (v13; randomCover(iota(0U,uint.max)))
     foreach (v14; randomCover(iota(0U,uint.max)))
     foreach (v15; randomCover(iota(0U,uint.max)))
     foreach (v16; randomCover(iota(0U,uint.max)))
     foreach (v17; randomCover(iota(0U,uint.max)))
     foreach (v18; randomCover(iota(0U,uint.max)))
     foreach (v19; randomCover(iota(0U,uint.max)))
     foreach (v20; randomCover(iota(0U,uint.max)))
     foreach (v21; randomCover(iota(0U,uint.max)))
     foreach (v22; randomCover(iota(0U,uint.max)))
     foreach (v23; randomCover(iota(0U,uint.max)))
     foreach (v24; randomCover(iota(0U,uint.max)))
     foreach (v25; randomCover(iota(0U,uint.max)))
     foreach (v26; randomCover(iota(0U,uint.max)))
     foreach (v27; randomCover(iota(0U,uint.max)))
     foreach (v28; randomCover(iota(0U,uint.max)))
     foreach (v29; randomCover(iota(0U,uint.max)))
     foreach (v30; randomCover(iota(0U,uint.max)))
     foreach (v31; randomCover(iota(0U,uint.max)))
     {
         arr = [v0,v1,v2,v3,v4,v5,v6,v7,v8,v9,
                v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,
                v20,v21,v22,v23,v24,v25,v26,v27,v28,v29,
                v30, v31
         ];

         writeln(arr);

         //if (test(cast(ubyte[128]) arr))
             return;
     }
}

bool test(ubyte[128] arr)
{
     if (arr[0] == 0U)
         return true;
     else
         return false;
}

void main()
{
     testRunner(&test);
}


More information about the Digitalmars-d-learn mailing list