You cannot see this page without javascript.

Magic Square (마방진) - java script source

Programing 조회 수 2645 추천 수 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 조회 수
369 Windows7 OEM을 활용하여 클린설치 file [11] LynX 2010-11-06 765
368 Windows7 에서 시스템을 백업/복원하는 가장 쉬운 방법!! file LynX 2010-11-07 334
367 탐색기 메뉴에 '명령 프롬프트 열기'와 '메모장으로 열기' 추가하기 file [14] LynX 2010-11-08 591
366 인터넷 익스플로러 리플레쉬 file LynX 2011-05-02 286
365 활성 네트워크 중복으로 인한 인터넷 연결 안되는 문제 file [12] LynX 2011-05-26 971
364 32bit Driver을 64bi로 설치하기 [8] LynX 2011-06-21 325
363 설치파일(inf)에 대한 이해 [7] LynX 2011-06-22 603
362 inf 설치시 경고창 안뜨게 하기 file [10] LynX 2011-06-22 430
361 로우 포맷(Low level format, 저수준 포맷) 하기 file [11] LynX 2011-07-06 722
360 Win XP Crack file [8] LynX 2011-10-31 269
359 윈도우7 메모리 인식 문재 file [13] LynX 2011-11-30 530
358 RoundCube 첨부 용량 변경 / 한글 수정 [10] LynX 2012-01-31 836
357 윈도우7 알수없는장치 file [8] LynX 2012-03-13 273
356 디지털 서명 file [1] LynX 2012-03-15 445
355 아레한글 사용시 출력물에 음영이 나타나는 현상. file [11] LynX 2012-03-29 1155
354 Xyview DVR서버 연결 [8] LynX 2012-04-19 295
353 HP Officejet 6500A (Plus) 호환 드라이버 [8] LynX 2012-05-16 294
352 IIS에 FastCgi모듈 활성화 시키기 file [12] LynX 2012-11-21 1283
351 윈도우 2008서버에 XE 설치 절차 [9] LynX 2012-11-22 230
350 Windows Server 2012 설치 file LynX 2012-11-23 477

XE Login