Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Dywan
(G)
Limit pamięci: 32 MB
Limit czasu: 2.00 s

Jasio, przygotowując się na przyjęcie gości, postanowił udekorować swój dom. Przeglądając internet, natrafił na fraktal o ciekawym wyglądzie – dywan Sierpińskiego. Wpadł na pomysł, aby wydrukować go na plakatach i przykleić do ścian. Niestety, jego stara drukarka obsługuje wyłącznie standardowe znaki ASCII.

Pomóż Jasiowi i napisz program, który wczyta stopień fraktalu i wydrukuje go przy użyciu jedynie znaków spacji oraz #.

Dywan stopnia 0 (D0) to pojedynczy znak #.

Dywan stopnia k + 1 (Dk + 1) otrzymujemy, układając osiem kopii dywanu stopnia Dk w układzie 3×3, pozostawiając środkowy fragment pusty.

Graficzna ilustracja tego procesu:

Puste miejsca w trakcie konstrukcji kolejnych stopni fraktalu należy wypełnić spacjami (patrz przykłady).

Wejście

W pierwszym (jedynym) wierszu wejścia znajduje się pojedyczna liczba całkowita n, oznaczająca poziom fraktalu, jaki należy wypisać.

Wyjście

Na wyjściu powinien znaleźć się dywan sierpińskiego według powyżej opisanych reguł i konwencji.

Ograniczenia

0 ≤ n ≤ 7.

Przykład

Wejście Wyjście Wyjaśnienie
0
#

D0 reprezentujemy poprzez pojedyczny znak #.

Wejście Wyjście Wyjaśnienie
1
###
# #
###

Pojedyncze zagnieżdżenie procedury rysującej dywan da wskazany rezultat.

Wejście Wyjście Wyjaśnienie
2
#########
# ## ## #
#########
###   ###
# #   # #
###   ###
#########
# ## ## #
#########

Dwukrotne zagnieżdżenie procedury rysującej dywan da wskazany rezultat.