var scale; var magic; var shadow; var MAX = 20; var MIN = 3; var allstep = 0; var mystep = 0; var MaxStep = 100000; function BackShadow() { var i, j; for(i=0; i startj - k + 1; -- j) { tmp = magic[i][j]; magic[i][j] = magic[i + n/2][j]; BackShadow(); shadow[++allstep][i][j] = magic[i][j]; magic[i + n/2][j] = tmp; BackShadow(); shadow[++allstep][i + n/2][j] = magic[i + n/2][j]; } } } //Check input whether legal and calculate function GetMagic(n) { if(n > MAX || n < MIN) { alert("The scale must be %d--%d!\n", MIN, MAX); return; } InitMagic(n); if(n % 2 == 1) OddMagic(0, 0, 1, n); else if(n % 4 == 0) DoubleEvenMagic(n); else SingleEvenMagic(n); }