Programmeringsøvelse for Odd Magic Squares i Java

Det er uklart hvem som først kom med et magisk torg. Det er en historie om en enorm flom i Kina for lenge siden. Folket var bekymret for at de ville bli vasket bort og prøvde å berolige elveguden ved å ofre. Ingenting så ut til å fungere før et barn la merke til en skilpadde som hadde en magisk firkant på ryggen som fortsatte å sirkle om offeret. Plassen fortalte folket hvor stort offeret deres måtte være for å redde seg selv. Siden den gang har magiske firkanter vært høyden på mote for enhver kresne skilpadde.

I tilfelle du aldri har kommet over en før, er en magisk firkant et arrangement av sekvensielle tall i et kvadrat, slik at radene, kolonnene og diagonalene sammen legger opp til det samme tallet. For eksempel er et 3x3 magisk torg:

Denne programmeringsøvelsen er opptatt av å lage magiske firkanter i odde størrelser (dvs. størrelsen på kvadratet kan bare være et oddetall, 3x3, 5x5, 7x7, 9x9, og så videre). Trikset med å lage en slik firkant er å plassere nummer 1 i første rad og midtre kolonne. For å finne hvor du skal plassere neste nummer, flytter du diagonalt oppover til høyre (dvs. en rad opp, en kolonne på tvers). Hvis et slikt trekk betyr at du faller av torget, vikler du rundt til raden eller kolonnen på motsatt side. Til slutt, hvis flyttingen tar deg til en firkant som allerede er fylt, går du tilbake til den opprinnelige firkanten og beveger deg nedover med en. Gjenta prosessen til alle rutene er fylt.

instagram viewer

Nå fører diagonalen oppover til en firkant som allerede er fylt, så vi går tilbake dit vi kom fra og slipper ned en rad: