You cannot see this page without javascript.

Magic Square (마방진) - java script source

Programing 조회 수 2402 추천 수 0 2016.07.18 11:23:49

지난법 까지 했던 마방진 풀이법들을 종합하여 내가 짠 소스를 개시하려 한다.

서버환경이 php를 지원하지 못할 경우를 위하여 스크립트 소스를 공개 한다.

다음의 코드가 스크립트 소스이다.

 

<html>
<head>
<title>
</title>
<SCRIPT LANGUAGE="JavaScript">
function magicsquare()
{
 var square = Number(document.magic.square.value);
 var i = 0;
 var j = 0;
 var k = 0;
 var sq = new Array(square);
 for ( k = 0 ; k < square ; k++ )
 {
  sq[k] = new Array(square);
 }
 function table()
 {
  var sum = 0;
  for ( i=0 ; i < square ; i++ )
  {
   sum = sum + sq[i][square-i-1] ;
  }
  document.write('<p align="center"><table border=1 style="border-collapse:collapse;"><tr><td colspan='+square+' align="center">'+square+'차</td><td align="center">'+sum+'</td></tr><tr><td rowspan='+square+' colspan='+square+' align="center"><table width=100% border=1 style="border-collapse:collapse;">');
  for ( i=0 ; i < square ; i++ )
  {
   document.write('<tr>');
   for ( j=0 ; j < square ; j++ )
   {
    document.write('<td align="center" width='+(100/square)+'%>'+sq[i][j]+'</td>');
   }
   document.write('</tr>');
  }
  document.write('</table></td>');
  for ( i=0 ; i < square ; i++ )
  {
   document.write('<td align="center">');
   sum = 0 ;
   for ( j=0 ; j < square ; j++ )
   {
    sum = sum + sq[i][j] ;
   }
   document.write(sum+'</td></tr><tr>');
  }
  for ( i=0 ; i < square ; i++ )
  {
   document.write('<td align="center">');
   sum = 0 ;
   for ( j=0 ; j < square ; j++ )
   {
    sum = sum + sq[j][i] ;
   }
   document.write(sum+'</td>');
  }
  document.write('<td align="center">');
  sum = 0 ;
  for ( i=0 ; i < square ; i++ )
  {
   sum = sum + sq[i][i] ;
  }
  document.write(sum+'</td></tr></table></p>');
 }
 if( square <= 2 )
 {
  document.getElementById("inhere").innerHTML = '<p align="center">3이상의 숫자를 입력하여 주세요!</p>';
 }
 else
 {
  if ( square%2 == 1 )
  {
   i = (square-1)/2 + 1 ;
   j = (square-1)/2 ;
   for( k = 1 ; k <= (square*square) ; k++ )
   {
    sq[i][j] = k ;
    if ( k % square == 0 )
    {
     i = i + 2 ;
    }
    else
    {
     i++ ;
     j++ ;
    }
    if ( i >= square )
    {
     i = i - square ;
    }
    else
    {
     if ( j >= square )
     {
      j = j - square ;
     }
     else
     {
     }
    }
   }
  }
  else
  {
   if ( square%4 == 0 )
   {
    k = 1 ;
    for ( i=0 ; i < square ; i++ )
    {
     for ( j=(square-1) ; j >= 0 ; j-- )
     {
      if (((i%4 == 1) || (i%4 == 2)) ^ ((j%4 == 1) || (j%4 == 2)))
      {
       sq[i][j] = square*square-k+1 ;
      }
      else
      {
       sq[i][j] = k ;
      }
      k++ ;
     }
    }
   }
   else
   {
    k = 1 ;
    for ( i=0 ; i < square ; i++ )
    {
     for ( j=(square-1) ; j >= 0 ; j-- )
     {
      if ((i == j ) || (i+j+1 == square))
      {
       sq[i][j] = k ;
      }
      else
      {
       if ((((i+j)%2 == 0) && (((i+j >= square) && (j < square/2)) || ((i-j > 0) && (i < square/2) && (i > 2)) || ((j-i > 0) && (i >= square/2)) || ((i+j < square) && (j >= square/2) && (i > 1)))) || (((i+j)%2 == 1) && (((i+j < square) && (i >= square/2)) || ((j-i > 0) && (j < square/2) && (i > 1)) || ((i-j > 0) && (j >= square/2)) || ((i+j > square) && (i < square/2) && (i > 2)))))
       {
        sq[i][j] = square*square-k+square-j*2 ;
       }
       else
       {
        if ((((i+j)%2 == 0) && (((j-i > 0) && (j < square/2)) || ((i+j >= square) && (i < square/2) && (j < square-2)) || ((i+j < square) && (i >= square/2)) || ((i-j > 0) && (j >= square/2) && (j < square-3)))) || (((i+j)%2 == 1) && (((i-j > 0) && (i < square/2)) || ((i+j < square) && (j >= square/2) && (j < square-3)) || ((i+j >= square) && (j < square/2)) || ((j-i > 0) && (i >= square/2) && (j < square-2)))))
        {
         sq[i][j] = (i*2+1)*square-k+1 ;
        }
        else
        {
         sq[i][j] = square*square-k+1 ;
        }
       }
      }
      k++ ;
     }
    }
   }
  }
  document.write('<p align="center">제 '+square+'차 완전마방진!</p><p align="center">한 구역의 합은 '+((square*square+1)*square/2)+'입니다.')
  table();
 }
}
</SCRIPT>
</head>
<body>
<form name="magic">
<p align="center">
<table>
<tr>
<td align="center">
제 <input type="text" name="square" size="10" maxlength="10" onkeydown="javascript:if(event.keyCode ==13) {magicsquare();return false;}" />차 완전마방진 <input type="button" id="btn" value="만들기" onClick="javascript:magicsquare();" />
</td>
</tr>
</table>
</p>
</form>
</body>
</html> 

 

태그
엮인글 :
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
309 Server Windows에서 Apache 2.x, Tomcat 7.x 연동 후 가상호스트를 이용하여 서비스하기 LynX 2014-06-10 1676
308 Programing Magic Square (마방진) - php source code LynX 2016-07-21 1663
307 CentOS7 ▒ Doly의 CentOS7 강좌16 6. CentOS 네트워크 1 - 개념, 2 - 이더넷 설정 file [1] LynX 2014-10-23 1655
306 CentOS CentOS7 mono 설치 LynX 2016-12-30 1623
305 Server 서버관리/운용지침 메뉴얼 LynX 2016-05-20 1602
304 Server DNS [25] LynX 2015-07-16 1596
303 Network pka파일 만드는 방법 file LynX 2016-10-24 1593
302 Linux centOS FTP서버 구축 file LynX 2014-07-03 1592
301 Programing Magic Square (마방진) - 마방진코드와 나의 생각 03 LynX 2016-08-09 1564
300 Programing Magic Square (마방진) - 마방진코드와 나의 생각 02 LynX 2016-08-09 1552
299 Xpress Engine xe 현재접속과 로그인 수 표시 addon 1.3.0 file LynX 2016-09-22 1522
298 Windows XP XP 원본 이미지에 AHCI 드라이버 통합 file [6] LynX 2013-06-20 1499
297 Xpress Engine 현재접속과 로그인 수 표시 addon file LynX 2016-09-10 1476
296 CentOS centos7 gcc-4.9.2 compile install LynX 2017-01-25 1450
295 APM ext zip install LynX 2019-02-19 1435
294 APM php opcache 설치 file LynX 2016-10-14 1423
293 CentOS APM 소스설치 rev.2 LynX 2016-05-26 1418
292 Linux Xming 으로 X-Window 원격 접속 하기 LynX 2014-07-07 1417
291 Linux 부트 시스템 만들기 [10] LynX 2015-01-05 1341
290 PHP, Wincache를 포함해 IIS에서 XE를 설정하는 방법 file [13] LynX 2012-12-15 1281

XE Login