|
15 | 15 | max_ones_index, |
16 | 16 | trimmean, |
17 | 17 | top_1, |
18 | | - limit |
| 18 | + limit, |
| 19 | + n_sum |
19 | 20 | ) |
20 | 21 |
|
21 | 22 | import unittest |
@@ -309,28 +310,51 @@ def test_two_sum(self): |
309 | 310 | self.assertTupleEqual((0, 3), two_sum([-3, 5, 2, 3, 8, -9], target=0)) |
310 | 311 |
|
311 | 312 | self.assertIsNone(two_sum([-3, 5, 2, 3, 8, -9], target=6)) |
312 | | - |
| 313 | + |
| 314 | + |
313 | 315 | class TestTrimmean(unittest.TestCase): |
314 | 316 |
|
315 | 317 | def test_trimmean(self): |
316 | 318 |
|
317 | 319 | self.assertEqual(trimmean([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 20), 5.5) |
318 | 320 | self.assertEqual(trimmean([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 20), 6.0) |
319 | | - |
| 321 | + |
| 322 | + |
320 | 323 | class TestTop1(unittest.TestCase): |
321 | | - |
| 324 | + |
322 | 325 | def test_top_1(self): |
323 | 326 | self.assertListEqual(top_1([1 , 1, 2, 2, 3]), [1, 2]) |
324 | 327 | self.assertListEqual(top_1([1, 2, 3, 324, 234, 23, 23, 1, 23, 23]), [23]) |
325 | 328 |
|
| 329 | + |
326 | 330 | class TestLimit(unittest.TestCase): |
327 | | - |
| 331 | + |
328 | 332 | def test_limit(self): |
329 | 333 | self.assertListEqual(limit([1, 2, 3, 4, 5], 2, 4), [2, 3, 4]) |
330 | 334 | self.assertListEqual(limit([1, 2, 3, 4, 5], 2), [2, 3, 4, 5]) |
331 | 335 | self.assertListEqual(limit([1, 2, 3, 4, 5], None, 4), [1, 2, 3, 4]) |
332 | 336 |
|
333 | | - |
| 337 | + |
| 338 | +class TestNSum(unittest.TestCase): |
| 339 | + |
| 340 | + def test_n_sum(self): |
| 341 | + self.assertEqual(n_sum(2, [-3, 5, 2, 3, 8, -9], 6), []) # noqa: E501 |
| 342 | + self.assertEqual(n_sum(3, [-5, -4, -3, -2, -1, 0, 1, 2, 3], 0), sorted([[-5,2,3],[-2,0,2],[-4,1,3],[-3,1,2],[-1,0,1],[-2,-1,3],[-3,0,3]])) # noqa: E501 |
| 343 | + self.assertEqual(n_sum(3, [-1,0,1,2,-1,-4], 0), sorted([[-1,-1,2],[-1,0,1]])) # noqa: E501 |
| 344 | + self.assertEqual(n_sum(4, [1, 0, -1, 0, -2, 2], 0), sorted([[-2, -1, 1, 2], [-2, 0, 0, 2], [-1, 0, 0, 1]])) # noqa: E501 |
| 345 | + self.assertEqual(n_sum(4, [7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 6, 4, -3, -2], 10), sorted([[-6, 2, 7, 7], [-6, 3, 6, 7], [-6, 4, 5, 7], [-6, 4, 6, 6], [-5, 1, 7, 7], [-5, 2, 6, 7], [-5, 3, 5, 7], [-5, 3, 6, 6], [-5, 4, 4, 7], [-5, 4, 5, 6], [-4, 0, 7, 7], [-4, 1, 6, 7], [-4, 2, 5, 7], [-4, 2, 6, 6], [-4, 3, 4, 7], [-4, 3, 5, 6], [-4, 4, 4, 6], [-3, -1, 7, 7], [-3, 0, 6, 7], [-3, 1, 5, 7], [-3, 1, 6, 6], [-3, 2, 4, 7], [-3, 2, 5, 6], [-3, 3, 4, 6], [-3, 4, 4, 5], [-2, -2, 7, 7], [-2, -1, 6, 7], [-2, 0, 5, 7], [-2, 0, 6, 6], [-2, 1, 4, 7], [-2, 1, 5, 6], [-2, 2, 3, 7], [-2, 2, 4, 6], [-2, 3, 4, 5], [-1, 0, 4, 7], [-1, 0, 5, 6], [-1, 1, 3, 7], [-1, 1, 4, 6], [-1, 2, 3, 6], [-1, 2, 4, 5], [-1, 3, 4, 4], [0, 1, 2, 7], [0, 1, 3, 6], [0, 1, 4, 5], [0, 2, 3, 5], [0, 2, 4, 4], [1, 2, 3, 4]])) # noqa: E501 |
| 346 | + |
| 347 | + self.assertEqual(n_sum(2, [[-3, 0], [-2, 1], [2, 2], [3, 3], [8, 4], [-9, 5]], 0, # noqa: E501 |
| 348 | + sum_closure=lambda a, b: a[0] + b[0]), # noqa: E501 |
| 349 | + [[[-3, 0], [3, 3]], [[-2, 1], [2, 2]]]) # noqa: E501 |
| 350 | + self.assertEqual(n_sum(2, [[-3, 0], [-2, 1], [2, 2], [3, 3], [8, 4], [-9, 5]], [0, 3], # noqa: E501 |
| 351 | + sum_closure=lambda a, b: [a[0] + b[0], a[1] + b[1]], # noqa: E501 |
| 352 | + same_closure=lambda a, b: a[0] == b[0] and a[1] == b[1]), # noqa: E501 |
| 353 | + [[[-3, 0], [3, 3]], [[-2, 1], [2, 2]]]) # noqa: E501 |
| 354 | + self.assertEqual(n_sum(2, [[-3, 0], [-2, 1], [2, 2], [3, 3], [8, 4], [-9, 5]], -5, # noqa: E501 |
| 355 | + sum_closure=lambda a, b: [a[0] + b[1], a[1] + b[0]], # noqa: E501 |
| 356 | + compare_closure=lambda a, b: -1 if a[0] < b else 1 if a[0] > b else 0), # noqa: E501 |
| 357 | + [[[-9, 5], [8, 4]]]) # noqa: E501 |
334 | 358 |
|
335 | 359 |
|
336 | 360 | if __name__ == '__main__': |
|
0 commit comments