MC102 - Algoritmos e Programação de Computadores
MC102 Oferecimento anterior

BINGO! Tarefa de laboratório 09

Em um jogo de Bingo, os participantes recebem cartelas com 24 números distintos dispostos em uma matriz com 5 linhas e 5 colunas, sendo que o elemento central não recebe número. Os números da primeira coluna devem estar no intervalo de 1 a 15, da segunda, de 16 a 30, da terceira, de 31 a 45, da quarta, de 46 a 60 e da quinta, de 61 a 75. Além disto, a palavra BINGO costuma estar escrita no topo das cartelas de maneira a facilitar a identificação das colunas. Observe:

+----------------+
| B  I  N  G  O  |
+================+
| 12 24 43 49 72 |
| 07 23 31 57 62 |
| 04 20 XX 51 73 |
| 08 21 38 50 61 |
| 05 27 40 54 63 |
+----------------+

Durante o jogo, números são sorteados e anunciados juntamente com o identificador das colunas, como, por exemplo, B-02, I-17 ou G-54. Ao verificar que um número sorteado está em sua cartela, o jogador deve marcá-lo. Ganha prêmios quem completar com números sorteados uma linha, uma coluna ou uma das diagonais.

+----------------+ +----------------+ +----------------+ +----------------+
| B  I  N  G  O  | | B  I  N  G  O  | | B  I  N  G  O  | | B  I  N  G  O  |
+================+ +================+ +================+ +================+
| 12 24 43 49 72 | | 12 24 XX 49 72 | | XX 24 43 49 72 | | 12 24 43 49 XX |
| 07 23 31 57 62 | | 07 23 XX 57 62 | | 07 XX 31 57 62 | | 07 23 31 XX 62 |
| 04 20 XX 51 73 | | 04 20 XX 51 73 | | 04 20 XX 51 73 | | 04 20 XX 51 73 |
| XX XX XX XX XX | | 08 21 XX 50 61 | | 08 21 38 XX 61 | | 08 XX 38 50 61 |
| 05 27 40 54 63 | | 05 27 XX 54 63 | | 05 27 40 54 XX | | XX 27 40 54 63 |
+----------------+ +----------------+ +----------------+ +----------------+

Sua tarefa será implementar um programa em Python para simular a participação de um jogador com uma única cartela em uma partida de Bingo.

Descrição da entrada

As primeiras cinco linhas da entrada correspondem aos números da cartela. Para facilitar a leitura, o elemento central será marcado com XX.

12 24 43 49 72
07 23 31 57 62
04 20 XX 51 73
08 21 38 50 61
05 27 40 54 63

A próxima linha conterá a quantidade de números sorteados que deverão ser processados. Em seguida, os números virão um por linha no padrão <letra>-<numero>.

6
N-38
N-40
B-06
N-43
N-31
O-72

Descrição da saída

Inicialmente, você deverá escrever a cartela com a moldura, o espaçamento e a palavra BINGO representada com nos exemplos da primeira seção. Em seguida, deverá processar os números sorteados. Todo número lido deve ser escrito na saída e, caso tenha sido encontrado na cartela, a cartela deve ser reescrita com XX no lugar do elemento sorteado. Caso uma linha, coluna ou diagonal tenha sido completada, a palavra BINGO é emitida e processamento termina, mesmo que existam mais números na entrada.

+----------------+
| B  I  N  G  O  |
+================+
| 12 24 43 49 72 |
| 07 23 31 57 62 |
| 04 20 XX 51 73 |
| 08 21 38 50 61 |
| 05 27 40 54 63 |
+----------------+
N-38
+----------------+
| B  I  N  G  O  |
+================+
| 12 24 43 49 72 |
| 07 23 31 57 62 |
| 04 20 XX 51 73 |
| 08 21 XX 50 61 |
| 05 27 40 54 63 |
+----------------+
N-40
+----------------+
| B  I  N  G  O  |
+================+
| 12 24 43 49 72 |
| 07 23 31 57 62 |
| 04 20 XX 51 73 |
| 08 21 XX 50 61 |
| 05 27 XX 54 63 |
+----------------+
B-06
N-43
+----------------+
| B  I  N  G  O  |
+================+
| 12 24 XX 49 72 |
| 07 23 31 57 62 |
| 04 20 XX 51 73 |
| 08 21 XX 50 61 |
| 05 27 XX 54 63 |
+----------------+
N-31
+----------------+
| B  I  N  G  O  |
+================+
| 12 24 XX 49 72 |
| 07 23 XX 57 62 |
| 04 20 XX 51 73 |
| 08 21 XX 50 61 |
| 05 27 XX 54 63 |
+----------------+
BINGO!

Testes para o SuSy

Esta tarefa contém 8 testes abertos e 2 testes fechados. Não será necessário fazer a validação dos dados da entrada.

Orientações para submissão

Veja aqui a página de submissão da tarefa. Lembre-se que o arquivo a ser submetido deve se chamar lab09.py.

No link Arquivos auxiliares há um arquivo aux-09.zip que contém todos os arquivos de testes abertos e seus respectivos resultados compactados. Os arquivos executa-testes.py e executa-testes-windows.py também estão neste pacote.

Observe o limite máximo de 20 submissões.

A nota final é 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.

O peso desta tarefa é 3.

O prazo final para submissão é 20/11/2018.