Skip to main content

Spiral Traversal of Matrix

#include <iostream>
using namespace std;

int mat[4][3] = {{1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}};

void print_spiral(int mat[4][3], int m, int n, int k) {
  if (m <= 0 || n <= 0)
    return;
  if (m == 1) {
    for (int j = 0; j < n; j++)
      cout << mat[k][k+j] << " ";
    return;
  }
  if (n == 1) {
    for (int i = 0; i < m; i++)
      cout << mat[k+i][k] << " ";
    return;
  }
  // print from top left
  for (int j = 0; j < n - 1; j++)
    cout << mat[k][k+j] << " ";
  // print from top right
  for (int i = 0; i < m - 1; i++)
    cout << mat[k+i][k+n-1] << " ";
  // print from bottom right
  for (int j = 0; j < n - 1; j++)
    cout << mat[k+m-1][k+n-1-j] << " ";
  // print from bottom left
  for (int i = 0; i < m - 1; i++)
    cout << mat[k+m-1-i][k] << " ";

  print_spiral(mat, m-2, n-2, k+1);
}

int main()
{
    int m = 4;
    int n = 3;

    print_spiral(mat, m, n, 0);
    return 0;
}

Comments

Popular posts from this blog

JUnit – Run unit test in an Sequence / Order

In JUnit, we can use @FixMethodOrder(MethodSorters.xxx) to run the test methods in a sequence or order.

import org.junit.FixMethodOrder;import org.junit.Test;import org.junit.runners.MethodSorters;importstatic org.hamcrest.CoreMatchers.is;importstatic org.junit.Assert.assertThat;//Sorts by method name@FixMethodOrder(MethodSorters.NAME_ASCENDING)publicclassExecutionOrderTest{@TestpublicvoidtestB(){assertThat(1+1,is(2));}@Testpublicvoidtest1(){assertThat(1+1,is(2));}@TestpublicvoidtestA

Exploring Node.js Internals

I found a great article explaining Node JS internals, must read :

https://www.smashingmagazine.com/2020/04/nodejs-internals/


Some other articles :

Introduction to Node.jsBeing an official website, Node.dev explains what Node.js is, as well as its package managers, and lists web frameworks built on top of it.“JavaScript & Node.js”, The Node Beginner BookThis book by Manuel Kiessling does a fantastic job of explaining Node.js, after warning that JavaScript in the browser is not the same as the one in Node.js, even though both are written in the same language.Beginning Node.jsThis beginner book goes beyond an explanation of the runtime. It teaches about packages and streams and creating a web server with the Express framework.LibUVThis is the official documentation of the supporting C++ code of the Node.js runtime.V8This is the official documentation of the JavaScript engine that makes it possible to write Node.js with JavaScript. x