Dado un entero positivo n , imprima la array rellena con un patrón de rectángulo como se muestra a continuación: aaaaaa
abbba
abcba
abbba
aaaaaa donde a = n, b = n – 1,c = n – 2 y así sucesivamente.
Ejemplos:
Input : n = 4 Output : 4 4 4 4 4 4 4 4 3 3 3 3 3 4 4 3 2 2 2 3 4 4 3 2 1 2 3 4 4 3 2 2 2 3 4 4 3 3 3 3 3 4 4 4 4 4 4 4 4 Input : n = 3 Output : 3 3 3 3 3 3 2 2 2 3 3 2 1 2 3 3 2 2 2 3 3 3 3 3 3
Para el n dado , el número de filas o columnas a imprimir será 2*n – 1. Imprimiremos la array en dos partes. Primero imprimiremos la mitad superior de las filas desde 0 hasta el piso ((2*n – 1)/2) y luego la segunda mitad desde el piso ((2*n – 1)/2) + 1 a 2*n – 2.
Ahora para cada fila, la imprimiremos en tres partes. La primera parte es una secuencia decreciente que comenzará desde n y disminuirá en 1 en cada iteración. El número de iteraciones será igual al número de fila, la segunda parte es una secuencia constante donde la constante es n – i y se imprimirá 2*n – 1 – 2 * número de fila, y la tercera parte es una secuencia creciente que no es nada pero opuesto a la primera secuencia.
Para la mitad inferior, observe, es una imagen especular de la mitad superior (excluyendo la fila del medio). Entonces, simplemente ejecuta un bucle de la mitad superior desde (2*n – 1)/2 hasta 0.
A continuación se muestra la implementación básica de este enfoque:
C++
// C++ program for printing // the rectangular pattern #include <bits/stdc++.h> using namespace std; // Function to print the pattern void printPattern(int n) { // number of rows and columns to be printed int s = 2 * n - 1; // Upper Half for (int i = 0; i < (s / 2) + 1; i++) { int m = n; // Decreasing part for (int j = 0; j < i; j++) { cout << m << " "; m--; } // Constant Part for (int k = 0; k < s - 2 * i; k++) { cout << n - i << " "; } // Increasing part. m = n - i + 1; for (int l = 0; l < i; l++) { cout << m << " "; m++; } cout << endl; } // Lower Half for (int i = s / 2 - 1; i >= 0; i--) { // Decreasing Part int m = n; for (int j = 0; j < i; j++) { cout << m << " "; m--; } // Constant Part. for (int k = 0; k < s - 2 * i; k++) { cout << n - i << " "; } // Decreasing Part m = n - i + 1; for (int l = 0; l < i; l++) { cout << m << " "; m++; } cout << endl; } } // Driven Program int main() { int n = 3; printPattern(n); return 0; }
Java
// Java program for printing // the rectangular pattern import java.io.*; class GFG { // Function to // print the pattern static void printPattern(int n) { // number of rows and // columns to be printed int s = 2 * n - 1; // Upper Half for (int i = 0; i < (s / 2) + 1; i++) { int m = n; // Decreasing part for (int j = 0; j < i; j++) { System.out.print(m + " "); m--; } // Constant Part for (int k = 0; k < s - 2 * i; k++) { System.out.print(n - i + " "); } // Increasing part. m = n - i + 1; for (int l = 0; l < i; l++) { System.out.print(m + " "); m++; } System.out.println(); } // Lower Half for (int i = s / 2 - 1; i >= 0; i--) { // Decreasing Part int m = n; for (int j = 0; j < i; j++) { System.out.print(m + " "); m--; } // Constant Part. for (int k = 0; k < s - 2 * i; k++) { System.out.print(n - i + " "); } // Decreasing Part m = n - i + 1; for (int l = 0; l < i; l++) { System.out.print(m + " "); m++; } System.out.println(); } } // Driver Code public static void main (String[] args) { int n = 3; printPattern(n); } } // This code is contributed // by anuj_67.
Python3
# Python3 program for printing # the rectangular pattern # Function to print the pattern def printPattern(n) : # number of rows and columns to be printed s = 2 * n - 1 # Upper Half for i in range(0, int(s / 2) + 1): m = n # Decreasing part for j in range(0, i): print(m ,end= " " ) m-=1 # Constant Part for k in range(0, s - 2 * i): print(n-i ,end= " " ) # Increasing part. m = n - i + 1 for l in range(0, i): print(m ,end= " " ) m+=1 print("") # Lower Half for i in range(int(s / 2),-1,-1): # Decreasing Part m = n for j in range(0, i): print(m ,end= " " ) m-=1 # Constant Part. for k in range(0, s - 2 * i): print(n-i ,end= " " ) # Decreasing Part m = n - i + 1 for l in range(0, i): print(m ,end= " " ) m+=1 print("") # Driven Program if __name__=='__main__': n = 3 printPattern(n) # this code is contributed by Smitha Dinesh # Semwal
C#
// C# program for printing // the rectangular pattern using System; class GFG { // Function to // print the pattern static void printPattern(int n) { // number of rows and // columns to be printed int s = 2 * n - 1; // Upper Half for (int i = 0; i < (s / 2) + 1; i++) { int m = n; // Decreasing part for (int j = 0; j < i; j++) { Console.Write(m + " "); m--; } // Constant Part for (int k = 0; k < s - 2 * i; k++) { Console.Write(n - i + " "); } // Increasing part. m = n - i + 1; for (int l = 0; l < i; l++) { Console.Write(m + " "); m++; } Console.WriteLine(); } // Lower Half for (int i = s / 2 - 1; i >= 0; i--) { // Decreasing Part int m = n; for (int j = 0; j < i; j++) { Console.Write(m + " "); m--; } // Constant Part. for (int k = 0; k < s - 2 * i; k++) { Console.Write(n - i + " "); } // Decreasing Part m = n - i + 1; for (int l = 0; l < i; l++) { Console.Write(m + " "); m++; } Console.WriteLine(); } } // Driver Code public static void Main () { int n = 3; printPattern(n); } } // This code is contributed // by anuj_67.
PHP
<?php // PHP program for printing // the rectangular pattern // Function to print the pattern function printPattern($n) { // number of rows and columns // to be printed $s = 2 * $n - 1; // Upper Half for ($i = 0; $i < (int)($s / 2) + 1; $i++) { $m = $n; // Decreasing part for ($j = 0; $j < $i; $j++) { echo $m , " "; $m--; } // Constant Part for ($k = 0; $k < $s - 2 * $i; $k++) { echo ($n - $i) , " "; } // Increasing part. $m = $n - $i + 1; for ($l = 0; $l < $i; $l++) { echo $m , " "; $m++; } echo "\n"; } // Lower Half for ($i = (int)($s / 2 - 1); $i >= 0; $i--) { // Decreasing Part $m = $n; for ($j = 0; $j < $i; $j++) { echo $m, " "; $m--; } // Constant Part. for ($k = 0; $k < $s - 2 * $i; $k++) { echo $n - $i , " "; } // Decreasing Part $m = $n - $i + 1; for ($l = 0; $l < $i; $l++) { echo $m , " "; $m++; } echo "\n"; } } // Driver Code $n = 3; printPattern($n); // This code is contributed // by Sach_Code ?>
Javascript
<script> // Javascript program for printing // the rectangular pattern // Function to // print the pattern function printPattern(n) { // number of rows and // columns to be printed let s = 2 * n - 1; // Upper Half for (let i = 0; i < Math.floor(s / 2) + 1; i++) { let m = n; // Decreasing part for (let j = 0; j < i; j++) { document.write(m + " "); m--; } // Constant Part for (let k = 0; k < s - 2 * i; k++) { document.write(n - i + " "); } // Increasing part. m = n - i + 1; for (let l = 0; l < i; l++) { document.write(m + " "); m++; } document.write("<br/>"); } // Lower Half for (let i = Math.floor(s / 2) - 1; i >= 0; i--) { // Decreasing Part let m = n; for (let j = 0; j < i; j++) { document.write(m + " "); m--; } // Constant Part. for (let k = 0; k < s - 2 * i; k++) { document.write(n - i + " "); } // Decreasing Part m = n - i + 1; for (let l = 0; l < i; l++) { document.write(m + " "); m++; } document.write("<br/>"); } } // Driver Code let n = 3; printPattern(n); </script>
Producción
3 3 3 3 3 3 2 2 2 3 3 2 1 2 3 3 2 2 2 3 3 3 3 3 3
Otro enfoque:
C++
// C++ program for printing // the rectangular pattern #include<bits/stdc++.h> using namespace std; // Function to print the pattern void printPattern(int n) { int arraySize = n * 2 - 1; int result[arraySize][arraySize]; // Fill the values for(int i = 0; i < arraySize; i++) { for(int j = 0; j < arraySize; j++) { if(abs(i - arraySize / 2) > abs(j - arraySize / 2)) result[i][j] = abs(i - arraySize / 2) + 1; else result[i][j] = (abs(j-arraySize / 2) + 1); } } // Print the array for(int i = 0; i < arraySize; i++) { for(int j = 0; j < arraySize; j++) { cout << result[i][j] << " "; } cout << endl; } } // Driver Code int main() { int n = 3; printPattern(n); return 0; } // This code is contributed // by Rajput-Ji.
Java
// Java program for printing // the rectangular pattern import java.io.*; class GFG { // Function to print the pattern static void printPattern(int n) { int arraySize = n * 2 - 1; int[][] result = new int[arraySize][arraySize]; //Fill the values for(int i = 0; i < arraySize; i++) { for(int j = 0; j < arraySize; j++) { result[i][j] = Math.max(Math.abs(i-arraySize/2), Math.abs(j-arraySize/2))+1; } } //Print the array for(int i = 0; i < arraySize; i++) { for(int j = 0; j < arraySize; j++) { System.out.print(result[i][j]); } System.out.println(); } } // Driver Code public static void main (String[] args) { int n = 3; printPattern(n); } } // This code is contributed // by MohitSharma23.
Python3
# Python3 program for printing # the rectangular pattern # Function to print the pattern def printPattern(n): arraySize = n * 2 - 1; result = [[0 for x in range(arraySize)] for y in range(arraySize)]; # Fill the values for i in range(arraySize): for j in range(arraySize): if(abs(i - (arraySize // 2)) > abs(j - (arraySize // 2))): result[i][j] = abs(i - (arraySize // 2)) + 1; else: result[i][j] = abs(j - (arraySize // 2)) + 1; # Print the array for i in range(arraySize): for j in range(arraySize): print(result[i][j], end = " "); print(""); # Driver Code n = 3; printPattern(n); # This code is contributed by mits
C#
// C# program for printing // the rectangular pattern using System; class GFG { // Function to print the pattern static void printPattern(int n) { int arraySize = n * 2 - 1; int[,] result = new int[arraySize,arraySize]; // Fill the values for(int i = 0; i < arraySize; i++) { for(int j = 0; j < arraySize; j++) { result[i,j] = Math.Max(Math.Abs(i-arraySize/2), Math.Abs(j-arraySize/2))+1; } } // Print the array for(int i = 0; i < arraySize; i++) { for(int j = 0; j < arraySize; j++) { Console.Write(result[i,j]+" "); } Console.WriteLine(); } } // Driver Code public static void Main (String[] args) { int n = 3; printPattern(n); } } // This code has been contributed by 29AjayKumar
PHP
<?php // PHP program for printing // the rectangular pattern // Function to print the pattern function printPattern($n) { $arraySize = $n * 2 - 1; $result=array_fill(0,$arraySize,array_fill(0,$arraySize,0)); // Fill the values for($i = 0; $i < $arraySize; $i++) { for($j = 0; $j < $arraySize; $j++) { if(abs($i - (int)($arraySize / 2)) > abs($j - (int)($arraySize / 2))) $result[$i][$j] = abs($i - (int)($arraySize / 2)) + 1; else $result[$i][$j] = (abs($j-(int) ($arraySize / 2)) + 1); } } // Print the array for($i = 0; $i < $arraySize; $i++) { for($j = 0; $j < $arraySize; $j++) { echo $result[$i][$j]." "; } echo "\n"; } } // Driver Code $n = 3; printPattern($n); // This code is contributed by mits ?>
Javascript
<script> // Javascript program for printing the rectangular pattern // Function to print the pattern function printPattern(n) { let arraySize = n * 2 - 1; let result = new Array(arraySize); // Fill the values for(let i = 0; i < arraySize; i++) { result[i] = new Array(arraySize); for(let j = 0; j < arraySize; j++) { result[i][j] = Math.max(Math.abs(i-parseInt(arraySize/2, 10)), Math.abs(j-parseInt(arraySize/2, 10)))+1; } } // Print the array for(let i = 0; i < arraySize; i++) { for(let j = 0; j < arraySize; j++) { document.write(result[i][j] + " "); } document.write("</br>"); } } let n = 3; printPattern(n); // This code is contributed by divyeshrabadiya07. </script>
Producción
3 3 3 3 3 3 2 2 2 3 3 2 1 2 3 3 2 2 2 3 3 3 3 3 3