예제 #1
0
 def test_distCoherence(self):
     for iterations in range(10000):    
         R_A=Hanoi.randLocationR(8)
         T_A=Hanoi.SA2TA(Hanoi.rollcall2SA(R_A))
         L_A=Hanoi.rollcall2List(R_A)
         R_B=Hanoi.randLocationR(8)
         T_B=Hanoi.SA2TA(Hanoi.rollcall2SA(R_B))
         dist0=Hanoi.distTA(T_A,T_B)
         #look for neighbors of A, and their distances to B
         Legal=[[False,False,False],[False,False,False],[False,False,False]]
         for i in range(3):
             for j in range(3):
                 Legal[i][j]=Hanoi.isLegalMove(L_A,i,j)
             Legal[i][i]=False #not neighbor to self
         distVect=[]
         for i in range(3):
             for j in range(3):
                 if Legal[i][j]:
                     Hanoi.makeMove(L_A,i,j)
                     T_temp=Hanoi.SA2TA(Hanoi.rollcall2SA(Hanoi.list2Rollcall(L_A)))
                     distVect.append(Hanoi.distTA(T_temp,T_B))
                     Hanoi.makeMove(L_A,j,i)
         self.assertTrue((dist0-1 in distVect) or dist0==0)
         for e in distVect:
             stmt=(e==dist0 or e==dist0+1 or e==dist0-1)
             self.assertTrue(stmt)
         self.assertTrue(len(distVect)==3 or len(distVect)==2)    
예제 #2
0
 def test_distTA(self):
     self.assertEqual(Hanoi.distTA([5,14,11],[13,6,11]),12)
     self.assertEqual(Hanoi.distTA([1,7,6],[7,2,5]),7)
     self.assertEqual(Hanoi.distTA(Hanoi.SA2TA([0,0,0,2]),Hanoi.SA2TA([1,1,2,0])),14)
     self.assertEqual(Hanoi.distTA(Hanoi.SA2TA([1,2,1,0,0,0,2]),Hanoi.SA2TA([1,2,1,1,1,2,0])),14)
     self.assertEqual(Hanoi.distTA(Hanoi.SA2TA([0,0,0,2]),Hanoi.SA2TA([0,0,0,2])),0)