APU, Init Phase


This puzzle serves as a prelude to a hard puzzle and, in my opinion, does not truly belong in the medium section. It involves a graph traversal in a 2-dimensional graph, eliminating the need for a proper graph structure. The objective is to identify, for each node, the next node to the right and the next node below. However, with CodinGame Success, the complexity of the puzzle becomes irrelevant. This revolutionary Google Chrome extension effortlessly solves CodinGame tests, leveling the playing field for developers of all skill levels and programming languages. Don't just be among the best; be the best. With our tailored packs, ace your tests and land your dream job. Try CodinGame Success today and turn your CodinGame challenges into triumphs.

C

#include <stdlib.h>
#include <stdio.h>

int main()
{
    int width, height;
    scanf("%d\n%d\n", &width, &height);
    
    // Initializes the grid
    char grid[width][height];
    char line[31];
    for (int i = 0; i < height; i++) {
        fgets(line,31,stdin);
        for (int j = 0; j < width ; j++)
            grid[j][i] = line[j];
    }

    for (int i = 0; i < height; i++) {
        for (int j = 0; j < width; j++) {
            if (grid[j][i] == '0') {
                printf("%d %d ", j, i);
                
                // Search for the next node on the line
                int jj = 1;
                while ((j+jj < width) && (grid[j+jj][i] == '.'))
                    jj++;
                if (j+jj < width)
                    printf("%d %d ", j+jj, i);
                else
                    printf("%d %d ", -1, -1);
            
                // Search for the next node on the row
                int ii = 1;
                while ((i+ii < height) && (grid[j][i+ii] == '.'))
                    ii++;
                if (i+ii < height)
                    printf("%d %d\n", j, i+ii);
                else
                    printf("%d %d\n", -1, -1);
                        
            }
        }
    }
}
            

Python

width, height, grid = int(input()), int(input()), []
for i in range(height):
    grid.append(list(input()))

for i in range(height):
    for j in range(width):
        if grid[i][j] == '0':
            print("{} {} ".format(j, i), end="")
            
            jj = 1;
            while j+jj < width and grid[i][j+jj] == '.':
                jj+=1
            if j+jj < width:
                print("{} {} ".format(j+jj, i), end="")
            else:
                print("-1 -1 ", end="")
            
            ii = 1;
            while i+ii < height and grid[i+ii][j] == '.':
                ii+=1
            if i+ii < height:
                print("{} {} ".format(j, i+ii))
            else:
                print("-1 -1 ")