Starfield

Easy
0/40
Average time to solve is 15m
9 upvotes

Problem statement

Ninja loves playing with characters. So one day, he wants to arrange a few characters in the ‘N’ number of rows. The pattern consists of a left triangle a right triangle and a mirror image of the top part below.

You are given an integer ‘N’ denoting the given number of rows. Can you print the pattern Ninja wants to create?

Pattern for N = 3:
*   *
 * *
* * *
 * *
*   *
Detailed explanation ( Input/output format, Notes, Images )
Input Format:
The first line contains ‘T’, denoting the number of test cases.

Each test case contains a single integer ‘N’, denoting the number of rows.
Output Format:
For each test case, print the 'N' strings denoting the required pattern in the following ‘N’ lines.
Note:
You are not required to print the expected output; it has already been taken care of. Just implement the function.
Constraints:
1 <= T <= 10
1 <= N <= 10^3

Time Limit: 1 sec
Sample Input 1 :
2
3
4
Sample Output 1 :
      *   *
       * *
      * * *
       * *
      *   *

     *     *
      *   *
     * * * *
      * * *
     * * * *
      *   *
     *     *
Explanation for Sample Input 1 :
In the first test case, we are required to create a pattern consisting of 3 lines. First-line contains ‘A’. From the second line, we have to place a character one more than the previous value. So we place ‘B’.We put 2 ‘B’ and move to the following line because this line will contain only 2 elements. In the following line, we have to place 3 characters, so we place 3 ‘C’.

 In the second test case, we are required to create a pattern consisting of 4 lines. First-line contains ‘A’. From the second line, we have to place a character one more than the previous value. So we place ‘B’.We put 2 ‘B’ and move to the following line because this line will contain only 2 elements. In the following line, we have to place 3 characters, so we place 3 ‘C’.In the next line, there will be 4 ‘D’.   
Sample Input 2 :
2
7
2
Sample Output 2 :
  *           *
   *         *
  * *       * *
   * *     * *
  * * *   * * *
   * * * * * *
  * * * * * * *
   * * * * * *
  * * *   * * *
   * *     * *
  * *       * *
   *         *
  *           *

      * *
       *
      * *
Hint

Can you print one line at a time?

Approaches (1)
Brute force

The key here is to traverse all the lines sequentially, and for each line, we print the required character at the given index.


 

The steps are as follows:

  • We define a matrix ‘ans’ to store the final pattern.
  • We will iterate over all the rows, i.e., i = 0 to i = N - 1:
  • We will run a for loop over the columns i.e., from j = 0 to j = 2 * (N - 1):
  • If i is less than j and (i + j) is less than 2 * (N - 1) then continue.
  • If (i + j) is odd then continue.
  • Else store ‘ * ‘ in ‘ans’.
  • We will iterate over all the rows, i.e., i = N - 1 to i = - 1:
  • We will run a for loop over the columns i.e., from j = 0 to j = 2 * (N - 1):
  • If i is less than j and (i + j) is less than 2 * (N - 1) then continue.
  • If (i + j) is odd then continue.
  • Else store ‘ * ‘ in ‘ans’.
  • We will return ‘ans’ as the final answer.
Time Complexity

O(N^2), where N is the number of lines.


 

As we are iterating over 2* N - 1 lines and in each line we are printing max N characters, overall complexity is O(N^2).

Space Complexity

O(N^2), where N is the number of lines.

 

We are using a matrix, to store the pattern. Hence, the overall space complexity is O(N^2).

Code Solution
(100% EXP penalty)
Starfield
Full screen
Console