@@ -9,29 +9,53 @@ def stringsRearrangement(inputArray):
99def neighborsDifferByOne (inputArray ):
1010 if len (inputArray ) <= 1 :
1111 return True
12- return differByOne (inputArray [0 ], inputArray [1 ]) and neighborsDifferByOne (inputArray [2 :])
12+ return differByOne (inputArray [0 ], inputArray [1 ]) and neighborsDifferByOne (inputArray [1 :])
1313
1414def differByOne (word , anotherWord ):
15- if len (word ) != len (anotherWord ):
16- return False
17-
1815 differencesCount = 0
1916 for i in xrange (len (word )):
20- if word [i ] != anotherWord [j ]:
17+ if word [i ] != anotherWord [i ]:
2118 differencesCount += 1
22-
23- if differencesCount == 0 or differencesCount >= 2 :
24- return False
25-
26- return True
27-
19+ if differencesCount > 1 :
20+ return False
21+
22+ return differencesCount == 1
23+
24+ def testDifferByOne ():
25+ assert not differByOne ("" , "" )
26+ assert not differByOne ("a" , "a" )
27+ assert not differByOne ("aaa" , "aaa" )
28+ assert not differByOne ("abcdeff" , "abcedff" )
29+ assert differByOne ("a" , "b" )
30+ assert differByOne ("abc" , "abb" )
31+ assert differByOne ("abc" , "bbc" )
32+ assert differByOne ("abcdefg" , "abcdefz" )
33+
34+ def testNeighborsDifferByOne ():
35+ assert neighborsDifferByOne ([])
36+ assert neighborsDifferByOne (["" ])
37+ assert neighborsDifferByOne (["a" , "b" ])
38+ assert neighborsDifferByOne (["a" , "b" , "c" ])
39+ assert neighborsDifferByOne (["ab" , "bb" ])
40+ assert neighborsDifferByOne (["ab" , "bb" , "bc" ])
41+ assert neighborsDifferByOne (["ab" , "bb" , "bc" , "ba" ])
42+ assert neighborsDifferByOne (["abc" , "bbc" , "bac" , "bad" ])
43+ assert not neighborsDifferByOne (["a" , "a" ])
44+
45+ def testStringsRearrangement ():
46+ assert stringsRearrangement ([])
47+ assert not stringsRearrangement (["aba" , "bbb" , "bab" ])
48+ assert stringsRearrangement (["ab" , "bb" , "aac" ])
49+ assert not stringsRearrangement (["qq" , "qq" , "qq" ])
50+ assert stringsRearrangement (["aaa" , "aba" , "aaa" , "aba" , "aaa" ])
51+ assert not stringsRearrangement (["ab" , "ad" , "ef" , "eg" ])
52+ assert stringsRearrangement (["abc" , "abx" , "axx" , "abx" , "abc" ])
53+ assert stringsRearrangement (["f" , "g" , "a" , "h" ])
2854
2955def main ():
30- assert stringsRearrangement ([], True )
31- assert stringsRearrangement (["aba" , "bbb" , "bab" ], False )
32- assert stringsRearrangement (["ab" , "bb" , "aa" ], True )
33- assert stringsRearrangement (["qq" , "qq" , "qq" ], False )
34- assert stringsRearrangement (["aaa" , "aba" , "aaa" , "aba" , "aaa" ], True )
35- assert stringsRearrangement (["ab" , "ad" , "ef" , "eg" ], False )
36- assert stringsRearrangement (["abc" , "abx" , "axx" , "abx" , "abc" ], True )
37- assert stringsRearrangement (["f" , "g" , "a" , "h" ], True )
56+ testDifferByOne ()
57+ testNeighborsDifferByOne ()
58+ testStringsRearrangement ()
59+
60+ if __name__ == "__main__" :
61+ main ()
0 commit comments