On Wednesday, 10 October 2018 at 16:00:42 UTC, Steven
Schveighoffer wrote:
On 10/10/18 9:22 AM, Chris Katko wrote:
int[][] data =
[
[1, 0, 1, 0, 0],
[1, 0, 1, 0, 0],
[1, 0, 1, 1, 1],
[1, 0, 0, 1, 0],
[5, 1, 1, 1, 0]
];
when drawn with data[i][j], prints the transpose of "data":
[1, 1, 1, 1, 5]
[0, 0, 0, 0, 1]
[1, 1, 1, 0, 1]
[0, 0, 1, 1, 1]
[0, 0, 1, 0, 0]
So, if I flip [i][j] and print a row of "j's", it'll be
correct. It's very confusing and counter-intuitive to have to
remember to swap i and j every time I use an array.
I guess when I load data from files, the i/j are already
swapped and stay consistent, but when using an array in source
code, they have to be flipped.
I'm not sure what code you are using, but it prints out just
fine for me:
https://run.dlang.io/is/hrA0tj
-Steve
Ah, here's a simple example:
int[][] data3 =
[
[1, 0, 1, 0, 0],
[1, 0, 1, 0, 0],
[1, 0, 1, 1, 1],
[1, 0, 0, 1, 0],
[5, 1, 1, 1, 0]
];
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
write(data4[i][j]," ");
}
writeln();
}
1 0 1 0 0
1 0 1 0 0
1 0 1 1 1
1 0 0 1 0
5 1 1 1 0
I have to draw j's first. I have to iterate through the
"y"/columns/j to get the the "x's" first.
I mean, I guess it makes sense if the outer-most array indexer
refers to the inner-most "element".
Wait, this IS the same as C, isn't it? So maybe this is just a
"new" problem for me since I rarely-if-ever use hardcoded
arrays...
Maybe my brain is just melting.