Wipro NLTH Pattern Making Question: 1

Ques: Print a given matrix in spiral form.

Given a 2D array, print it in spiral form. See the following examples.

Please comment down the code in other languages as well below –

Input:
        1    2   3   4
        5    6   7   8
        9   10  11  12
        13  14  15  16
Output: 
1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 


Input:
        1   2   3   4  5   6
        7   8   9  10  11  12
        13  14  15 16  17  18
Output: 
1 2 3 4 5 6 12 18 17 16 15 14 13 7 8 9 10 11
#include <stdio.h>
#define R 3
#define C 6
void spiralPrint (int m, int n, int a[R][C])
{
    int i, k = 0, l = 0;
    /* k - starting row index 
    m - ending row index 
    l - starting column index 
    n - ending column index 
    i - iterator 
    */
    while (k < m && l < n)
    {
        /* Print the first row from the remaining rows */
        for (i = l; i < n; ++i)
        {
            printf ("%d ", a[k][i]);
        }
        k++;
        /* Print the last column from the remaining columns */
        for (i = k; i < m; ++i)
        {
            printf ("%d ", a[i][n - 1]);
        }
        n--;
        /* Print the last row from the remaining rows */
        if (k < m) 
        { 
            for (i = n - 1; i >= l; --i)
            {
                printf ("%d ", a[m - 1][i]);
            }
            m--;
        }
        /* Print the first column from the remaining columns */
        if (l < n) 
        { 
            for (i = m - 1; i >= k; --i)
            {
                printf ("%d ", a[i][l]);
            }
            l++;
        }
    }
}
/* Driver program to test above functions */
int main ()
{
    int a[R][C] = { {1, 2, 3, 4, 5, 6},
    {7, 8, 9, 10, 11, 12},
    {13, 14, 15, 16, 17, 18}
    };
    spiralPrint (R, C, a);
    return 0;
}
#include <bits/stdc++.h> 
using namespace std;
#define R 3
#define C 6

void spiralPrint(int m, int n, int a[R][C])
{
int i, k = 0, l = 0;

/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/

while (k < m && l < n) {
/* Print the first row from
the remaining rows */
for (i = l; i < n; ++i) {
cout << a[k][i] << " ";
}
k++;

/* Print the last column
from the remaining columns */
for (i = k; i < m; ++i) {
cout << a[i][n - 1] << " ";
}
n--;

/* Print the last row from
the remaining rows */
if (k < m) {
for (i = n - 1; i >= l; --i) {
cout << a[m - 1][i] << " ";
}
m--;
}

/* Print the first column from
the remaining columns */
if (l < n) {
for (i = m - 1; i >= k; --i) {
cout << a[i][l] << " ";
}
l++;
}
}
}

/* Driver program to test above functions */
int main()
{
int a[R][C] = { { 1, 2, 3, 4, 5, 6 },
{ 7, 8, 9, 10, 11, 12 },
{ 13, 14, 15, 16, 17, 18 } };

spiralPrint(R, C, a);
return 0;
}
// Java program to print a given matrix in spiral form 
import java.io.*;
class Main
{
// Function print matrix in spiral form
static void spiralPrint (int m, int n, int a[][])
{
int i, k = 0, l = 0;
/* k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator
*/
while (k < m && l < n)
{
// Print the first row from the remaining rows
for (i = l; i < n; ++i)
{
System.out.print (a[k][i] + " ");
}
k++;
// Print the last column from the remaining columns
for (i = k; i < m; ++i)
{
System.out.print (a[i][n - 1] + " ");
}
n--;
// Print the last row from the remaining rows */
if(k < m)
{
for (i = n - 1; i >= l; --i)
{
System.out.print (a[m - 1][i] + " ");
}
m--;
}
// Print the first column from the remaining columns */
if (l < n)
{
for (i = m - 1; i >= k; --i)
{
System.out.print (a[i][l] + " ");
}
l++;
}
}
}
// driver program
public static void main (String[]args)
{
int R = 3;
int C = 6;
int a[][] = { {1, 2, 3, 4, 5, 6},
{7, 8, 9, 10, 11, 12},
{13, 14, 15, 16, 17, 18}
};
spiralPrint (R, C, a);
}
}
# Python3 program to print 
# given matrix in spiral form
def spiralPrint(m, n, a) :
k = 0; l = 0

''' k - starting row index
m - ending row index
l - starting column index
n - ending column index
i - iterator '''


while (k < m and l < n) :

# Print the first row from
# the remaining rows
for i in range(l, n) :
print(a[k][i], end = " ")

k += 1

# Print the last column from
# the remaining columns
for i in range(k, m) :
print(a[i][n - 1], end = " ")

n -= 1

# Print the last row from
# the remaining rows
if ( k < m) :

for i in range(n - 1, (l - 1), -1) :
print(a[m - 1][i], end = " ")

m -= 1

# Print the first column from
# the remaining columns
if (l < n) :
for i in range(m - 1, k - 1, -1) :
print(a[i][l], end = " ")

l += 1

# Driver Code
a = [ [1, 2, 3, 4, 5, 6],
[7, 8, 9, 10, 11, 12],
[13, 14, 15, 16, 17, 18] ]

R = 3; C = 6
spiralPrint(R, C, a)
Disclaimer-: The questions provided on this page are only model practice questions there is no surety that these questions have been previously asked in any company placement papers, these questions here only have the sole purpose to make you practice coding questions

8 comments on “Wipro NLTH Pattern Making Question: 1”


  • bommerla

    n=int(input(“enter number of row and cols you want to print:”))
    for i in range(n):
    row=[]
    for j in range(n):
    el=int(input())
    row.append(el)
    matrix.append(row)
    print(matrix)

    row_start=0
    row_end=n-1
    col_start=0
    col_end=n-1
    res=[]
    while row_start<=row_end and col_start<=col_end:
    for i in range(col_start,col_end+1):
    res.append(matrix[row_start][i])
    row_start+=1
    for i in range(row_start,row_end+1):
    res.append(matrix[i][col_end])
    col_end-=1
    if row_start<=row_end:
    for i in range(col_end,col_start-1,-1):
    res.append(matrix[row_end][i])
    row_end-=1
    if col_start<=col_end:
    for i in range(row_end,row_start-1,-1):
    res.append(matrix[i][col_start])
    col_start+=1

    print(res)


  • Sasi

    r=int(input(“entre no of rows”))
    c=int(input(“entre no of columns”))
    l=[list(map(int,input().split())) for _ in range(r)]
    ans=[*l[0]]
    for i in range(1,r):
    j=c-1
    ans.append(l[i][j])
    for i in l[-1][c-2::-1]:
    ans.append(i)
    for i in range(-1,-r,-1):
    if l[i][0] not in ans:
    ans.append(l[i][0])
    rev=False
    for i in range(1,r-1):
    if rev==False:
    for j in l[i]:
    if j not in ans:
    ans.append(j)
    rev=True
    else:
    for j in sorted(l[i],reverse=True):
    if j not in ans:
    ans.append(j)
    rev=False
    print(*ans)


  • Kunal

    import java.util.*;
    class Main
    {
    public static void main(String args[])
    {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int m=sc.nextInt();
    int ar[][]=new int[n][m];
    for(int i=0;i<n;i++)
    {
    for(int j=0;j<m;j++)
    {
    ar[i][j]=sc.nextInt();
    }
    }
    for(int i=0;i<n;i++)
    {
    for(int j=0;j<m;j++)
    {
    if(i%2==0)
    System.out.print(ar[i][j]);
    else
    System.out.print(ar[i][m-j-1]);
    }
    }

    }
    }


  • Aman

    JAVA Code —>
    import java.util.*;
    import java.lang.Math;
    public class Main
    {
    public static void printSpiral(int[][] arr){
    int i = 0, sr = 0, sc = 0, er = arr[0].length, ec = arr.length, len = arr.length;
    //sr:startrow, sc:startcolumn, ec:endcolumn, er:endrow
    while( sr < er && sc < ec ){
    for( i = sc ; i < ec ; i++ ){
    System.out.print(arr[sr][i] + " ");
    }
    sr++;
    for( i = sr ; i < er ; i++ ){
    System.out.print(arr[i][ec-1] + " ");
    }
    ec–;
    if( sr = sc ; i– ){
    System.out.print(arr[er-1][i] + ” “);
    }
    er–;
    }
    if( sc = sr ; i–){
    System.out.print(arr[i][sc] + ” “);
    }
    sc++;
    }
    }
    }

    public static void main(String args[]){
    int[][] mat = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    printSpiral(mat);
    }
    }


  • osama

    Program in java//
    import java.util.Scanner;
    public class Main {
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    int a[][]=new int[n][n];
    for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
    a[i][j]=sc.nextInt();
    }
    }
    int i=0,j=0;
    int down = n;
    int up = 0;
    int left= 0;
    int right = n;

    int it=0;
    while(it<n-2){

    while(j<right){
    System.out.print(a[i][j] + " ");
    j++;
    }
    right–;
    j–;
    i++;
    while(i=left){
    System.out.print(a[i][j] + ” “);
    j–;
    }
    left++;
    i–;
    j++;

    while(i>=up){
    System.out.print(a[i][j] + ” “);
    i–;
    }
    i++;
    j++;
    }
    }
    }


  • Prashant

    Program in C :
    #include
    #define R 3
    #define C 6
    int main() {
    int a[R][C] = { { 1, 2, 3, 4, 5, 6 },
    { 7, 8, 9, 10, 11, 12 },
    { 13, 14, 15, 16, 17, 18 } };

    for(int i=0; i<R;i++){
    if (i%2==0)
    {for(int j=0;j=0;m–)
    printf(“%d “,a[i][m]);}
    }
    return 0;
    }


  • Suravi

    a = [[1,2,3,4], [5,6,7,8], [9,10,11,12], [13,14,15,16]]
    b = []
    for i in range(len(a)):
    for j in range(len(a[0])):
    b.append(a[i][j])
    print(b)