Een magisch vierkant is een vierkant rooster met \(n\) rijen en \(n\) kolommen. Het bevat \(n^2\) verschillende natuurlijke getallen (in deze oefening zijn dit de getallen \(1\) tot \(n^2\)). De \(n\) rijen, \(n\) kolommen, de hoofddiagonaal en de nevendiagonaal hebben allemaal dezelfde som. Hieronder wordt een magisch vierkant van orde 4 weergegeven. De som van de rijen, kolommen en diagonalen is steeds gelijk aan 34.
\[\begin{bmatrix} 16 & 3 & 2 & 13 \\ 5 & 10 & 11 & 8 \\ 9 & 6 & 7 & 12 \\ 4 & 15 & 14 & 1 \\ \end{bmatrix}\]In deze oefening ontwerp je een programma dat nagaat of een gegeven twee-dimensionale array een magisch vierkant is. Hiervoor schrijf je de volgende methoden in een klasse genaamd Rooster:
Een constructor Rooster(int[][] vk)
, waaraan de gebruiker een
twee-dimensionale array aan mee geeft.
isVierkant()
test of de twee-dimensionale array een vierkant voorstelt.
verschillend()
gaat na of alle elementen verschillend zijn of dus dat alle
getallen van \(1\) tot \(n^2\) exact één keer voorkomen in het rooster.
rijsom(int r)
berekent de som van de \(r\)-de rij van het rooster.
kolomsom(int k)
berekent de som van de \(k\)-de kolom van het rooster.
diagonaalsom()
berekent de som van de elementen op de hoofddiagonaal van
een vierkant rooster.
nevendiagonaalsom()
berekent de som van de elementen op de nevendiagonaal
van een vierkant rooster.
isMagischVierkant()
test het rooster een magisch vierkant is. Hiervoor kan
je al de vorige methoden gebruiken.
Test elke stap van dit programma. Je kan een twee-dimensionale array aanmaken in het code pad van BlueJ. Dit object kan je vervolgens opvragen en toevoegen aan de objectenbank.