changing this to 1D array
-
Tuesday, April 10, 2012 7:58 AM
//Wall array
//Vertical (16x16)
int[][] a = new int[][] {new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};
//Horizontal (16x16)
int[][] b = new int[][]{ new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};int x = 0;
int y = 0;.
.
northWall[15][0] = a[15][0]; // x=0,y=0
eastWall[14][0] = b[14][0];
// pass to solver
// solver(...)
SearchToGoal(northWall1, eastWall1);
// solver return mouse command
//mouse move .. update x ,y
northWall[15 - y][0] = a[15 - y][0]; // x=0,y=1
eastWall[14 - y][0] = b[14 - y][0];
// pass to solver
northWall[15 - y][x] = a[15 - y][x]; // x=1,y=1
eastWall[14 - y][x] = b[14 - y][x];- Edited by Melsoon Tuesday, April 10, 2012 8:17 AM
All Replies
-
Tuesday, April 10, 2012 9:53 AM
Hi Melsoon,
Do you want to only change the arrays a and b to 1D array or change all arrays to 1D array?
If you only request the former, you can write array a and b to 1D in sequence. And acquire northWall or eastWall as below:
northWall[15][0] = a[15*16+0];
eastWall[15][0] = b[15*16+0];
Sucie Shu
Version Control | SCM | TWAIN
- Marked As Answer by Melsoon Thursday, April 12, 2012 5:54 AM
-
Tuesday, April 10, 2012 2:38 PM
To make 'a' a 1D array you can do this:
int[] array = a.SelectMany(item => item).ToArray();
- Marked As Answer by Melsoon Thursday, April 12, 2012 5:54 AM
-
Tuesday, April 10, 2012 7:11 PM
int m_rows = 16; int m_cols = 16; int[] table = new int[m_rows * m_cols](); private void BuildTable() { for(int i = 0; i < m_rows * m_cols; i++) { table[i] = 0; } } public int GetValueAt(int pX. int pY) { int cpt = 0; //lets see how many cels we passed on previous rows if(pY > 0) cpt = pY * m_cols; //we must remove 1 because we work with the index return table[cpt + pX -1]; }^^I guess you could do sumthing like this...
- Edited by Abyte Zero Tuesday, April 10, 2012 7:15 PM
- Proposed As Answer by Abyte Zero Tuesday, April 10, 2012 7:16 PM
-
Tuesday, April 10, 2012 7:40 PM@Abyte Zero, it's considered bad form to propose your own post as the answer, in general. The fact that you posted it obviously means you think it's the answer. The mechanism is there so that other people can 'agree' with you and not spam the thread with 'do what he did' posts.
-
Monday, April 16, 2012 2:48 AM
Hi guys I'm sorry but can you all give me a specific answer for at least 'a'?
How to change this to 1D? At least give me a specific answer for this and i can do 'b' myself.
I'm not good with programming so please help out. I appreciated it very much!
int[][] a = new int[][] {new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
new int[] { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}}; -
Monday, April 16, 2012 11:10 AM
I wrote a function for you and tried to comment it as good as I could:
public int[] Int2DTo1D(int[][] Int2DArray) { if(Int2DArray != null) { // Variable for containing the total amount of integer values found within the array. int TotalArrayLength = 0; for (int i = 0; i < Int2DArray.Length; i++) { // Loop through all sub arrays to get the total amount of integer values. if (Int2DArray[i] != null) { // Prevent the runtime error when calling the length of a null array. // Add the array length to the array length counter. TotalArrayLength += Int2DArray[i].Length; } } if (TotalArrayLength == 0) { // There is no values within the array. return null; } // Create a 1d array buffer to put all the arrays into. int[] Int1DArray = new int[TotalArrayLength]; // Value for storing our current array position. int Position = 0; for (int i = 0; i < Int2DArray.Length; i++) { // Loop through all sub arrays again to add them to the 1d array buffer. if (Int2DArray[i] != null) { // Prevent the runtime error when calling the length of a null array. for (int x = 0; x < Int2DArray[i].Length; x++) { // Inserting the value into the 1d array buffer. Int1DArray[Position] = Int2DArray[i][x]; // Updating the position to insert the next int value. Position++; } } } // Now we are done and ready to return the 1d array. return Int1DArray; } else { // Array is empty. return null; } }
Thanks
Karl Oskar
- Edited by Karl Oskar Andersen Monday, April 16, 2012 11:22 AM Minor bug fix
-
Monday, April 16, 2012 1:52 PM
Hi guys I'm sorry but can you all give me a specific answer for at least 'a'?
How to change this to 1D? At least give me a specific answer for this and i can do 'b' myself.
Do you want to change it programmatically at runtime, or at compile time so that the two dimensional array will no longer exist in the program at all?
I gave you a single line of code that does the former, and Abyte Zero gave you a segment of code that does the latter.

