test_generators.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. from sympy.combinatorics.generators import symmetric, cyclic, alternating, \
  2. dihedral, rubik
  3. from sympy.combinatorics.permutations import Permutation
  4. from sympy.testing.pytest import raises
  5. def test_generators():
  6. assert list(cyclic(6)) == [
  7. Permutation([0, 1, 2, 3, 4, 5]),
  8. Permutation([1, 2, 3, 4, 5, 0]),
  9. Permutation([2, 3, 4, 5, 0, 1]),
  10. Permutation([3, 4, 5, 0, 1, 2]),
  11. Permutation([4, 5, 0, 1, 2, 3]),
  12. Permutation([5, 0, 1, 2, 3, 4])]
  13. assert list(cyclic(10)) == [
  14. Permutation([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
  15. Permutation([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]),
  16. Permutation([2, 3, 4, 5, 6, 7, 8, 9, 0, 1]),
  17. Permutation([3, 4, 5, 6, 7, 8, 9, 0, 1, 2]),
  18. Permutation([4, 5, 6, 7, 8, 9, 0, 1, 2, 3]),
  19. Permutation([5, 6, 7, 8, 9, 0, 1, 2, 3, 4]),
  20. Permutation([6, 7, 8, 9, 0, 1, 2, 3, 4, 5]),
  21. Permutation([7, 8, 9, 0, 1, 2, 3, 4, 5, 6]),
  22. Permutation([8, 9, 0, 1, 2, 3, 4, 5, 6, 7]),
  23. Permutation([9, 0, 1, 2, 3, 4, 5, 6, 7, 8])]
  24. assert list(alternating(4)) == [
  25. Permutation([0, 1, 2, 3]),
  26. Permutation([0, 2, 3, 1]),
  27. Permutation([0, 3, 1, 2]),
  28. Permutation([1, 0, 3, 2]),
  29. Permutation([1, 2, 0, 3]),
  30. Permutation([1, 3, 2, 0]),
  31. Permutation([2, 0, 1, 3]),
  32. Permutation([2, 1, 3, 0]),
  33. Permutation([2, 3, 0, 1]),
  34. Permutation([3, 0, 2, 1]),
  35. Permutation([3, 1, 0, 2]),
  36. Permutation([3, 2, 1, 0])]
  37. assert list(symmetric(3)) == [
  38. Permutation([0, 1, 2]),
  39. Permutation([0, 2, 1]),
  40. Permutation([1, 0, 2]),
  41. Permutation([1, 2, 0]),
  42. Permutation([2, 0, 1]),
  43. Permutation([2, 1, 0])]
  44. assert list(symmetric(4)) == [
  45. Permutation([0, 1, 2, 3]),
  46. Permutation([0, 1, 3, 2]),
  47. Permutation([0, 2, 1, 3]),
  48. Permutation([0, 2, 3, 1]),
  49. Permutation([0, 3, 1, 2]),
  50. Permutation([0, 3, 2, 1]),
  51. Permutation([1, 0, 2, 3]),
  52. Permutation([1, 0, 3, 2]),
  53. Permutation([1, 2, 0, 3]),
  54. Permutation([1, 2, 3, 0]),
  55. Permutation([1, 3, 0, 2]),
  56. Permutation([1, 3, 2, 0]),
  57. Permutation([2, 0, 1, 3]),
  58. Permutation([2, 0, 3, 1]),
  59. Permutation([2, 1, 0, 3]),
  60. Permutation([2, 1, 3, 0]),
  61. Permutation([2, 3, 0, 1]),
  62. Permutation([2, 3, 1, 0]),
  63. Permutation([3, 0, 1, 2]),
  64. Permutation([3, 0, 2, 1]),
  65. Permutation([3, 1, 0, 2]),
  66. Permutation([3, 1, 2, 0]),
  67. Permutation([3, 2, 0, 1]),
  68. Permutation([3, 2, 1, 0])]
  69. assert list(dihedral(1)) == [
  70. Permutation([0, 1]), Permutation([1, 0])]
  71. assert list(dihedral(2)) == [
  72. Permutation([0, 1, 2, 3]),
  73. Permutation([1, 0, 3, 2]),
  74. Permutation([2, 3, 0, 1]),
  75. Permutation([3, 2, 1, 0])]
  76. assert list(dihedral(3)) == [
  77. Permutation([0, 1, 2]),
  78. Permutation([2, 1, 0]),
  79. Permutation([1, 2, 0]),
  80. Permutation([0, 2, 1]),
  81. Permutation([2, 0, 1]),
  82. Permutation([1, 0, 2])]
  83. assert list(dihedral(5)) == [
  84. Permutation([0, 1, 2, 3, 4]),
  85. Permutation([4, 3, 2, 1, 0]),
  86. Permutation([1, 2, 3, 4, 0]),
  87. Permutation([0, 4, 3, 2, 1]),
  88. Permutation([2, 3, 4, 0, 1]),
  89. Permutation([1, 0, 4, 3, 2]),
  90. Permutation([3, 4, 0, 1, 2]),
  91. Permutation([2, 1, 0, 4, 3]),
  92. Permutation([4, 0, 1, 2, 3]),
  93. Permutation([3, 2, 1, 0, 4])]
  94. raises(ValueError, lambda: rubik(1))