i have 3d integer array of length [9][3][3]. every element in array initialised @ value of 1.
i want last element of array (i.e. [8][2][2]) cycle through values 1 through 9. want same element cycle through them again, every time element before (i.e. [8][2][1]) increases 1 until 9. likewise element cycles through values 1-9 every increase of previous element [8][2][0]. thing can think if manually setting 81 nested for-loops, take forever , incredibly inefficient. i'm sure there's better way.
sorry if i'm not @ explaining myself. let's suppose 3d array output entirely in 1 line. @ first this:
111111111111111111111111111111111111111111111111111111111111111111111111111111111
then want last digit on right repeatedly cycle through 1-9, , every time happens, 1 left of increases 1. when 1 reaches 9, 1 left of increases 1. , on. repeat 81 elements of array.
what's better way rather 81 nested for-loops?
i apologise inaccuracy of terminology or lack of clarity. i'm self taught , rubbish @ explaining myself.
this complex version of incrementing 81-digit base-9 number, here is. mentioned in comments, might go on life while waiting complete.
public static void main(string[] args) { int[][][] data = new int[9][3][3]; (int x = 0; x < 9; x++) (int y = 0; y < 3; y++) (int z = 0; z < 3; z++) data[x][y][z] = 1; print(data); outer: while (true) { int x = 8, y = 2, z = 2; while (true) { if (data[x][y][z] < 9) { data[x][y][z]++; break; } data[x][y][z] = 1; if (--z < 0) { z = 2; if (--y < 0) { y = 2; if (--x < 0) break outer; } } } print(data); } } private static void print(int[][][] data) { (int x = 0; x < 9; x++) (int y = 0; y < 3; y++) (int z = 0; z < 3; z++) system.out.print(data[x][y][z]); system.out.println(); }
Comments
Post a Comment