Dado un número entero N , la tarea es imprimir un patrón de peces en 2N+1 filas.
Ejemplo:
Entrada: N=3
Salida:
*
*** *
***** **
**********
***** **
*** *
*Entrada: N=5
Salida:
*
*** *
***** **
******* ***
********* ****
******** ******* *********
****
******* ***
***** **
*** *
*
Planteamiento: El pescado consta de tres partes:
- Parte Superior: Sobre N filas.
- Parte media: Fila única en el medio
- Parte Inferior: Más de N filas
Ahora, intentemos entender el patrón usando un ejemplo:
Para N=3, el pez es:
Ahora, para resolver esta pregunta, sigue los siguientes pasos:
- Primero, crea la parte superior:
- Ejecute un ciclo para i=0 a i<N , y en cada iteración del ciclo:
- Como se muestra en la imagen de arriba, primero aparece una string, digamos espacios1 con M (inicialmente M=N ), luego aparece una capa de estrellas, digamos estrellas1 que tienen solo 1 estrella, luego la string espacios1 aparece 2 veces (con 2*M espacios) y luego otra capa de estrellas, digamos stars2 que tiene 0 estrellas inicialmente.
- Ahora, en cada iteración, los espacios1 se redujeron en un espacio, las estrellas1 aumentaron en 2 estrellas y las estrellas2 en 1 estrella.
- Ejecute un ciclo para i=0 a i<N , y en cada iteración del ciclo:
- Para la parte central, simplemente imprima estrellas1 y estrellas2 , ya que no aparecen espacios en esta fila.
- Ahora, para obtener la parte inferior, invierta el algoritmo para la parte superior.
- Después de que termine el bucle, se creará el patrón de peces.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to print the pattern of a fish // over N rows void printFish(int N) { string spaces1 = "", spaces2 = ""; string stars1 = "*", stars2 = ""; for (int i = 0; i < N; ++i) { spaces1 += ' '; } spaces2 = spaces1; for (int i = 0; i < 2 * N + 1; ++i) { // For upper part if (i < N) { cout << spaces1 << stars1 << spaces1 << spaces1 << stars2 << endl; spaces1.pop_back(); stars1 += "**"; stars2 += "*"; } // For middle part if (i == N) { cout << spaces1 << stars1 << spaces1 << spaces1 << stars2 << endl; } // For lower part if (i > N) { spaces1 += ' '; stars1.pop_back(); stars1.pop_back(); stars2.pop_back(); cout << spaces1 << stars1 << spaces1 << spaces1 << stars2 << endl; } } } // Driver Code int main() { int N = 5; printFish(N); }
Java
// Java program for the above approach class GFG { // Function to print the pattern of a fish // over N rows public static void printFish(int N) { String spaces1 = ""; String stars1 = "*", stars2 = ""; for (int i = 0; i < N; ++i) { spaces1 += ' '; } for (int i = 0; i < 2 * N + 1; ++i) { // For upper part if (i < N) { System.out.print(spaces1 + stars1 + spaces1 + spaces1); System.out.println(stars2); spaces1 = spaces1.substring(0, spaces1.length() - 1); stars1 += "**"; stars2 += "*"; } // For middle part if (i == N) { System.out.print(spaces1 + stars1 + spaces1 + spaces1); System.out.println(stars2); } // For lower part if (i > N) { spaces1 += ' '; stars1 = stars1.substring(0, stars1.length() - 1); stars1 = stars1.substring(0, stars1.length() - 1); stars2 = stars2.substring(0, stars2.length() - 1); System.out.print(spaces1 + stars1 + spaces1 + spaces1); System.out.println(stars2); } } } // Driver Code public static void main(String args[]) { int N = 5; printFish(N); } } // This code is contributed by gfgking.
Python3
# Python3 program for the above approach # Function to print the pattern of a fish # over N rows def printFish(N) : spaces1 = ""; spaces2 = ""; stars1 = "*"; stars2 = ""; for i in range(N) : spaces1 += ' '; spaces2 = spaces1; for i in range( 2 * N + 1) : # For upper part if (i < N) : print(spaces1,end=""); print(stars1,end=""); print(spaces1,end=""); print(spaces1,end=""); print(stars2); spaces1 = spaces1[:-1] stars1 += "**"; stars2 += "*"; # For middle part if (i == N) : print(spaces1,end=""); print(stars1,end=""); print(spaces1,end=""); print(spaces1,end=""); print(stars2); # For lower part if (i > N) : spaces1 += ' '; stars1 = stars1[:-1]; stars1 = stars1[:-1]; stars2 = stars2[:-1]; print(spaces1,end=""); print(stars1,end="") print(spaces1,end=""); print(spaces1,end=""); print(stars2); # Driver Code if __name__ == "__main__" : N = 5; printFish(N); # This code is contributed by AnkThon
C#
// C# program for the above approach using System; class GFG { // Function to print the pattern of a fish // over N rows static void printFish(int N) { string spaces1 = ""; string stars1 = "*", stars2 = ""; for (int i = 0; i < N; ++i) { spaces1 += ' '; } for (int i = 0; i < 2 * N + 1; ++i) { // For upper part if (i < N) { Console.Write(spaces1 + stars1 + spaces1 + spaces1); Console.Write(stars2 + "\n"); spaces1 = spaces1.Substring(0, spaces1.Length - 1); stars1 += "**"; stars2 += "*"; } // For middle part if (i == N) { Console.Write(spaces1 + stars1 + spaces1 + spaces1); Console.Write(stars2 + "\n"); } // For lower part if (i > N) { spaces1 += ' '; stars1 = stars1.Substring(0, stars1.Length - 1); stars1 = stars1.Substring(0, stars1.Length - 1); stars2 = stars2.Substring(0, stars2.Length - 1); Console.Write(spaces1 + stars1 + spaces1 + spaces1); Console.Write(stars2 + "\n"); } } } // Driver Code public static void Main() { int N = 5; printFish(N); } } // This code is contributed by Samim Hossain Mondal.
Javascript
<script> // JavaScript program for the above approach // Function to print the pattern of a fish // over N rows const printFish = (N) => { let spaces1 = "", spaces2 = ""; let stars1 = "*", stars2 = ""; for (let i = 0; i < N; ++i) { spaces1 += "  "; } spaces2 = spaces1; for (let i = 0; i < 2 * N + 1; ++i) { // For upper part if (i < N) { document.write(`${spaces1}${stars1}${spaces1}${spaces1}${stars2}<br/>`); spaces1 = spaces1.substr(0, spaces1.length - 10); stars1 += "**"; stars2 += "*"; } // For middle part if (i == N) { document.write(`${spaces1}${stars1}${spaces1}${spaces1}${stars2}<br/>`); } // For lower part if (i > N) { spaces1 += "  "; stars1 = stars1.substr(0, stars1.length - 2); stars2 = stars2.substr(0, stars2.length - 1); document.write(`${spaces1}${stars1}${spaces1}${spaces1}${stars2}<br/>`); } } } // Driver Code let N = 5; printFish(N); // This code is contributed by rakeshsahni </script>
* *** * ***** ** ******* *** ********* **** **************** ********* **** ******* *** ***** ** *** * *
Complejidad temporal: O(N)
Espacio auxiliar: O(N)
Publicación traducida automáticamente
Artículo escrito por kritikadhir27 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA