JavaScript
1var n = parseInt(process.argv[2],10); 2 3var square = []; 4 5for(var i = 0; i < n; i++){ 6 square.push(new Array(n)); 7} 8 9var max = n * n; 10 11var count = n; 12var cnt = 0; 13var x = 1; 14var middle = Math.floor(n/2); 15square[0][Math.floor(n/2)] = 1; 16 17for(var s = 2; s <= max; s++){ 18 count1 = count; 19 cnt1 = cnt; 20 count--; 21 cnt--; 22 if(count=== -1){ 23 count = n-1; 24 } 25 if(middle+cnt === -1){ 26 cnt = n - middle -1; 27 } 28 29 if(square[count][middle+cnt] === undefined){ 30 square[count][middle+cnt] = s; 31 }else{ 32 if(count1 === -1){ 33 count1 = n; 34 } 35 if (middle+cnt1+1 === n) { 36 cnt1 = middle - n; 37 } 38 square[count1][middle+cnt1+1] = s; 39 count = count1; 40 cnt = cnt1+1; 41 } 42 43 44} 45console.dir(square); 46
縦横がそれぞれ奇数個の魔法陣を解くコードを書きました。多分これで合ってると思うのですが、こここうしたらもっと良くなりそう!!などの修正点あったら教えてください。
node ◯◯.js 奇数 で実行
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。