Introduction

Hello, budding programmer! Are you ready to embark on a journey into the land of matrices? Today, we're in for a thrilling ride into the world of unique matrix traversal. We'll be navigating through the realm of 2D matrices following a distinctive order that oozes intrigue. Stay seated and let's dive right in!

Task Statement

Suppose we have a 2D matrix where each cell represents a distinct symbol or integer. Our task is to decode this matrix by reading the cells in a particular order.

The decoding begins from the top-left cell of the matrix. From the first cell, we move one cell down. Then, we start moving diagonally in the top-right direction until we hit the top boundary. Hitting the top boundary, we move one cell to the right and start moving diagonally in the bottom-left direction. Hitting the left boundary, we move one cell down (unless it is the last left boundary, in which case we move one cell to the right) and start moving diagonally in the top-right direction. Hitting the right boundary, we move one cell to the right (unless it is the last right boundary, in which case we move one cell down) and start moving diagonally in the bottom-left direction. In other words, we keep zig-zagging diagonally across the matrix until every cell in the matrix is visited.

Upon completing this zigzag traversal, we will have a list of traversed cell values. Next, we process this list to uncover the indices of the perfect square numbers. The function diagonal_traverse_and_squares(matrix) should implement this traversal and return a list containing the positions of perfect square numbers in the traversed sequence.

Take a 3x4 matrix, for instance:

Upon completing the diagonal traversal, we'll get the list: [1, 5, 2, 3, 6, 9, 10, 7, 4, 8, 11, 12]. From this list, we see that 1, 9, and 4 are perfect squares, and are located at the 1st, 6th, and 9th positions in the list. Thus, our function returns: .

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal