test_multinomial.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from sympy.ntheory.multinomial import (binomial_coefficients, binomial_coefficients_list, multinomial_coefficients)
  2. from sympy.ntheory.multinomial import multinomial_coefficients_iterator
  3. def test_binomial_coefficients_list():
  4. assert binomial_coefficients_list(0) == [1]
  5. assert binomial_coefficients_list(1) == [1, 1]
  6. assert binomial_coefficients_list(2) == [1, 2, 1]
  7. assert binomial_coefficients_list(3) == [1, 3, 3, 1]
  8. assert binomial_coefficients_list(4) == [1, 4, 6, 4, 1]
  9. assert binomial_coefficients_list(5) == [1, 5, 10, 10, 5, 1]
  10. assert binomial_coefficients_list(6) == [1, 6, 15, 20, 15, 6, 1]
  11. def test_binomial_coefficients():
  12. for n in range(15):
  13. c = binomial_coefficients(n)
  14. l = [c[k] for k in sorted(c)]
  15. assert l == binomial_coefficients_list(n)
  16. def test_multinomial_coefficients():
  17. assert multinomial_coefficients(1, 1) == {(1,): 1}
  18. assert multinomial_coefficients(1, 2) == {(2,): 1}
  19. assert multinomial_coefficients(1, 3) == {(3,): 1}
  20. assert multinomial_coefficients(2, 0) == {(0, 0): 1}
  21. assert multinomial_coefficients(2, 1) == {(0, 1): 1, (1, 0): 1}
  22. assert multinomial_coefficients(2, 2) == {(2, 0): 1, (0, 2): 1, (1, 1): 2}
  23. assert multinomial_coefficients(2, 3) == {(3, 0): 1, (1, 2): 3, (0, 3): 1,
  24. (2, 1): 3}
  25. assert multinomial_coefficients(3, 1) == {(1, 0, 0): 1, (0, 1, 0): 1,
  26. (0, 0, 1): 1}
  27. assert multinomial_coefficients(3, 2) == {(0, 1, 1): 2, (0, 0, 2): 1,
  28. (1, 1, 0): 2, (0, 2, 0): 1, (1, 0, 1): 2, (2, 0, 0): 1}
  29. mc = multinomial_coefficients(3, 3)
  30. assert mc == {(2, 1, 0): 3, (0, 3, 0): 1,
  31. (1, 0, 2): 3, (0, 2, 1): 3, (0, 1, 2): 3, (3, 0, 0): 1,
  32. (2, 0, 1): 3, (1, 2, 0): 3, (1, 1, 1): 6, (0, 0, 3): 1}
  33. assert dict(multinomial_coefficients_iterator(2, 0)) == {(0, 0): 1}
  34. assert dict(
  35. multinomial_coefficients_iterator(2, 1)) == {(0, 1): 1, (1, 0): 1}
  36. assert dict(multinomial_coefficients_iterator(2, 2)) == \
  37. {(2, 0): 1, (0, 2): 1, (1, 1): 2}
  38. assert dict(multinomial_coefficients_iterator(3, 3)) == mc
  39. it = multinomial_coefficients_iterator(7, 2)
  40. assert [next(it) for i in range(4)] == \
  41. [((2, 0, 0, 0, 0, 0, 0), 1), ((1, 1, 0, 0, 0, 0, 0), 2),
  42. ((0, 2, 0, 0, 0, 0, 0), 1), ((1, 0, 1, 0, 0, 0, 0), 2)]