<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=MagicSquare%2F%EC%9E%AC%EB%8F%99</id>
	<title>MagicSquare/재동 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=MagicSquare%2F%EC%9E%AC%EB%8F%99"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MagicSquare/%EC%9E%AC%EB%8F%99&amp;action=history"/>
	<updated>2026-05-14T23:13:12Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=MagicSquare/%EC%9E%AC%EB%8F%99&amp;diff=84637&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0002 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MagicSquare/%EC%9E%AC%EB%8F%99&amp;diff=84637&amp;oldid=prev"/>
		<updated>2026-03-27T00:16:08Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0002 pages from live compare&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.zeropage.org/index.php?title=MagicSquare/%EC%9E%AC%EB%8F%99&amp;amp;diff=84637&amp;amp;oldid=34589&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=MagicSquare/%EC%9E%AC%EB%8F%99&amp;diff=34589&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=MagicSquare/%EC%9E%AC%EB%8F%99&amp;diff=34589&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 마방진 ==&lt;br /&gt;
=== 고치기 전 소스 ===&lt;br /&gt;
 ~cpp MagicSquare.py&lt;br /&gt;
 import unittest&lt;br /&gt;
 &lt;br /&gt;
 class MagicSquareTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.magicSquare = MagicSquare()&lt;br /&gt;
         self.magicSquare.setBoard(3)&lt;br /&gt;
         &lt;br /&gt;
     def testCreation(self):&lt;br /&gt;
         self.assert_(self.magicSquare)&lt;br /&gt;
         &lt;br /&gt;
     def testInitializeBoard(self):&lt;br /&gt;
         board = [[-1,-1,-1,-1],[0,0,0,-1],[0,0,0,-1],[0,0,0,-1]]&lt;br /&gt;
         self.assertEquals(board,self.magicSquare.getBoard())&lt;br /&gt;
         &lt;br /&gt;
     def testBoard_3by3(self):&lt;br /&gt;
         self.magicSquare.calculBoard()&lt;br /&gt;
         board = [[-1,-1,-1,-1],[8,1,6,-1],[3,5,7,-1],[4,9,2,-1]]&lt;br /&gt;
         self.assertEquals(board,self.magicSquare.getBoard())&lt;br /&gt;
 &lt;br /&gt;
     def testBoard_5by5(self):&lt;br /&gt;
         self.magicSquare.setBoard(5)&lt;br /&gt;
         self.magicSquare.calculBoard()&lt;br /&gt;
         board = [[-1,-1,-1,-1,-1,-1],[17,24,1,8,15,-1],[23,5,7,14,16,-1],\&lt;br /&gt;
                  [4,6,13,20,22,-1],[10,12,19,21,3,-1],[11,18,25,2,9,-1]]&lt;br /&gt;
         self.assertEquals(board,self.magicSquare.getBoard())&lt;br /&gt;
 &lt;br /&gt;
 class MagicSquare:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.boardLength = 0&lt;br /&gt;
         self.count = 1&lt;br /&gt;
         &lt;br /&gt;
     def setBoard(self,arg):&lt;br /&gt;
         self.boardLength = arg&lt;br /&gt;
         self.createBoard()&lt;br /&gt;
         self.initializeBoard()&lt;br /&gt;
     &lt;br /&gt;
     def createBoard(self):&lt;br /&gt;
         self.board = []&lt;br /&gt;
         for i in range(self.boardLength+1):&lt;br /&gt;
             self.board.append([])&lt;br /&gt;
             for j in range(self.boardLength+1):&lt;br /&gt;
                     self.board[i].append(0)&lt;br /&gt;
 &lt;br /&gt;
     def initializeBoard(self):&lt;br /&gt;
         for i in range(self.boardLength+1):&lt;br /&gt;
             for j in range(self.boardLength+1):&lt;br /&gt;
                 self.board[i][j] = 0&lt;br /&gt;
                 self.board[i][self.boardLength] = -1&lt;br /&gt;
             self.board[0][i] = -1&lt;br /&gt;
                                 &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
     &lt;br /&gt;
     def calculBoard(self):&lt;br /&gt;
         row = 1&lt;br /&gt;
         col = self.boardLength / 2&lt;br /&gt;
         self.moveBoard(row,col)&lt;br /&gt;
         while self.count != self.boardLength*self.boardLength+1:&lt;br /&gt;
             row -= 1&lt;br /&gt;
             col += 1&lt;br /&gt;
             if row &amp;amp;lt; 1 and col &amp;amp;gt; self.boardLength-1:&lt;br /&gt;
                 row += 2&lt;br /&gt;
                 col -= 1&lt;br /&gt;
             elif row &amp;amp;lt; 1:&lt;br /&gt;
                 row = self.boardLength&lt;br /&gt;
             elif col &amp;amp;gt; self.boardLength-1:&lt;br /&gt;
                 col = 0&lt;br /&gt;
             elif self.board[row][col] != 0:&lt;br /&gt;
                 row += 2&lt;br /&gt;
                 col -= 1&lt;br /&gt;
             &lt;br /&gt;
             self.moveBoard(row,col)&lt;br /&gt;
         &lt;br /&gt;
     def moveBoard(self,row,col):&lt;br /&gt;
         self.board[row][col] = self.count&lt;br /&gt;
         self.count+=1&lt;br /&gt;
         &lt;br /&gt;
     def printBoard(self):&lt;br /&gt;
         for i in range(1,self.boardLength+1):&lt;br /&gt;
             for j in range(self.boardLength):&lt;br /&gt;
                 print self.board[i][j],&amp;quot;\t&amp;quot;,&lt;br /&gt;
             print&lt;br /&gt;
             &lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
     #unittest.main()&lt;br /&gt;
     magicSquare = MagicSquare()&lt;br /&gt;
     input = int(raw_input(&amp;#039;Input(odd number): &amp;#039;))&lt;br /&gt;
     if input % 2 == 1:&lt;br /&gt;
         magicSquare.setBoard(input)&lt;br /&gt;
         magicSquare.calculBoard()&lt;br /&gt;
         magicSquare.printBoard()&lt;br /&gt;
     else:&lt;br /&gt;
         print &amp;#039;Input must be odd number&amp;#039;&lt;br /&gt;
=== 고친 후의 소스 ===&lt;br /&gt;
 ~cpp MagicSquare_2.py&lt;br /&gt;
 import unittest&lt;br /&gt;
 &lt;br /&gt;
 class MagicSquareTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         self.magicSquare = MagicSquare()&lt;br /&gt;
         self.magicSquare.setBoard(3)&lt;br /&gt;
             &lt;br /&gt;
     def testCreateMagicSquare(self):&lt;br /&gt;
         self.assert_(self.magicSquare)&lt;br /&gt;
         &lt;br /&gt;
     def testInitializeBoard(self):&lt;br /&gt;
         expectBoard = [[0,0,0],[0,0,0],[0,0,0]]&lt;br /&gt;
         self.assertEquals(expectBoard,self.magicSquare.getBoard())&lt;br /&gt;
     &lt;br /&gt;
     def testBoard_3by3(self):&lt;br /&gt;
         expectBoard = [[8,1,6],[3,5,7],[4,9,2]]&lt;br /&gt;
         self.magicSquare.moveBoard()&lt;br /&gt;
         self.assertEquals(expectBoard,self.magicSquare.getBoard())&lt;br /&gt;
 &lt;br /&gt;
     def testBoard_5by5(self):&lt;br /&gt;
         expectBoard = [[17,24,1,8,15],[23,5,7,14,16],[4,6,13,20,22],[10,12,19,21,3],[11,18,25,2,9]]&lt;br /&gt;
         self.magicSquare.setBoard(5)&lt;br /&gt;
         self.magicSquare.moveBoard()&lt;br /&gt;
         self.assertEquals(expectBoard,self.magicSquare.getBoard())&lt;br /&gt;
 &lt;br /&gt;
 class CounterTestCase(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         expectBoard = [[0,0,0],[0,0,0],[0,0,0]]&lt;br /&gt;
         self.counter = Counter()&lt;br /&gt;
         boardLength = 3&lt;br /&gt;
         self.counter.setBoard(expectBoard,boardLength)&lt;br /&gt;
     &lt;br /&gt;
     def testCreateCounter(self):&lt;br /&gt;
         self.assert_(self.counter)&lt;br /&gt;
         &lt;br /&gt;
     def testSetBoard(self):&lt;br /&gt;
         expectBoard = [[0,0,0],[0,0,0],[0,0,0]]&lt;br /&gt;
         self.assertEquals(expectBoard,self.counter.getBoard())&lt;br /&gt;
         &lt;br /&gt;
     def testWriteFirstCell(self):&lt;br /&gt;
         expectBoard = [[0,1,0],[0,0,0],[0,0,0]]&lt;br /&gt;
         self.counter.writeFirstCell()&lt;br /&gt;
         self.assertEquals(expectBoard,self.counter.getBoard())&lt;br /&gt;
         &lt;br /&gt;
     def testWriteNextCell(self):&lt;br /&gt;
         expectBoard = [[0,1,0],[3,0,0],[4,0,2]]&lt;br /&gt;
         self.counter.writeFirstCell()&lt;br /&gt;
         for i in range(3):&lt;br /&gt;
             self.counter.writeNextCell()&lt;br /&gt;
         self.assertEquals(expectBoard,self.counter.getBoard())&lt;br /&gt;
 &lt;br /&gt;
 class Counter:&lt;br /&gt;
     def setBoard(self,board,boardLength):&lt;br /&gt;
         self.board = board&lt;br /&gt;
         self.boardLength =boardLength&lt;br /&gt;
         self.count = 1&lt;br /&gt;
         &lt;br /&gt;
     def writeFirstCell(self):&lt;br /&gt;
         self.row = 0&lt;br /&gt;
         self.col = self.boardLength / 2&lt;br /&gt;
         self.writeCell()&lt;br /&gt;
         &lt;br /&gt;
     def writeNextCell(self):&lt;br /&gt;
         self.moveUpRight()&lt;br /&gt;
         if self.isOutOfUpAndRight():&lt;br /&gt;
             self.moveDown()    &lt;br /&gt;
         elif self.isOutOfUp():&lt;br /&gt;
             self.movePassUp()    &lt;br /&gt;
         elif self.isOutOfRight():&lt;br /&gt;
             self.movePassRight()&lt;br /&gt;
         elif self.isObstacle():&lt;br /&gt;
             self.moveDown()&lt;br /&gt;
         self.writeCell()&lt;br /&gt;
         &lt;br /&gt;
     def isOutOfUpAndRight(self):&lt;br /&gt;
         return self.row &amp;amp;lt; 0 and self.col &amp;amp;gt; self.boardLength - 1&lt;br /&gt;
     &lt;br /&gt;
     def isOutOfUp(self):&lt;br /&gt;
         return self.row &amp;amp;lt; 0&lt;br /&gt;
     &lt;br /&gt;
     def isOutOfRight(self):&lt;br /&gt;
         return self.col &amp;amp;gt; self.boardLength - 1&lt;br /&gt;
     &lt;br /&gt;
     def isObstacle(self):&lt;br /&gt;
         return self.board[self.row][self.col] != 0&lt;br /&gt;
     &lt;br /&gt;
     def moveUpRight(self):&lt;br /&gt;
         self.row -= 1&lt;br /&gt;
         self.col += 1&lt;br /&gt;
         &lt;br /&gt;
     def moveDown(self):&lt;br /&gt;
         self.row += 2&lt;br /&gt;
         self.col -= 1&lt;br /&gt;
         &lt;br /&gt;
     def movePassUp(self):&lt;br /&gt;
         self.row = self.boardLength - 1&lt;br /&gt;
         &lt;br /&gt;
     def movePassRight(self):&lt;br /&gt;
         self.col = 0&lt;br /&gt;
     &lt;br /&gt;
     def writeCell(self):&lt;br /&gt;
         self.board[self.row][self.col] = self.count&lt;br /&gt;
         self.count += 1&lt;br /&gt;
         &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
             &lt;br /&gt;
 class MagicSquare:&lt;br /&gt;
     def __init__(self):&lt;br /&gt;
         self.counter = Counter()&lt;br /&gt;
         self.boardLength = 0&lt;br /&gt;
         &lt;br /&gt;
     def setBoard(self,arg):&lt;br /&gt;
         self.boardLength = arg&lt;br /&gt;
         self.createBoard()&lt;br /&gt;
         self.initializeBoard()&lt;br /&gt;
         &lt;br /&gt;
     def createBoard(self):&lt;br /&gt;
         self.board=[[None for col in range(self.boardLength)] for row in range(self.boardLength)]&lt;br /&gt;
         &lt;br /&gt;
     def initializeBoard(self):&lt;br /&gt;
         for row in range(self.boardLength):&lt;br /&gt;
             for col in range(self.boardLength):&lt;br /&gt;
                 self.board[row][col] = 0&lt;br /&gt;
             &lt;br /&gt;
     def getBoard(self):&lt;br /&gt;
         return self.board&lt;br /&gt;
     &lt;br /&gt;
     def moveBoard(self):&lt;br /&gt;
         self.counter.setBoard(self.board,self.boardLength)&lt;br /&gt;
         self.counter.writeFirstCell()&lt;br /&gt;
         for i in range(self.boardLength*self.boardLength - 1):&lt;br /&gt;
             self.counter.writeNextCell()&lt;br /&gt;
         self.board = self.counter.getBoard()&lt;br /&gt;
 &lt;br /&gt;
     def printBoard(self):&lt;br /&gt;
         for row in range(self.boardLength):&lt;br /&gt;
             for col in range(self.boardLength):&lt;br /&gt;
                 print self.board[row][col],&amp;quot;\t&amp;quot;,&lt;br /&gt;
             print&lt;br /&gt;
             &lt;br /&gt;
 if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
     unittest.main()&lt;br /&gt;
     magicSquare = MagicSquare()&lt;br /&gt;
     input = int(raw_input(&amp;#039;Input(odd number): &amp;#039;))&lt;br /&gt;
     if input % 2 == 1:&lt;br /&gt;
         magicSquare.setBoard(input)&lt;br /&gt;
         magicSquare.moveBoard()&lt;br /&gt;
         magicSquare.printBoard()&lt;br /&gt;
     else:&lt;br /&gt;
         print &amp;#039;Input must be odd number&amp;#039;&lt;br /&gt;
----&lt;br /&gt;
[[신재동/PracticeByTDD]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>