Den symmetriska magiska torget (1 / 1 steg)
Steg 1: Den symmetriska magiska torget
Det finns många sätt att bygga en magiska sqaure, men jag kommer bara visa dig min.
Villkor: 2D matrisen måste vara större än 3 och alltid vara udda i storlek.
Funktion:
f(y) = 2 * x mod storlek
ELLER
För x = 0 till Size-1
Matrix ((OffsetX + x) mod storlek, (OffsetY + 2 * x) mod storlek) = Nr
Nästa
Nu vi har en magisk kvadrat, men är inte symmetrisk eller koncentriska, så vi rotera matrisen 180 grader och lägg dem tillsammans.
För x = 0 till storlek - 1
För y = 0 till storlek - 1
Matrix(x,y) = Matrix(x,y) + Matrix (storlek - x - 1, storlek - y - 1)
Nästa
Nästa
Sedan vi spegla den ursprungliga matrisen och lägga till ovanstående adderas.
För x = 0 till storlek - 1
För y = 0 till storlek - 1
Matrix(x,y) = Matrix(x,y) + Matrix (storlek - x - 1, y)
Nästa
Nästa
Resultatet är en symmetrisk magisk kvadrat.
Du kan köra en ny f(y) = 2 x * mod storlek ovanpå den gamla matris och sedan upprepa 180 grader och spegel drift för evigt.
Matris av samma storlek med samma verksamhet tillämpas kan läggas till eller subtrahera från varandras. Multplied eller dividerat med en konstant och kommer fortfarande vara symmetrisk magiska kvadrater.
Hämta min Visual Basic 2010 program och källa koden till lek runt omkring.