Dado un número entero n, la tarea es imprimir el patrón de diamante inverso en 2n-1 filas.
Ejemplo:
Input: n = 3 Output: *** *** ** ** * * ** ** *** *** Input: n = 7 Output: ******* ******* ****** ****** ***** ***** **** **** *** *** ** ** * * ** ** *** *** **** **** ***** ***** ****** ****** ******* *******
Acercarse:
- El diamante inverso completo es de 2n-1 filas para una entrada de n.
- El programa se divide para imprimir este patrón en dos partes:
- La primera parte es la mitad superior del diamante de n filas.
- Esta parte incluye 3 partes: el triángulo izquierdo de *, el triángulo medio del espacio y el triángulo derecho de *.
- La segunda parte es la mitad inferior del diamante de n-1 filas.
- Esta parte también incluye 3 partes: el triángulo izquierdo de *, el triángulo medio del espacio y el triángulo derecho de *.
- Al imprimir cada parte, se obtiene el patrón de diamante inverso requerido.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ Code to print // the inverse diamond shape #include<bits/stdc++.h> using namespace std; // Function to Print Inverse Diamond pattern // with 2n-1 rows void printDiamond(int n) { cout<<endl; int i, j = 0; // for top half for (i = 0; i < n; i++) { // for left * for (j = i; j < n; j++) cout<<"*"; // for middle " " for (j = 0; j < 2 * i + 1; j++) cout<<" "; // for right * for (j = i; j < n; j++) cout<<"*"; cout<<endl; } // for below half for (i = 0; i < n - 1; i++) { // for left * for (j = 0; j < i + 2; j++) cout<<"*"; // for middle " " for (j = 0; j < 2 * (n - 1 - i) - 1; j++) cout<<" "; // for right * for (j = 0; j < i + 2; j++) cout<<"*"; cout<<endl; } cout<<endl; } // Driver Code int main() { // Define n int n = 3; cout<<"Inverse Diamond Pattern for n = "<<n; printDiamond(n); n = 7; cout<<"\nInverse Diamond Pattern for n = "<<n; printDiamond(n); }
Java
// Java Code to print // the inverse diamond shape import java.util.*; class GFG { // Function to Print Inverse Diamond pattern // with 2n-1 rows static void printDiamond(int n) { System.out.println(); int i, j = 0; // for top half for (i = 0; i < n; i++) { // for left * for (j = i; j < n; j++) System.out.print("*"); // for middle " " for (j = 0; j < 2 * i + 1; j++) System.out.print(" "); // for right * for (j = i; j < n; j++) System.out.print("*"); System.out.println(); } // for below half for (i = 0; i < n - 1; i++) { // for left * for (j = 0; j < i + 2; j++) System.out.print("*"); // for middle " " for (j = 0; j < 2 * (n - 1 - i) - 1; j++) System.out.print(" "); // for right * for (j = 0; j < i + 2; j++) System.out.print("*"); System.out.println(); } System.out.println(); } // Driver Code public static void main(String[] args) { // Define n int n = 3; System.out.println("Inverse Diamond Pattern for n = " + n); printDiamond(n); n = 7; System.out.println("\nInverse Diamond Pattern for n = " + n); printDiamond(n); } }
Python3
#Python3 program to print # the inverse diamond shape # Function to Print Inverse # Diamond pattern # with 2n-1 rows def printDiamond(n) : print("") j = 0 # for top half for i in range(0,n): # for left * for j in range(i,n): print("*",end="") # for middle " " for j in range(0,2 * i + 1): print(" ",end="") # for right * for j in range(i,n): print("*",end="") print("") # for below half for i in range(0,n-1): # for left * for j in range(0, i+2): print("*",end="") # for middle " " for j in range(0,2 * (n - 1 - i) - 1): print(" ",end="") # for right * for j in range(0, i+2): print("*",end="") print("") print("") # Driver Code if __name__=='__main__': # Define n n = 3 print("Inverse Diamond Pattern for n = ",n) printDiamond(n) n = 7 print("\nInverse Diamond Pattern for n = ",n ) printDiamond(n) # this code is contributed by Smitha Dinesh Semwal
C#
// C# Code to print // the inverse diamond shape using System; class GFG { // Function to Print Inverse // Diamond pattern with 2n-1 rows static void printDiamond(int n) { Console.WriteLine(); int i, j = 0; // for top half for (i = 0; i < n; i++) { // for left * for (j = i; j < n; j++) Console.Write("*"); // for middle " " for (j = 0; j < 2 * i + 1; j++) Console.Write(" "); // for right * for (j = i; j < n; j++) Console.Write("*"); Console.WriteLine(); } // for below half for (i = 0; i < n - 1; i++) { // for left * for (j = 0; j < i + 2; j++) Console.Write("*"); // for middle " " for (j = 0; j < 2 * (n - 1 - i) - 1; j++) Console.Write(" "); // for right * for (j = 0; j < i + 2; j++) Console.Write("*"); Console.WriteLine(); } Console.WriteLine(); } // Driver Code public static void Main() { // Define n int n = 3; Console.WriteLine("Inverse Diamond " + "Pattern for n = " + n); printDiamond(n); n = 7; Console.WriteLine("\nInverse Diamond " + "Pattern for n = " + n); printDiamond(n); } } // This code is contributed // by inder_verma.
PHP
<?php // PHP Code to print // the inverse diamond shape // Function to Print Inverse // Diamond pattern with 2n-1 rows function printDiamond($n) { echo"\n"; $i; $j = 0; // for top half for ($i = 0; $i < $n; $i++) { // for left * for ($j = $i; $j < $n; $j++) echo("*"); // for middle " " for ($j = 0; $j < 2 * $i + 1; $j++) echo(" "); // for right * for ($j = $i; $j < $n; $j++) echo("*"); echo("\n"); } // for below half for ($i = 0; $i < $n - 1; $i++) { // for left * for ($j = 0; $j < $i + 2; $j++) echo("*"); // for middle " " for ($j = 0; $j < 2 * ($n - 1 - $i) - 1; $j++) echo(" "); // for right * for ($j = 0; $j < $i + 2; $j++) echo("*"); echo("\n"); } echo("\n"); } // Driver Code // Define n $n = 3; echo("Inverse Diamond Pattern for n = " ); echo($n); printDiamond($n); $n = 7; echo("\nInverse Diamond Pattern for n = " ); echo($n); printDiamond($n); // This code is contributed // by inder_verma. ?>
Javascript
<script> // JavaScript Code to print // the inverse diamond shape // Function to Print Inverse Diamond pattern // with 2n-1 rows function printDiamond(n) { document.write("<br><br>"); var i, j = 0; // for top half for (i = 0; i < n; i++) { // for left * for (j = i; j < n; j++) document.write("*"); // for middle " " for (j = 0; j < 2 * i + 1; j++) document.write(" "); // for right * for (j = i; j < n; j++) document.write("*"); document.write("<br>"); } // for below half for (i = 0; i < n - 1; i++) { // for left * for (j = 0; j < i + 2; j++) document.write("*"); // for middle " " for (j = 0; j < 2 * (n - 1 - i) - 1; j++) document.write(" "); // for right * for (j = 0; j < i + 2; j++) document.write("*"); document.write("<br>"); } document.write("<br>"); } // Driver Code // Define n var n = 3; document.write("Inverse Diamond Pattern for n = " + n); printDiamond(n); n = 7; document.write("\nInverse Diamond Pattern for n = " + n); printDiamond(n); </script>
Producción:
Inverse Diamond Pattern for n = 3 *** *** ** ** * * ** ** *** *** Inverse Diamond Pattern for n = 7 ******* ******* ****** ****** ***** ***** **** **** *** *** ** ** * * ** ** *** *** **** **** ***** ***** ****** ****** ******* *******
Complejidad de Tiempo : O(n 2 )
Espacio Auxiliar : O(1)