-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdomino.py
32 lines (26 loc) · 1.69 KB
/
domino.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"""
Дан список плиток домино в определенном порядке и положении (переворачивать нельзя)
Необходимо найти длину самой длинной правильной цепочки
Цепочка считается правильной, если правое число левой плитки равно левому числу правой
Например: [(1,2),(2,3),(3,4)] - это правильная цепочка (ответ 3)
[(2,1),(2,3),(3,4)] - это неправильная цепочка, но внутри есть правильная (ответ 2)
[(1,1),(2,3),(3,5),(5,6),(5,5),(7,3),(3,4),(4,5),(5,6),(1,1)] - правильный ответ 4, хотя есть и цепочка длины 3
"""
import unittest
def longest_chain(chain):
k = 1
for i in range(len(chain)-1):
if chain[i][1] == chain[i+1][0]:
k += 1
return k
class TestDominoMethods(unittest.TestCase):
def test_domino(self):
self.assertEqual(longest_chain([(1,2),(2,3),(3,4)]),3)
self.assertEqual(longest_chain([(2,1),(2,3),(3,4)]),2)
self.assertEqual(longest_chain([(1,1),(2,3),(3,5),(5,6),(5,5),(7,3),(3,4),(4,5),(5,6),(1,1)]), 4)
self.assertEqual(longest_chain([(1,1),(2,3),(3,5),(5,6),(5,5),(7,3),(3,4),(4,5),(5,6),(1,1),(1,2)]), 4)
self.assertEqual(longest_chain([(1,1),(2,3),(3,5),(5,6),(5,5),(8,8),(7,3),(3,4),(4,5),(5,6),(1,1)]), 4)
self.assertEqual(longest_chain([(1,1),(2,3),(3,5),(5,6),(5,5),(7,3),(13,4),(4,5),(5,6),(1,1)]), 3)
self.assertEqual(longest_chain([]),0)
if __name__ == '__main__':
unittest.main()