シツコク魔法陣を作っております(笑)
今回は,Javascript 編でございます
JavaScript の構文は,C言語のものとよく似ているので,コーディングには問題ないでしょう

このページ内に table を使って魔法陣を表示します

JavaScript の学びなおしは,オブジェクト指向を意識することと,フレームワーク特に jQuery の利用をメインにしていきます
加えて,Webページを動的に表示するためには,DOM(Document Object Model) の構造と操作を明確にしていく必要がありますから,このことはプログラミング全体を通じてやらなければなりません

さて,実際に作った魔法陣です
デフォルトでは3次の魔法陣を表示しています
セレクトボックスで次数を選択すると,選択に応じた次数の魔法陣に変わります

html と JavaScript

魔法陣を表示する部分の html ソースと JavaScript を下に示します

html
<div>
 <p><label for="dimSelect">魔法陣の次数の選択:</label>
  <select id="dimSelect" onchange="magicSquare();" style="width:100px; text-align:center;">
   <option value=3>3 X 3</option>
   <option value=5>5 X 5</option>
   <option value=7>7 X 7</option>
   <option value=9>9 X 9</option>
   <option value=11>11 X 11</option>
  </select>
 </p>
 <div id="ms"></div>
</div>

JavaScript
<script type="text/javascript">
window.addEventListener('load', magicSquare());
function magicSquare() {
 var dim = document.getElementById('dimSelect').value;
 var i, j;
 var tbl;
 var a = new Array(dim);
 for (i = 0; i < dim; i++) {
  a[i] = new Array(dim);
  for (j = 0; j < dim; j++) {
   a[i][j] = 0;
  }
 }
 i = dim - 1;
 j = (dim - 1) / 2;
 for (var num = 0; num < dim * dim; num++) {
  a[i][j] = num + 1;
  if (a[(i + 1) % dim][(j + 1) % dim] == 0) {
   i = (i + 1) % dim;
   j = (j + 1) % dim;
  } else {
   i = i - 1;
  }
 }
 tbl = '<table border="1" cellpadding="8" style="margin-left:4em;"><tbody>';
 for (i = 0; i > dim; i++) {
  tbl += '<tr>';
  for (j = 0; j < dim; j++) {
   tbl += '<td align="center">' + a[i][j] + '</td>';
  }
  tbl += '</td>';
 }
 tbl += '</tbody></table>'
 document.getElementById('ms').innerHTML = tbl;
}
</script>

Last modified: Wednesday, 16 March 2022, 5:09 PM