Você está na página 1de 10

Departamento de Ciência da Computação – IME-USP

MAC 115 — Introdução à Ciência da Computação


IFUSP
Segundo Semestre de 2017

Quadrados Mágicos

1 O problema
O objetivo é gerar um Quadrado Mágico 4×4 para qualquer número escolhido
pelo usuário e em seguida mostrar diversas variações deste mesmo quadrado.

2 Quadrados Mágicos
Os quadrados mágicos são matrizes onde a soma dos elementos de cada linha,
de cada coluna, e das diagonais é sempre o mesmo. Em alguns casos, como
veremos, esta propriedade se estende a outros subconjuntos de células. Eles
são muito antigos e a determinação de sua origem é bastante controversa.
Uma das lendas fala de uma época em 2000 AC, mas a publicação desta
estória é de 1200 DC, outra fonte cita 220 AC, como a referência mais antiga..
Na lenda, uma tartaruga apareceu nas margens do Rio Lo com uma figura
desenhada nas costas. O desenho formava um quadrado mágico de ordem 3,
veja a figura 1.
Se contarmos o número de bolinhas em cada desenho, teremos a matriz
equivalente:
 
8 1 6
 3 5 7 
 

4 9 2

O Imperador Yu, que estava à beira do rio, interpretou o desenho como


uma revelação da geometria superior do universo.
De qualquer forma, quadrados mágicos proliferaram no inı́cio da era cristã
e foram usados como amuleto em diversas culturas. Em 1514, Albrecht Dürer
fez uma gravura famosa, chamada MELENCOLIA, que apresenta um qua-
drado mágico 4 × 4 no canto superior direito, abaixo do sino. Veja a figura

1
Figura 1: Quadrado Mágico na tartaruga

2. A figura 3 mostra este quadrado em destaque. É interessante notar que


as casas centrais da última linha mostram a data da pintura (1514).

3 Quadrados 4 × 4
Os quadrados que nos interessam são justamente os de tamanho ×4, pois
além de terem todas as propriedades curiosas, apesar de serem simples, estão
mais ligados a simetrias do que os outros tipos1 .
Vejamos mais um exemplo, para um número especial:

11 8 21 2
22 1 12 7
4 23 6 9
5 10 3 24
1
Existem simetrias interessantes em alguns quadrados de ordem maior, mas estes já
são divertidos o suficiente.

2
Figura 2: Melencolia I, de Albrecht Dürer

3
Figura 3: Quadrado mágico de Melencolia em destaque

4
Além da soma constante em linhas, colunas e diagonais, o mesmo total é
encontrado se somarmos os seguintes conjuntos de 4 células:
• Os quatro valores do canto superior esquerdo (11, 8, 22 e 1)
• Os quatro valores do canto superior direito (21, 2, 12 e 7)
• Os quatro valores do canto inferior esquerdo
• Os quatro valores do canto inferior direito
• Os 4 valores centrais (1, 12, 23 e 6)
• Os 4 cantos (11, 2, 5 e 24)
• Os 2 números do meio superior (8 e 21) e os do meio inferior (10 e 3)
• Idem para os meios da coluna esquerda e direita
• Os elementos das segundas diagonais menores de cada diagonal:
– (21, 7, 4 e 10)
– (22, 8, 3 e 9)
• Os cantos da matriz 3 × 3 superior esquerda (11, 21, 4 e 6)
• O mesmo para as outras matrizes 3 × 3:
– (8, 2, 23 e 9)
– (22, 12, 5 e 3)
– (1, 7, 10 e 24)
Por este conjunto enorme de simetrias, é fácil perceber que existem várias
transformações que podemos fazer na matriz, mas que mantém estas propri-
dades2 .
Vejamos algumas, não é difı́cil demonstrá-las, são consequência da asso-
ciatividade e comutatividade da adição:
• Rotações da matriz.
• Transposições (refletir pelas diagonais)
• Reflexão horizontal e vertical.
2
Toda simetria está ligada a um invariante. Esta é uma caracterı́stica fantástica para
a identificação (ou construção) das leis da Fı́sica. Procure ler sobre o Teorema de Noether

5
4 Construção do quadrado
Construir um quadrado mágico com estas propriedades é extremamente fácil,
embora pareça uma tarefa hercúlea. Se quisermos a matriz que tenha o
número N como invariante, basta calcular m = N −21 e preencher o esqueleto
abaixo:
11 8 m 2
m+1 1 12 7
4 m+2 6 9
5 10 3 m+3

5 O programa
Seu programa deverá perguntar o valor da invariante N que o usuário deseja
para o quadrado mágico. Não há restrições sobre este valor, mas suporemos
que seja um inteiro positivo não maior que 100.
Como resultado, o programa imprime o quadrado “padrão” que acabamos
de ver. Ademais, conforme opção a ser solicitada pelo usuário, o programa
gerará e imprimirá variantes obtidas através das transformações de simetria
descritas a seguir. Para isso, usaremos algumas funções auxiliares. Para
a geração do primeiro quadrado, basta calcular m e alterar uma matriz já
pronta. Depois, é só imprimir.

5.1 Transformações do quadrado


Faça diversas funções que executam cada uma das transformações de sime-
tria:

• Roda(matriz) — “vira” a matriz 90 graus para direita. A primeira


linha superior vira a última coluna, a segunda linha vira a terceira
coluna, etc.

• Transp1(matriz) — Transpõe a matriz segundo a diagonal principal.

• Transp2(matriz) — Transpõe a matriz segundo a diagonal secundária.

• InvH(matriz) — Reflete a matriz na horizontal.

• InvV(matriz) — Reflete a matriz na vertical.

6
Com estas funções, gere e imprima cada transformação. Depois de ge-
rar a primeira matriz, você deve apresentar um menu de opções para cada
transformação, por exemplo:

Escolha a operaç~
ao desejada:
0 - Sair
1 - Girar para direira
2 - Transpor pela diagonal principal
3 - Transpor pela diagonal secundária
4 - Refletir horizontalmente
5 - Refletir verticalmente

O programa fica em um laço, mostrando as matrizes transformadas. As


operações devem se compor, assim é possı́vel girar, transpor e girar nova-
mente; ou fazer dois giros para obter uma rotação de 180 graus.

6 Bônus
Criar as seguintes transformações adicionais:

• TrocaLinhas(matriz) — Troca as linhas 1 e 2 entre si e as linhas 3 e


4 entre si.

• TrocaColunas(matriz) — Troca as colunas 1 e 2 entre si e as colunas


3 e 4 entre si.

• TrocaInicio(matriz) — Troca as as linhas 1 e 2 entre si e as colunas


1 e 2 entre si.

• TrocaFim(matriz) — Troca as as linhas 3 e 4 entre si e as colunas 3


e 4 entre si.

Associá-las respectivamente às opções 6,7,8 e 9. Esta funcionalidade vale 1,5


pontos a mais na média de EPs.

7 Sobre a entrega
Sobre a entrega:

7
• Deverá ser entregue um arquivo nomeado EP2-<número USP>.

• No inı́cio do arquivo, acrescente um cabeçalho bem informativo, como


o seguinte:

#################################################
# MAC 115 - Introduç~
ao à Computaç~
ao
#
# IF-USP - Segundo Semestre de 2017
#
# <turma> - <nome do professor>
#
# <nome do(a) aluno(a)>
# <número USP>
#################################################

Não é obrigatório que o cabeçalho seja idêntico a esse, apenas que


contenha pelo menos as mesmas informações.

• Para a entrega, utilize o Paca. Você pode entregar várias versões de um


mesmo EP até o prazo, mas somente a última será armazenada pelo
sistema.

• Guarde uma cópia do seu EP pelo menos até o final do semestre!

8 Exemplo de execução
A seguir, temos um exemplo de execução:
Entre com a soma invariante da matriz: 34

11 8 13 2
14 1 12 7
4 15 6 9
5 10 3 16

Escolha a operaç~
ao desejada:
0 - Sair

8
1 - Girar para direira
2 - Transpor pela diagonal principal
3 - Transpor pela diagonal secundária
4 - Refletir horizontalmente
5 - Refletir verticalmente
1

5 4 14 11
10 15 1 8
3 6 12 13
16 9 7 2

Escolha a operaç~
ao desejada:
0 - Sair
1 - Girar para direira
2 - Transpor pela diagonal principal
3 - Transpor pela diagonal secundária
4 - Refletir horizontalmente
5 - Refletir verticalmente
2

5 10 3 16
4 15 6 9
14 1 12 7
11 8 13 2

Escolha a operaç~
ao desejada:
0 - Sair
1 - Girar para direira
2 - Transpor pela diagonal principal
3 - Transpor pela diagonal secundária
4 - Refletir horizontalmente
5 - Refletir verticalmente
3

2 7 9 16
13 12 6 3
8 1 15 10
11 14 4 5

9
Escolha a operaç~
ao desejada:
0 - Sair
1 - Girar para direira
2 - Transpor pela diagonal principal
3 - Transpor pela diagonal secundária
4 - Refletir horizontalmente
5 - Refletir verticalmente
4

11 14 4 5
8 1 15 10
13 12 6 3
2 7 9 16

Escolha a operaç~
ao desejada:
0 - Sair
1 - Girar para direira
2 - Transpor pela diagonal principal
3 - Transpor pela diagonal secundária
4 - Refletir horizontalmente
5 - Refletir verticalmente
5

5 4 14 11
10 15 1 8
3 6 12 13
16 9 7 2

Escolha a operaç~
ao desejada:
0 - Sair
1 - Girar para direira
2 - Transpor pela diagonal principal
3 - Transpor pela diagonal secundária
4 - Refletir horizontalmente
5 - Refletir verticalmente
0

Tchau!

10

Você também pode gostar