Imprima un patrón rectangular concéntrico en una array 2d

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  

Publicación traducida automáticamente

Artículo escrito por anuj0503 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *