Desafio Matemático: Descubra o Mistério do Quadrado Mágico!

Um quadrado mágico é uma matriz quadrada em que a soma dos números em cada linha, coluna e diagonal principal é a mesma. Vamos criar um programa que verifica se uma matriz é um quadrado mágico. Prepare-se para exercitar seu pensamento lógico!

Começaremos definindo uma matriz 3×3, mas você pode adaptar para tamanhos diferentes se preferir. Por exemplo:

$matrix = [
    [2, 7, 6],
    [9, 5, 1],
    [4, 3, 8]
];


Claro! Vamos lá! Aqui está um desafio matemático diferente para você:

“Desafio Matemático: O Quadrado Mágico 🎩✨”

Um quadrado mágico é uma matriz quadrada em que a soma dos números em cada linha, coluna e diagonal principal é a mesma. Vamos criar um programa que verifica se uma matriz é um quadrado mágico. Prepare-se para exercitar seu pensamento lógico!

1️⃣ Começaremos definindo uma matriz 3×3, mas você pode adaptar para tamanhos diferentes se preferir. Por exemplo:

csharpCopy code$matrix = [
    [2, 7, 6],
    [9, 5, 1],
    [4, 3, 8]
];

Agora, vamos criar uma função chamada isMagicSquare() que receberá a matriz como parâmetro e verificará se ela é um quadrado mágico.

Primeiro, verificaremos se a matriz tem tamanho 3×3. Caso contrário, não poderá ser um quadrado mágico.

Em seguida, precisamos calcular a soma mágica, que é a soma esperada para todas as linhas, colunas e diagonais. No nosso caso, como é uma matriz 3×3, a soma mágica será 15.

Vamos criar variáveis para acompanhar a soma atual de linhas, colunas e diagonais e inicializá-las como 0.

Usando loops, percorreremos a matriz e adicionaremos cada valor à soma correspondente (linhas, colunas e diagonais).

Após percorrer a matriz, verificaremos se a soma de linhas, colunas e diagonais é igual à soma mágica. Se todas as somas forem iguais, teremos um quadrado mágico!

Por fim, retornaremos um valor booleano indicando se a matriz é um quadrado mágico ou não.

Desafio aceito? Experimente implementar o código e testar com diferentes matrizes. Desafie seus amigos a encontrarem quadrados mágicos também!

https://raw.githubusercontent.com/elzobrito/https—github.com-elzobrito-twitter_threads/main/src/MagicSquare.php

<?php

class MagicSquare
{
private $matrix;

public function __construct($matrix)
{
$this->matrix = $matrix;
}

public function isMagicSquare()
{
$size = count($this->matrix);

// Verifica se é uma matriz quadrada
if ($size !== count($this->matrix[0])) {
return false;
}

// Calcula a soma mágica
$magicSum = array_sum($this->matrix[0]);

// Verifica as somas de linhas, colunas e diagonais
for ($i = 0; $i < $size; $i ) {
$rowSum = array_sum($this->matrix[$i]);
$colSum = 0;

for ($j = 0; $j < $size; $j ) {
$colSum = $this->matrix[$j][$i];
}

if ($rowSum !== $magicSum || $colSum !== $magicSum) {
return false;
}
}

// Verifica a soma da diagonal principal
$diagonalSum = 0;
for ($i = 0; $i < $size; $i ) {
$diagonalSum = $this->matrix[$i][$i];
}
if ($diagonalSum !== $magicSum) {
return false;
}

// Verifica a soma da diagonal secundária
$diagonalSum = 0;
for ($i = 0; $i < $size; $i ) {
$diagonalSum = $this->matrix[$i][$size - 1 - $i];
}
if ($diagonalSum !== $magicSum) {
return false;
}

return true;
}
}

// Exemplo de uso:
$matrix = [
[4, 9, 2],
[3, 2, 7],
[8, 1, 6]
];

$magicSquare = new MagicSquare($matrix);
$isMagicSquare = $magicSquare->isMagicSquare();

if ($isMagicSquare) {
echo "É um quadrado mágico!";
} else {
echo "Não é um quadrado mágico.";
}
MagicSquare

Deixe um comentário