8
8
class TwentyFourGame (unittest .TestCase ):
9
9
10
10
def judgePoint24 (self , nums : List [int ]) -> bool :
11
- def recursion (nums : List [int ]) -> bool :
12
- if len (nums ) == 1 :
13
- return True if nums [0 ] == 24 else False
14
-
15
- for i , a in enumerate (nums ):
16
- for j , b in enumerate (nums ):
11
+ def recursion (numArray : List [int ]) -> bool :
12
+ if len (numArray ) == 1 :
13
+ # error case 1
14
+ return True if (abs (numArray [0 ]- 24.0 ) < 1e-6 ) else False
15
+
16
+ for i , a in enumerate (numArray ):
17
+ for j , b in enumerate (numArray ):
18
+ if i == j :
19
+ continue
17
20
possibleComb = [a + b , a * b , abs (a - b )]
18
21
if a != 0 :
19
22
possibleComb .append (b / a )
@@ -22,21 +25,28 @@ def recursion(nums: List[int]) -> bool:
22
25
23
26
for newNum in possibleComb :
24
27
newNums = []
25
- for k in range (len (nums )):
28
+ for k in range (len (numArray )):
26
29
if k != i and k != j :
27
- newNums .append (nums [k ])
30
+ newNums .append (numArray [k ])
28
31
newNums .append (newNum )
29
32
33
+ # print("current recursioin")
34
+ # print(newNum)
35
+ # print(newNums)
30
36
if recursion (newNums ):
31
37
return True
32
38
33
39
return False
34
40
35
41
return recursion (nums )
36
42
43
+ @unittest .skip
37
44
def test_Leetcode (self ):
38
45
self .assertTrue (self .judgePoint24 ([4 ,1 ,8 ,7 ]))
39
- # self.assertFalse(self.judgePoint24([1,2,1,2]))
46
+ self .assertFalse (self .judgePoint24 ([1 ,2 ,1 ,2 ]))
47
+
48
+ def test_WrongAnswer (self ):
49
+ self .assertTrue (self .judgePoint24 ([3 ,3 ,8 ,8 ]))
40
50
41
51
if __name__ == '__main__' :
42
52
unittest .main ()
0 commit comments