Programa para imprimir el patrón de peces

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:

  1. 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.
  2. Para la parte central, simplemente imprima estrellas1 y estrellas2 , ya que no aparecen espacios en esta fila.
  3. Ahora, para obtener la parte inferior, invierta el algoritmo para la parte superior.
  4. 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>
Producción

     *          
    ***        *
   *****      **
  *******    ***
 *********  ****
****************
 *********  ****
  *******    ***
   *****      **
    ***        *
     *          

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

Deja una respuesta

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