Carrés magiques étranges à Java

homme travaillant à l

skynesher/E+/Getty Images





On ne sait pas qui a inventé le premier un carré magique. Il y a longtemps, il y a une histoire sur une énorme inondation en Chine. Les gens craignaient d'être emportés et essayaient d'apaiser le dieu du fleuve en faisant des sacrifices. Rien ne semblait fonctionner jusqu'à ce qu'un enfant remarque une tortue arborant un carré magique sur son dos qui continuait d'encercler le sacrifice. La place a dit aux gens à quel point leur sacrifice devait être important pour se sauver. Depuis lors, les carrés magiques sont à la mode pour toute tortue exigeante.

Niveau: Débutant



Se concentrer: Logique, Tableaux , Méthodes

Carrés magiques impairs

Au cas où vous n'en auriez jamais rencontré auparavant, un carré magique est un arrangement de nombres séquentiels dans un carré de sorte que les lignes, les colonnes et les diagonales totalisent toutes le même nombre. Par exemple, un carré magique 3x3 est :



|__+_||_+_|
|__+_|
|__+_|

Chaque ligne, colonne et diagonale totalise 15.

Question sur les carrés magiques impairs

Cet exercice de programmation concerne la création de carrés magiques de taille impaire (c'est-à-dire que la taille du carré ne peut être qu'un nombre impair, 3x3, 5x5, 7x7, 9x9, etc.). L'astuce pour créer un tel carré est de placer le chiffre 1 dans la première rangée et la colonne du milieu. Pour trouver où placer le numéro suivant, déplacez-vous en diagonale vers le haut vers la droite (c'est-à-dire une ligne vers le haut, une colonne vers le haut). Si un tel mouvement signifie que vous tombez du carré, enroulez-vous vers la ligne ou la colonne du côté opposé. Enfin, si le mouvement vous amène sur une case déjà remplie, revenez sur la case d'origine et descendez d'une unité. Répétez le processus jusqu'à ce que tous les carrés soient remplis.

Par exemple, un carré magique 3x3 commencerait ainsi :

|__+_||_+_|
|__+_|
|__+_|

Un déplacement en diagonale vers le haut signifie que nous nous enroulons vers le bas du carré :



|__+_||_+_|
|__+_|
|__+_|

De même, le prochain mouvement diagonal vers le haut signifie que nous retournons à la première colonne :

|__+_||_+_|
|__+_|
|__+_|

Maintenant, le déplacement en diagonale vers le haut donne un carré déjà rempli, nous revenons donc d'où nous venons et descendons une ligne :



|__+_||_+_|
|__+_|
|__+_|

et cela continue encore et encore jusqu'à ce que toutes les cases soient pleines.

Exigences du programme

  • un utilisateur doit pouvoir saisir la taille du carré magique.
  • ils ne doivent être autorisés à entrer qu'en nombre impair.
  • utiliser une méthode pour créer le carré magique.
  • utiliser une méthode pour afficher le carré magique.

La question est de savoir si votre programme peut créer un carré magique 5x5 comme celui ci-dessous ?



|__+_||_+_|
|__+_|
|__+_|
|__+_|
|__+_|

Indice: Outre les aspects de programmation de cet exercice, c'est aussi un test de logique. Prenez chaque étape de la création du carré magique à tour de rôle et découvrez comment cela peut être fait avec un tableau à deux dimensions .

Solution du carré magique impair

Ton programme aurait dû être capable de créer le carré magique 5x5 ci-dessous :



|__+_||_+_|
|__+_|
|__+_|
|__+_|
|__+_|

Voici ma version :

|__+_||_+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|
|__+_|