xxxxxxxxxx
struct StaticData
{ // single index :
// t_SizeOf will be [ 1, 2, 4, 8 ]
string[] array = ["87654321", "ZYXWVUTS",
"GNALD IH", "GnAlD iH", "gnalD iH", "gnald ih"];
char getData(size_t i)
{
auto len = array[0].length; // T.sizeof;
size_t y, x = i % len;// = i & (len - 1);
y = i / len;
return array[y][x];
}
void assertTest(size_t i) {
auto len = array[0].length;
size_t y = i / len + 1;
size_t x = i % len;
auto x_y = x + (y * len) - len;
assert(i == x_y);
}
size_t length()
{
return array.length * array[0].length;
}
}
enum t_SizeOf = 8;
import std.stdio;
void main()
{
// Classic (Nested Loops) Implement:
with(new StaticData)
{
for(size_t y = array.length; y!=0; --y)
{
for(size_t x = t_SizeOf; x!=0; --x)
{
array[y-1][x-1].write;
}
writeln;
}
// Single Index Implement:
size_t i = length - 1;
do {
getData(i).writeln(",", i);
assertTest(i);
} while(i--);
}
}