Guest User

Untitled

a guest
Jan 11th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.36 KB | None | 0 0
  1. /*jshint esversion: 6 */
  2. function magic(n){
  3. var arr = [],
  4. arrLength = n,
  5. placeholder,
  6. counter = 0,
  7. guard = true,
  8. baseArr,
  9. i,
  10. j,
  11. liczba = 0,
  12. dimension,
  13. arrOfUnwanted = [],
  14. k = 0;
  15.  
  16.  
  17. magicsum = (n * (Math.pow(n,2) + 1))/2;
  18. console.log(magicsum);
  19.  
  20. if (n % 4 === 0){
  21. dimension = n/4;
  22. for (i = 0; i < arrLength; i++) {
  23. arr[i] = [];
  24. for (j = 0; j < arrLength; j++) {
  25. arr[i][j] = ++liczba;
  26. }
  27. }
  28.  
  29. for (i = 0; i < arrLength; i++) {
  30. for (j = 0; j < arrLength; j++) {
  31. 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)) {
  32.  
  33. } else {
  34. arrOfUnwanted.push(arr[i][j]);
  35. arr[i][j] = 0;
  36. }
  37. }
  38. }
  39.  
  40. arrOfUnwanted.reverse();
  41.  
  42. for (i = 0; i < arrLength; i++) {
  43. for (j = 0; j < arrLength; j++) {
  44. if (arr[i][j] === 0) {
  45. arr[i][j] = arrOfUnwanted.shift();
  46. }
  47. }
  48. }
  49.  
  50. } else {
  51. for (i = 0; i < arrLength; i++) {
  52. arr[i] = [];
  53. for (j = 0; j < arrLength; j++) {
  54. arr[i][j] = n * (((i+1) + (j+1) - 1 + Math.floor(n/2)) % n) + (((i+1) + ((j+1)*2) - 2) % n) + 1;
  55. }
  56. }
  57. }
  58.  
  59. // arr = [
  60. // [1, 2, 15, 16],
  61. // [13, 14, 3, 4],
  62. // [12, 7, 10, 5],
  63. // [8, 11, 6, 9],
  64. // ];
  65.  
  66.  
  67. baseArr = arr.slice();
  68.  
  69.  
  70. if (n === 3){
  71. console.log(baseArr);
  72. return;
  73. }
  74.  
  75. console.log(baseArr);
  76.  
  77.  
  78. while(guard) {
  79. for (k = 0; k < n; k++) {
  80. placeholder = arr[k][0];
  81. arr[k][0] = arr[k][n-1];
  82. arr[k][n-1] = placeholder;
  83. }
  84. placeholder = arr[0];
  85. arr[0] = arr[n-1];
  86. arr[n-1] = placeholder;
  87. counter++;
  88. if (JSON.stringify(baseArr) === JSON.stringify(arr)) {
  89. guard = false;
  90. console.log(counter + " solutions");
  91. }
  92.  
  93. console.log("");
  94. console.log(arr);
  95.  
  96. for (k = 0; k < n; k++) {
  97. placeholder = arr[k][0];
  98. arr[k][0] = arr[k][1];
  99. arr[k][1] = placeholder;
  100. placeholder = arr[k][n-1];
  101. arr[k][n-1] = arr[k][n-2];
  102. arr[k][n-2] = placeholder;
  103. }
  104. placeholder = arr[0];
  105. arr[0] = arr[1];
  106. arr[1] = placeholder;
  107. placeholder = arr[n-1];
  108. arr[n-1] = arr[n-2];
  109. arr[n-2] = placeholder;
  110. counter++;
  111.  
  112.  
  113. if (counter === 4 ){
  114. guard = false;
  115. }
  116.  
  117. console.log("");
  118. console.log(arr);
  119.  
  120. }
  121. }
  122.  
  123. magic(5);
Advertisement
Add Comment
Please, Sign In to add comment