squareUp  challenge

gudii9
gudii9 used Ask the Experts™
on
Hi,

I am working on below challenge
http://codingbat.com/prob/p155405

Array-3 > squareUp
prev  |  next  |  chance
Given n>=0, create an array length n*n with the following pattern, shown here for n=3 : {0, 0, 1,    0, 2, 1,    3, 2, 1} (spaces added to show the 3 groups).

squareUp(3) → [0, 0, 1, 0, 2, 1, 3, 2, 1]
squareUp(2) → [0, 1, 2, 1]
squareUp(4) → [0, 0, 0, 1, 0, 0, 2, 1, 0, 3, 2, 1, 4, 3, 2, 1]
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®

Author

Commented:
Given n>=0, create an array length n*n with the following pattern, shown here for n=3 : {0, 0, 1,    0, 2, 1,    3, 2, 1} (spaces added to show the 3 groups).

squareUp(3) → [0, 0, 1, 0, 2, 1, 3, 2, 1]
squareUp(2) → [0, 1, 2, 1]
squareUp(4) → [0, 0, 0, 1, 0, 0, 2, 1, 0, 3, 2, 1, 4, 3, 2, 1]

i have not understood the challenge description.

How below are expected outputs?

squareUp(3) → [0, 0, 1, 0, 2, 1, 3, 2, 1]
squareUp(2) → [0, 1, 2, 1]
squareUp(4) → [0, 0, 0, 1, 0, 0, 2, 1, 0, 3, 2, 1, 4, 3, 2, 1]
Topic Advisor
Most Valuable Expert 2016
Commented:
You shift the numbers into the array from the right in groups. Example for 5:

0,0,0,0,1
0,0,0,2,1
0,0,3,2,1
0,4,3,2,1
5,4,3,2,1
As a warm-up, how would you make an array that contained the integers from  0  to  n² -1 ??
Success in ‘20 With a Profitable Pricing Strategy

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

Author

Commented:
You shift the numbers into the array from the right in groups. Example for 5:

0,0,0,0,1
0,0,0,2,1
0,0,3,2,1
0,4,3,2,1
5,4,3,2,1
this is clear now. let me think on it now
Gerwin Jansen, EE MVETopic Advisor
Most Valuable Expert 2016

Commented:
OK ;)

Author

Commented:
looks like i may need two loops for this also

Author

Commented:
You shift the numbers into the array from the right in groups. Example for 5:
how to represent this push in code?
You shift the numbers into the array from the right in groups. Example for 5:
0,0,0,0,1
0,0,0,2,1
0,0,3,2,1
0,4,3,2,1
5,4,3,2,1

You don't have to build the array by shifting.

What numbers are in the first row?
And the second?
Do you see the pattern?
And the pattern in the number of 0's?

Author

Commented:
not yet
mccarlIT Business Systems Analyst / Software Developer
Top Expert 2015
Commented:
not yet

Wow, how about now with some extra spaces in certain spots...

0,0,0,0,     1
0,0,0,     2,1
0,0,     3,2,1
0,     4,3,2,1
     5,4,3,2,1
"Wow" indeed.
Do you realize that printing the array in an n x n grid rather than an n² x 1 string is an enormous hint?

Author

Commented:
Do you realize that printing the array in an n x n grid rather than an n² x 1 is an enormous hint?
not able to realize. I just see some additional spaces.


0,0,0,0,1
0,0,0,2,1
0,0,3,2,1
0,4,3,2,1
5,4,3,2,1

compared to above below?

0,0,0,0,     1
0,0,0,     2,1
0,0,     3,2,1
0,     4,3,2,1
     5,4,3,2,1
There are two ways to build an array with n² elements:

  for i= 0 to n² by 1

  for i= 0 to n by 1
     for j= 0 to n by 1

The second method might be useful if you can see the pattern in the grid.

Author

Commented:
 for i= 0 to n by 1
     for j= 0 to n by 1

The second method might be useful if you can see the pattern in the grid.

which grid? what is grid?
you mean below?
0,0,0,0,     1
0,0,0,     2,1
0,0,     3,2,1
0,     4,3,2,1
     5,4,3,2,1

to me above looks lik e2 D array not 1 Dimensional?
Yes, you have to build a 1-D array.
Gerwin Jansen gave you an enormous hint by drawing it as an nxn matrix so you can see the pattern.
Gerwin Jansen, EE MVETopic Advisor
Most Valuable Expert 2016

Commented:
The grid is the 2D array we've shown you to help understand the question. Your function should return a single string of numbers.

squareUp(2) → [0, 1, 2, 1]
0,1
2,1

squareUp(1) → [0, 1]
0
1
I am sure this is not correct.  There can only be n*n elements.
squareUp(1) → [0, 1]

0
1

The answer is probably [1], but it may depend on your implementation.

And squareUp(0) → [ ]  because it must have 0*0 elements.
Gerwin Jansen, EE MVETopic Advisor
Most Valuable Expert 2016

Commented:
@d-glitch - You are correct, 1*1=1 :D

squareUp(1) would have to result in [1] - independent of the implementation.

Each group is n wide starting with a 1 on the right side, this would result in [1]

Author

Commented:
public int[] squareUp(int n) {
  
	    int[] finalRes = new int[n * n];
	    int indx = 0;
	 
	    for (int i = 1; i <= n; i++) {
	        for (int k = 1; k <= n - i; k++)
	        	finalRes[indx++] = 0;
	        for (int j = i; j > 0; j--) 
	        	finalRes[indx++] = j;
	    }
	    return finalRes;
	
}

Open in new window


above passes all tests.
Expected      Run            
squareUp(3) → [0, 0, 1, 0, 2, 1, 3, 2, 1]      [0, 0, 1, 0, 2, 1, 3, 2, 1]      OK      
squareUp(2) → [0, 1, 2, 1]      [0, 1, 2, 1]      OK      
squareUp(4) → [0, 0, 0, 1, 0, 0, 2, 1, 0, 3, 2, 1, 4, 3, 2, 1]      [0, 0, 0, 1, 0, 0, 2, 1, 0, 3, 2, 1, 4, 3, 2, 1]      OK      
squareUp(1) → [1]      [1]      OK      
squareUp(0) → []      []      OK      
squareUp(6) → [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 3, 2, 1, 0, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 6, 5, 4, 3, 2, 1]      [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 1, 0, 0, 0, 3, 2, 1, 0, 0, 4, 3, 2, 1, 0, 5, 4, 3, 2, 1, 6, 5, 4, 3, 2, 1]      OK      

All Correct

any improvements/refinements/alternate approaches?
Gerwin Jansen, EE MVETopic Advisor
Most Valuable Expert 2016

Commented:
It is passing all tests, code looks OK to me.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial