Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*jshint esversion: 6 */
- function magic(n){
- var arr = [],
- arrLength = n,
- placeholder,
- counter = 0,
- guard = true,
- baseArr,
- i,
- j,
- liczba = 0,
- dimension,
- arrOfUnwanted = [],
- k = 0;
- magicsum = (n * (Math.pow(n,2) + 1))/2;
- console.log(magicsum);
- if (n % 4 === 0){
- dimension = n/4;
- for (i = 0; i < arrLength; i++) {
- arr[i] = [];
- for (j = 0; j < arrLength; j++) {
- arr[i][j] = ++liczba;
- }
- }
- for (i = 0; i < arrLength; i++) {
- for (j = 0; j < arrLength; j++) {
- if ((j < dimension && i < dimension) || (j < dimension && i >= n - dimension) || (j >= n - dimension && i < dimension) || (j >= n - dimension && i >= n - dimension) || (j >= dimension && j<n-dimension && i>= dimension && i < n - dimension)) {
- } else {
- arrOfUnwanted.push(arr[i][j]);
- arr[i][j] = 0;
- }
- }
- }
- arrOfUnwanted.reverse();
- for (i = 0; i < arrLength; i++) {
- for (j = 0; j < arrLength; j++) {
- if (arr[i][j] === 0) {
- arr[i][j] = arrOfUnwanted.shift();
- }
- }
- }
- } else {
- for (i = 0; i < arrLength; i++) {
- arr[i] = [];
- for (j = 0; j < arrLength; j++) {
- arr[i][j] = n * (((i+1) + (j+1) - 1 + Math.floor(n/2)) % n) + (((i+1) + ((j+1)*2) - 2) % n) + 1;
- }
- }
- }
- // arr = [
- // [1, 2, 15, 16],
- // [13, 14, 3, 4],
- // [12, 7, 10, 5],
- // [8, 11, 6, 9],
- // ];
- baseArr = arr.slice();
- if (n === 3){
- console.log(baseArr);
- return;
- }
- console.log(baseArr);
- while(guard) {
- for (k = 0; k < n; k++) {
- placeholder = arr[k][0];
- arr[k][0] = arr[k][n-1];
- arr[k][n-1] = placeholder;
- }
- placeholder = arr[0];
- arr[0] = arr[n-1];
- arr[n-1] = placeholder;
- counter++;
- if (JSON.stringify(baseArr) === JSON.stringify(arr)) {
- guard = false;
- console.log(counter + " solutions");
- }
- console.log("");
- console.log(arr);
- for (k = 0; k < n; k++) {
- placeholder = arr[k][0];
- arr[k][0] = arr[k][1];
- arr[k][1] = placeholder;
- placeholder = arr[k][n-1];
- arr[k][n-1] = arr[k][n-2];
- arr[k][n-2] = placeholder;
- }
- placeholder = arr[0];
- arr[0] = arr[1];
- arr[1] = placeholder;
- placeholder = arr[n-1];
- arr[n-1] = arr[n-2];
- arr[n-2] = placeholder;
- counter++;
- if (counter === 4 ){
- guard = false;
- }
- console.log("");
- console.log(arr);
- }
- }
- magic(5);
Advertisement
Add Comment
Please, Sign In to add comment