Programas de patrones de pirámide en Java

Los programas de patrones se utilizan mucho en entrevistas para entender las habilidades de pensamiento lógico del entrevistado. Los patrones de pirámide son muy populares y una vez que entendemos la lógica de cómo se crean, escribir código para lograr lo mismo es una tarea fácil.

Programas de Patrones de Pirámide en Java

Aquí proporciono algunos ejemplos para crear diferentes patrones de pirámide con números, símbolos, etc. También veremos algunos ejemplos de cómo crear un patrón de pirámide invertida en un programa Java. Intentaremos mantener el código simple para que sea fácil de entender.

Patrón de Pirámide de Números

Si observas el primer patrón, cada fila contiene el mismo número impreso la misma cantidad de veces. Sin embargo, cada fila tiene espacios en blanco iniciales cuya cantidad es “filas-i”. Veamos el programa para imprimir este patrón.

package com.journaldev.patterns.pyramid;

import java.util.Scanner;

public class PyramidPattern {

	private static void printPattern1(int rows) {
		// bucle for para las filas
		for (int i = 1; i <= rows; i++) {
			// espacios en blanco al principio de los números
			int numberOfWhiteSpaces = rows - i;

			// imprimir espacios en blanco iniciales
			printString(" ", numberOfWhiteSpaces);

			// imprimir números
			printString(i + " ", i);

			// pasar a la siguiente línea
			System.out.println("");
		}
	}

	// función de utilidad para imprimir una cadena dada veces
	private static void printString(String s, int times) {
		for (int j = 0; j < times; j++) {
			System.out.print(s);
		}
	}

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		System.out.println("Please enter the rows to print:");
		int rows = scanner.nextInt();
		// System.out.println("Filas = "+filas);
		scanner.close();

		System.out.println("Printing Pattern 1\n");
		printPattern1(rows);

	}

}

Nota que he creado una función de utilidad para la tarea común de impresión de cadenas. Si puedes dividir tu programa en funciones cortas y reutilizables, entonces muestra que no solo estás buscando escribir el programa, sino también asegurarte de su calidad y reutilización. Cuando ejecutamos el programa anterior, obtenemos la siguiente salida.

Please enter the rows to print:
9
Printing Pattern 1

        1 
       2 2 
      3 3 3 
     4 4 4 4 
    5 5 5 5 5 
   6 6 6 6 6 6 
  7 7 7 7 7 7 7 
 8 8 8 8 8 8 8 8 
9 9 9 9 9 9 9 9 9 
Pyramid Pattern Java Program Output

Patrón de Pirámide de Números Crecientes

Aquí está la función para imprimir el patrón 2. El punto clave a tener en cuenta es la cantidad de espacios en blanco iniciales y luego los números que se imprimen en orden creciente.

/**
 * 
 * Program to print below pyramid structure
 *      1         
       1 2        
      1 2 3       
     1 2 3 4      
    1 2 3 4 5     
   1 2 3 4 5 6    
  1 2 3 4 5 6 7   
 1 2 3 4 5 6 7 8  
1 2 3 4 5 6 7 8 9 
*/
private static void printPattern2(int rows) {
	// bucle for para las filas
	for (int i = 1; i <= rows; i++) {
		// espacios en blanco al principio de los números
		int numberOfWhiteSpaces = rows - i;

		// imprimir espacios en blanco iniciales
		printString(" ", numberOfWhiteSpaces);

		// imprimir números
		for(int x = 1; x<=i; x++) {
			System.out.print(x+" ");
		}

		// pasar a la siguiente línea
		System.out.println("");
	}
}

Pirámide de Caracteres

Este es realmente simple, solo tenemos que imprimir el carácter sin realizar ningún cálculo o manipulación.

/**
 * Program to print following pyramid structure
        *         
       * *        
      * * *       
     * * * *      
    * * * * *     
   * * * * * *    
  * * * * * * *   
 * * * * * * * *  
* * * * * * * * * 

*/
private static void printPattern3(int rows) {
	// bucle for para las filas
	for (int i = 1; i <= rows; i++) {
		// espacios en blanco al principio de los números
		int numberOfWhiteSpaces = rows - i;

		// imprimir espacios en blanco iniciales
		printString(" ", numberOfWhiteSpaces);

		// imprimir carácter
		printString("* ", i);

		// pasar a la siguiente línea
		System.out.println("");
	}
}

Programa de Patrón de Pirámide 4

/**
* 
*               1 
              1 2 1 
            1 2 3 2 1 
          1 2 3 4 3 2 1 
        1 2 3 4 5 4 3 2 1 
      1 2 3 4 5 6 5 4 3 2 1 
    1 2 3 4 5 6 7 6 5 4 3 2 1 
  1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 
*/

private static void printPattern4(int rows) {
	// bucle for para las filas
	for (int i = 1; i <= rows; i++) {
		// espacios en blanco al principio de los números
		int numberOfWhiteSpaces = (rows-i)*2;

		// imprimir espacios en blanco iniciales
		printString(" ", numberOfWhiteSpaces);

		// imprimir números
		for(int x=1; x0; j--) {
			System.out.print(j+" ");
		}

		// pasar a la siguiente línea
		System.out.println("");
	}
}

Observa que cada fila tiene 2*r-1 números. Así que tendremos (filas-i)*2 espacios en blanco antes de imprimir cualquier número. Luego, los números van desde 1 hasta “i” y luego hasta 1 nuevamente. Nuestra lógica para imprimir los números requeriría dos bucles for para lograr esto.

Programa de Patrón de Pirámide 5 en Java

/**
 * 
 *                9 
                8 9 8 
              7 8 9 8 7 
            6 7 8 9 8 7 6 
          5 6 7 8 9 8 7 6 5 
        4 5 6 7 8 9 8 7 6 5 4 
      3 4 5 6 7 8 9 8 7 6 5 4 3 
    2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 
  1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 
*/
private static void printPattern5(int rows) {
	// bucle for para las filas
	for (int i = rows; i >= 1; i--) {
		// espacios en blanco al principio de los números
		int numberOfWhiteSpaces = i*2;

		// imprimir espacios en blanco iniciales
		printString(" ", numberOfWhiteSpaces);

		// imprimir números
		for(int x=i; x=i; j--) {
			System.out.print(j+" ");
		}

		// pasar a la siguiente línea
		System.out.println("");
	}
}

Patrón invertido de pirámide de caracteres

Aquí está el fragmento de código para el programa de pirámide invertida.

/**
 * 
* * * * * * * * * 
 * * * * * * * * 
  * * * * * * * 
   * * * * * * 
    * * * * * 
     * * * * 
      * * * 
       * * 
        * 
 */
private static void printPattern6(int rows) {
	// bucle for para las filas
	for (int i = rows; i >= 1; i--) {
		// espacios en blanco al frente de los números
		int numberOfWhiteSpaces = rows - i;

		// imprimir espacios en blanco principales
		printString(" ", numberOfWhiteSpaces);

		// imprimir caracter
		printString("* ", i);

		// pasar a la siguiente línea
		System.out.println("");
	}
}

Patrón invertido de pirámide de números

Veamos un ejemplo de un patrón de pirámide invertida hecho de números.

	/**
	 * 
9 9 9 9 9 9 9 9 9 
 8 8 8 8 8 8 8 8 
  7 7 7 7 7 7 7 
   6 6 6 6 6 6 
    5 5 5 5 5 
     4 4 4 4 
      3 3 3 
       2 2 
        1 
	 */
private static void printPattern7(int rows) {
	// bucle for para las filas
	for (int i = rows; i >= 1; i--) {
		// espacios en blanco al frente de los números
		int numberOfWhiteSpaces = rows - i;

		// imprimir espacios en blanco principales
		printString(" ", numberOfWhiteSpaces);

		// imprimir caracter
		printString(i+" ", i);

		// pasar a la siguiente línea
		System.out.println("");
	}
}

Conclusión

Hay muchos tipos de patrones de pirámide. El punto más importante es entender el patrón en el cual están organizados los números y los espacios en blanco. Una vez que tengas claro el patrón, también puedes escribir código fácilmente en Java o en cualquier otro lenguaje de programación. Por favor, avísame si estás buscando algún programa de patrón específico y trataré de ayudarte.

Lecturas Adicionales

Programas de Cadena en Java y Preguntas de Entrevista de Programación en Java

Puedes revisar el código completo y más ejemplos de programación en nuestro Repositorio de GitHub.

Source:
https://www.digitalocean.com/community/tutorials/pyramid-pattern-programs-in-java