Dado un número n como el tamaño de la array, la tarea es imprimir un patrón en espiral de tamaño n.
Ejemplos:
Input : n = 4 Output: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
Vista previa del patrón en espiral:
Java
public class GFG { public static void printSpiral(int size) { // Create row and col // to traverse rows and columns int row = 0, col = 0; int boundary = size - 1; int sizeLeft = size - 1; int flag = 1; // Variable to determine the movement // r = right, l = left, d = down, u = upper char move = 'r'; // Array for matrix int matrix[][] = new int[size][size]; for (int i = 1; i < size * size + 1; i++) { // Assign the value matrix[row][col] = i; // switch-case to determine the next index switch (move) { // If right, go right case 'r': col += 1; break; // if left, go left case 'l': col -= 1; break; // if up, go up case 'u': row -= 1; break; // if down, go down case 'd': row += 1; break; } // Check if the matrix // has reached array boundary if (i == boundary) { // Add the left size for the next boundary boundary += sizeLeft; // If 2 rotations has been made, // decrease the size left by 1 if (flag != 2) { flag = 2; } else { flag = 1; sizeLeft -= 1; } // switch-case to rotate the movement switch (move) { // if right, rotate to down case 'r': move = 'd'; break; // if down, rotate to left case 'd': move = 'l'; break; // if left, rotate to up case 'l': move = 'u'; break; // if up, rotate to right case 'u': move = 'r'; break; } } } // Print the matrix for (row = 0; row < size; row++) { for (col = 0; col < size; col++) { int n = matrix[row][col]; System.out.print((n < 10) ? (n + " ") : (n + " ")); } System.out.println(); } } // Driver Code public static void main(String[] args) { // Get the size of size int size = 5; // Print the Spiral Pattern printSpiral(size); } }
Producción
1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
Publicación traducida automáticamente
Artículo escrito por ddeevviissaavviittaa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA