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

#################################################################
# 1 | 0   0   0 | 1   1 | 0   0   0 | 1   1 | 0   0   0 | 1   1 #
#   +---+       +---+   +---+       +---+   +---+       +---+   #
# 1   1 | 0   0   0 | 1   1 | 0   0   0 | 1   1 | 0   0   0 | 1 #
#---+   +---+       +---+   +---+       +---+   +---+       +---#
# 0 | 1   1 | 0   0   0 | 1   1 | 0   0   0 | 1   1 | 0   0   0 #
#   +---+   +---+       +---+   +---+       +---+   +---+       #
# 0   0 | 1   1 | 0   0   0 | 1   1 | 0   0   0 | 1   1 | 0   0 #
#       +---+   +---+       +---+   +---+       +---+   +---+   #
# 0   0   0 | 1   1 | 0   0   0 | 1   1 | 0   0   0 | 1   1 | 0 #
#################################################################
Regiões binárias

Neste exercício, iremos trabalhar com matrizes binárias implementadas por listas de listas de inteiros. Sua tarefa será produzir uma saída formatada desta matriz em que as áreas contínuas com 0s ou com 1s estarão demarcadas por bordas especiais.

A borda externa da matriz será delimitada pelo caractere #. Dois números diferentes na mesma linha serão separados pelo caractere |. Dois números diferentes na mesma coluna serão separados por ---. A intersecção entre os caracteres | e - deve ser marcada com um caractere +. Para se manter o alinhamento, quando os números forem iguais devem ser escritos espaços em branco. Observe os padrões:

#########  #########  #########  #########  #########  ######### 
# 0   0 #  # 0 | 1 #  # 0   0 #  # 0 | 1 #  # 0 | 1 #  # 0 | 1 # 
#       #  #   |   #  #-------#  #   +---#  #---+   #  #---+---# 
# 0   0 #  # 0 | 1 #  # 1   1 #  # 0   0 #  # 1   1 #  # 1 | 0 # 
#########  #########  #########  #########  #########  #########

Descrição da entrada

A primeira linha da entrada conterá o número de linhas da matriz e a segunda, o número de colunas. Em seguida, teremos as linhas com o conteúdo da matriz. Considere o exemplo abaixo:

4
4
0 0 0 0
0 0 1 0
0 1 1 0
0 0 0 1

Não será necessário verificar a ocorrência de erros na entrada. A entrada estará completa, com dimensões coerentes com o conteúdo apresentado.

Descrição da saída

A saída deverá conter uma matriz formatada de acordo com as regras descritas acima. Para o exemplo da seção anterior, a saída será:

#################
# 0   0   0   0 #
#       +---+   #
# 0   0 | 1 | 0 #
#   +---+   |   #
# 0 | 1   1 | 0 #
#   +-------+---#
# 0   0   0 | 1 #
#################

Testes com o SuSy

Devido a variedade possível de padrões que podem ser construídos a partir deste enunciado, foram disponibilizados 13 testes abertos, com níveis crescentes de complexidade. Seu programa passará também por 2 testes fechados. Releia, se necessário, as instruções para fazer os testes em Testes com o SuSy.

Dicas de Python e estruturação para esta tarefa

Orientações para submissão

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

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

O peso desta tarefa é 4.

O prazo final para submissão é 30/06/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.