3829 - Octogon

De la Universitas MediaWiki

Cerința

Să se afișeze un octogon de latură n umplut cu caractere * iar spațiul spațiul exterior umplut cu #, ca în exemplu.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul va afișa octogonul cerut.

Restricții și precizări

2 ≤ n ≤ 40

Exemplu:

Intrare

5

Ieșire

####*****####

###*******###

##*********##

#***********#

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

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

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

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

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

#***********#

##*********##

###*******###

####*****####

Rezolvare

def validare(n):
    if n < 2 or n > 40:
        print("Numarul introdus nu este valid!")
        return False
    return True


def afisare_octogon(n):
    for j in range(n - 1):
        # scriem primele j+1 caractere #
        for i in range(j + 1, n):
            print('#', end='')
        # scriem urmatoarele j2+n caractere *
        for i in range(j * 2 + n):
            print('*', end='')
        # scriem ultimele j+1 caractere #
        for i in range(j + 1, n):
            print('#', end='')
        # trecem la linia urmatoare
        print()

    for i in range(n):
        for j in range(n * 3 - 2):
            print('*', end='')
        print()

    for j in range(n - 1):
        # scriem primele n-j-1 caractere #
        for i in range(n - j - 1, n):
            print('#', end='')
        # scriem urmatoarele (n-j-1)*2+n-2 caractere *
        for i in range((n - j - 1) * 2 + n - 2):
            print('*', end='')
        # scriem ultimele n-j-1 caractere #
        for i in range(n - j - 1, n):
            print('#', end='')
        # trecem la linia urmatoare
        print()


if __name__ == "__main__":
    n = int(input("Introduceti numarul n: "))
    if validare(n):
        print("Date de intrare valide")
        afisare_octogon(n)
    else:
        print("Date de intrare invalide")