}
MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
Plano de
aulas
Oferecimento
anterior

ASC ART e Recursão

Nesta tarefa, vamos retornar ao tema ASC ART para exercitarmos recursão. A base para o nosso estudo será o Triângulo de Sierpinski. Ao analisarmos a figura abaixo, fica bem fácil entender o processo de criação deste fractal. A cada passo, um triângulo preto é subdividido em quatro triângulos de tamanho igual, o triângulo central é pintado de branco e os triângulos pretos serão subdivididos no passo seguinte.


Observe agora alguns diagramas em ASC ART. Note que é possível, mesmo com resolução limitada, identificar a estrutura do desenho.

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

Elementos do desenho

Descrição da entrada

A entrada será formada por três valores:

<N>
<p>
<char_preto>

A altura do triângulo base e da tela será definida por 2N. O inteiro p indicará o número de subdivisões e o caractere <char_preto> indicará o caractere que preencherá o triângulo base.

Descrição da saída

A saída será formada por um único desenho de um triângulo isósceles de altura = 2N e largura = 2 * altura - 1 caracteres do tipo <char_preto>. O triângulo deverá apresentar p subdivisões do Triângulo de Sierpinski e o desenho deverá estar emoldurado como exemplificado acima.

Testes com o SuSy

O conjunto de testes será formado por 7 testes abertos e 3 testes fechados. Os testes fechados são variações dos testes abertos em que só foram alterados os caracteres utilizados para desenho. Releia, se necessário, as instruções para fazer os testes em Testes com o SuSy.

Dicas para a implementação

Esta tarefa ficará simples de ser implementada se você subdividí-la em problemas menores, que devem ser desenvolvidos e testados separadamente. Veja a sugestão abaixo:

Orientações para submissão

Veja aqui a página de submissão da tarefa. O arquivo a ser submetido deve se chamar lab12.py. No link Arquivos auxiliares há um arquivo aux12.zip que contém todos os arquivos de testes abertos e seus respectivos resultados compactados.

O limite máximo será de 20 submissões. Serão considerados os resultados da última submissão.

O peso desta tarefa é 3.

O prazo final para submissão é 30/11/2019.

A nota desta tarefa é proporcional ao número de testes que executaram corretamente, desde que o código esteja coerente com o enunciado. A submissão de um código que não implementa o algoritmo requisitado, mas que exibe as saídas esperadas dos testes abertos a partir da comparação de trechos da entrada será considerada fraude e acarretará a atribuição de nota zero à média final da disciplina.


A imagem que ilustra os passos do algoritmo de Sierpinski foi obtida verberte referente ao Triângulo de Sierpinski na Wikipedia. Todos os outros desenhos foram obtidos a partir de programas em Python.