<?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=EightQueenProblem%2F%EA%B9%80%ED%98%95%EC%9A%A9</id>
	<title>EightQueenProblem/김형용 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=EightQueenProblem%2F%EA%B9%80%ED%98%95%EC%9A%A9"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=EightQueenProblem/%EA%B9%80%ED%98%95%EC%9A%A9&amp;action=history"/>
	<updated>2026-05-16T00:35:54Z</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=EightQueenProblem/%EA%B9%80%ED%98%95%EC%9A%A9&amp;diff=31516&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=EightQueenProblem/%EA%B9%80%ED%98%95%EC%9A%A9&amp;diff=31516&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:11Z</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;
 from pprint import pprint&lt;br /&gt;
 import unittest, random, pdb&lt;br /&gt;
 &lt;br /&gt;
 map = [[0,0,0,0,0,0,0,0],&lt;br /&gt;
        [0,0,0,0,0,0,0,0],&lt;br /&gt;
        [0,0,0,0,0,0,0,0],&lt;br /&gt;
        [0,0,0,0,0,0,0,0],&lt;br /&gt;
        [0,0,0,0,0,0,0,0],&lt;br /&gt;
        [0,0,0,0,0,0,0,0],&lt;br /&gt;
        [0,0,0,0,0,0,0,0],&lt;br /&gt;
        [0,0,0,0,0,0,0,0],]&lt;br /&gt;
 &lt;br /&gt;
 def makeRightDigTuple(aPosition):&lt;br /&gt;
     x=aPosition[0]; y=aPosition[1]&lt;br /&gt;
     result=[]&lt;br /&gt;
     i=0&lt;br /&gt;
     for num in range(x,-1,-1):&lt;br /&gt;
         if y+i &amp;amp;gt; 7: break&lt;br /&gt;
         result.append((num, y+i))&lt;br /&gt;
         i+=1&lt;br /&gt;
     j=1&lt;br /&gt;
     for num in range(y-1,-1,-1):&lt;br /&gt;
         if x+j &amp;amp;gt; 7: break&lt;br /&gt;
         result.append((x+j, num))&lt;br /&gt;
         j+=1&lt;br /&gt;
     result.sort()&lt;br /&gt;
     return result&lt;br /&gt;
 &lt;br /&gt;
 def makeLeftDigTuple(aPosition):&lt;br /&gt;
     x=aPosition[0]; y=aPosition[1]&lt;br /&gt;
     result=[]&lt;br /&gt;
     i=0&lt;br /&gt;
     for num in range(x,8):&lt;br /&gt;
         if y+i &amp;amp;gt; 7: break&lt;br /&gt;
         result.append((num, y+i))&lt;br /&gt;
         i+=1&lt;br /&gt;
     j=1&lt;br /&gt;
     for num in range(y-1,-1,-1):&lt;br /&gt;
         if x-j &amp;amp;lt; 0: break&lt;br /&gt;
         result.append((x-j,num))&lt;br /&gt;
         j+=1&lt;br /&gt;
     result.sort()&lt;br /&gt;
     return result&lt;br /&gt;
 &lt;br /&gt;
 class Queen:&lt;br /&gt;
     def __init__(self, name):&lt;br /&gt;
         self.name = name&lt;br /&gt;
         self.x = self.name-1&lt;br /&gt;
         self.y = 0&lt;br /&gt;
         self.setPosition(self.x, self.y)&lt;br /&gt;
     def setPosition(self, ax, ay):&lt;br /&gt;
         if (ax not in range(8)) or (ay not in range(8)):&lt;br /&gt;
             return &amp;quot;impossible&amp;quot;&lt;br /&gt;
         self.remove()&lt;br /&gt;
         self.x = ax&lt;br /&gt;
         self.y = ay&lt;br /&gt;
         map[self.x][self.y] = self.name&lt;br /&gt;
     def getPosition(self):&lt;br /&gt;
         return [self.x, self.y]&lt;br /&gt;
     def remove(self):&lt;br /&gt;
         map[self.x][self.y]=0&lt;br /&gt;
 &lt;br /&gt;
     def isInRow(self):&lt;br /&gt;
         for tempy in range(8):&lt;br /&gt;
             oldQueen = map[self.x][tempy]&lt;br /&gt;
             if oldQueen != 0 and oldQueen != self.name:&lt;br /&gt;
                 return oldQueen&lt;br /&gt;
     def isInColumn(self):&lt;br /&gt;
         for tempx in range(8):&lt;br /&gt;
             oldQueen = map[tempx][self.y]&lt;br /&gt;
             if oldQueen != 0 and oldQueen != self.name:&lt;br /&gt;
                 return oldQueen&lt;br /&gt;
     def isInRightDig(self):&lt;br /&gt;
         for tempx,tempy in makeRightDigTuple(self.getPosition()):&lt;br /&gt;
             oldQueen = map[tempx][tempy]&lt;br /&gt;
             if oldQueen !=0 and oldQueen != self.name:&lt;br /&gt;
                 return oldQueen&lt;br /&gt;
     def isInLeftDig(self):&lt;br /&gt;
         for tempx,tempy in makeLeftDigTuple(self.getPosition()):&lt;br /&gt;
             oldQueen = map[tempx][tempy]&lt;br /&gt;
             if oldQueen !=0 and oldQueen != self.name:&lt;br /&gt;
                 return oldQueen&lt;br /&gt;
             &lt;br /&gt;
     def isFight(self):&lt;br /&gt;
         return self.isInRow() or self.isInColumn() or \&lt;br /&gt;
                             self.isInRightDig() or self.isInLeftDig()        &lt;br /&gt;
 &lt;br /&gt;
     def moveRight(self):&lt;br /&gt;
         mr = self.setPosition(self.x, self.y+1)&lt;br /&gt;
         if mr == &amp;quot;impossible&amp;quot;:&lt;br /&gt;
             return &amp;quot;impossible&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 def iterate(q, name):&lt;br /&gt;
     while 1:&lt;br /&gt;
         if q[name].isFight() is None and q[name].getPosition()[1] != 7:&lt;br /&gt;
             break&lt;br /&gt;
         a = q[name].moveRight()&lt;br /&gt;
         if a:&lt;br /&gt;
             q[name].remove()&lt;br /&gt;
             q = movePreviousQueen(q, name-1)&lt;br /&gt;
             q[name].setPosition(name-1, 0)&lt;br /&gt;
             continue&lt;br /&gt;
 &lt;br /&gt;
 def movePreviousQueen(q, name):&lt;br /&gt;
     q[name].moveRight()&lt;br /&gt;
     if name == 1: return q&lt;br /&gt;
     iterate(q, name)&lt;br /&gt;
     return q&lt;br /&gt;
 &lt;br /&gt;
 def makeQueensDontFight():&lt;br /&gt;
     q = {}&lt;br /&gt;
     for name in range(1,9):&lt;br /&gt;
         q[name] = Queen(name)&lt;br /&gt;
         iterate(q, name)&lt;br /&gt;
     return q                &lt;br /&gt;
             &lt;br /&gt;
 class TestEightQueenProblem(unittest.TestCase):&lt;br /&gt;
     def setUp(self):&lt;br /&gt;
         for i in range(8):&lt;br /&gt;
             for j in range(8):&lt;br /&gt;
                 map[i][j]=0&lt;br /&gt;
     def tearDown(self):&lt;br /&gt;
         self.setUp()&lt;br /&gt;
     def testIntialPosition(self):&lt;br /&gt;
         q1 = Queen(1)&lt;br /&gt;
         q1.setPosition(0,0)&lt;br /&gt;
         self.assertEquals([0,0],q1.getPosition())&lt;br /&gt;
     def testRowCheck(self):&lt;br /&gt;
         q1=Queen(1);q2=Queen(2)&lt;br /&gt;
         q2.setPosition(0,1)&lt;br /&gt;
         self.assertEquals(1, q2.isInRow())&lt;br /&gt;
         q2.setPosition(1,0)&lt;br /&gt;
         self.assertEquals(None, q2.isInRow())        &lt;br /&gt;
     def testColumnCheck(self):&lt;br /&gt;
         q1=Queen(1);q2=Queen(2)&lt;br /&gt;
         q2.setPosition(0,1)&lt;br /&gt;
         self.assertEquals(None, q2.isInColumn())&lt;br /&gt;
         q2.setPosition(1,0)&lt;br /&gt;
         self.assertEquals(1, q2.isInColumn())&lt;br /&gt;
 &lt;br /&gt;
     def testMakeRightDigTuple1(self):&lt;br /&gt;
         input = (1,2)&lt;br /&gt;
         expected = [(0,3),(1,2),(2,1),(3,0),]&lt;br /&gt;
         self.assertEquals(expected, makeRightDigTuple(input))&lt;br /&gt;
     def testMakeRightDigTuple2(self):&lt;br /&gt;
         input = (4,4)&lt;br /&gt;
         expected = [(1, 7), (2, 6), (3, 5), (4, 4),&lt;br /&gt;
                     (5, 3), (6, 2), (7, 1)]&lt;br /&gt;
         self.assertEquals(expected, makeRightDigTuple(input))&lt;br /&gt;
     def testMakeRightDigTuple3(self):&lt;br /&gt;
         input = (6,6)&lt;br /&gt;
         expected = [(5, 7), (6, 6), (7, 5)]&lt;br /&gt;
         self.assertEquals(expected, makeRightDigTuple(input))&lt;br /&gt;
     def testMakeLeftDigTuple1(self):&lt;br /&gt;
         input = (5,1)&lt;br /&gt;
         expected = [(4,0), (5,1), (6,2), (7,3)]&lt;br /&gt;
         self.assertEquals(expected, makeLeftDigTuple(input))&lt;br /&gt;
     def testMakeLeftDigTuple2(self):&lt;br /&gt;
         input = (1,5)&lt;br /&gt;
         expected = [(0, 4), (1, 5), (2, 6), (3, 7)]&lt;br /&gt;
         self.assertEquals(expected, makeLeftDigTuple(input))&lt;br /&gt;
         &lt;br /&gt;
     def testRightDigCheck(self):&lt;br /&gt;
         q1=Queen(1);q2=Queen(2)&lt;br /&gt;
         q1.setPosition(1,2)&lt;br /&gt;
         q2.setPosition(2,1)&lt;br /&gt;
         self.assertEquals(1, q2.isInRightDig())&lt;br /&gt;
         q2.setPosition(1,0)&lt;br /&gt;
         self.assertEquals(None, q2.isInRightDig())&lt;br /&gt;
 &lt;br /&gt;
     def testTotal(self):&lt;br /&gt;
         qDict = makeQueensDontFight()&lt;br /&gt;
         print ;pprint(map)&lt;br /&gt;
         for eachQueen in qDict.values():&lt;br /&gt;
             self.assertEquals(None, eachQueen.isFight())            &lt;br /&gt;
 &lt;br /&gt;
 if __name__==&amp;#039;__main__&amp;#039;:&lt;br /&gt;
     unittest.main(argv=(&amp;#039;&amp;#039;,&amp;#039;-v&amp;#039;))&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>