|
38 | 38 | from sage.structure.parent import Parent
|
39 | 39 | from sage.structure.unique_representation import UniqueRepresentation
|
40 | 40 | from sage.rings.integer_ring import ZZ
|
41 |
| -from sage.arith.misc import Sigma, integer_floor as floor, integer_ceil as ceil, binomial, factorial |
| 41 | +from sage.arith.misc import Sigma, binomial, factorial |
42 | 42 | from sage.sets.disjoint_union_enumerated_sets import DisjointUnionEnumeratedSets
|
43 | 43 | from sage.sets.family import Family
|
44 | 44 | from sage.sets.non_negative_integers import NonNegativeIntegers
|
@@ -1651,7 +1651,6 @@ def cardinality(self) -> Integer:
|
1651 | 1651 | for j in range(1, B + 1)
|
1652 | 1652 | for k in range(1, C + 1)))
|
1653 | 1653 |
|
1654 |
| - |
1655 | 1654 | def random_element(self) -> PP:
|
1656 | 1655 | r"""
|
1657 | 1656 | Return a uniformly random plane partition inside a box.
|
@@ -2200,13 +2199,13 @@ def cardinality(self) -> Integer:
|
2200 | 2199 | 132
|
2201 | 2200 | """
|
2202 | 2201 | a = self._box[0]
|
2203 |
| - numerator = (prod(3*i - 1 for i in range(1, a+1)) |
2204 |
| - * prod(i + j + a - 1 for j in range(1, a+1) |
2205 |
| - for i in range(1, j+1))) |
2206 |
| - denominator = (prod(3*i - 2 for i in range(1, a+1)) |
2207 |
| - * prod(2*i + j - 1 for j in range(1, a+1) |
2208 |
| - for i in range(1, j+1))) |
2209 |
| - return Integer(numerator // denominator) |
| 2202 | + num = (prod(3*i - 1 for i in range(1, a + 1)) |
| 2203 | + * prod(i + j + a - 1 for j in range(1, a + 1) |
| 2204 | + for i in range(1, j + 1))) |
| 2205 | + den = (prod(3*i - 2 for i in range(1, a + 1)) |
| 2206 | + * prod(2*i + j - 1 for j in range(1, a + 1) |
| 2207 | + for i in range(1, j + 1))) |
| 2208 | + return Integer(num // den) |
2210 | 2209 |
|
2211 | 2210 |
|
2212 | 2211 | # Class 4
|
@@ -2382,8 +2381,9 @@ def cardinality(self) -> Integer:
|
2382 | 2381 | 66
|
2383 | 2382 | """
|
2384 | 2383 | a = self._box[0]
|
2385 |
| - return Integer(prod(i + j + a - 1 for j in range(1, a+1) for i in range(1, j+1)) |
2386 |
| - // prod(i + 2*j - 2 for j in range(1, a+1) for i in range(1, j+1))) |
| 2384 | + num = prod(i + j + a - 1 for j in range(1, a + 1) for i in range(1, j + 1)) |
| 2385 | + den = prod(i + 2*j - 2 for j in range(1, a + 1) for i in range(1, j + 1)) |
| 2386 | + return Integer(num // den) |
2387 | 2387 |
|
2388 | 2388 |
|
2389 | 2389 | # Class 5
|
@@ -2740,9 +2740,9 @@ def cardinality(self) -> Integer:
|
2740 | 2740 | """
|
2741 | 2741 | a = self._box[0]
|
2742 | 2742 | c = self._box[2]
|
2743 |
| - return Integer(binomial(c//2 + a - 1, a - 1) |
| 2743 | + return Integer(binomial(c // 2 + a - 1, a - 1) |
2744 | 2744 | * prod((c + i + j + 1) / (i + j + 1)
|
2745 |
| - for j in range(1, 1+a-2) for i in range(1, 1+j))) |
| 2745 | + for j in range(1, a - 1) for i in range(1, 1 + j))) |
2746 | 2746 |
|
2747 | 2747 |
|
2748 | 2748 | # Class 7
|
@@ -2837,10 +2837,15 @@ def cardinality(self) -> Integer:
|
2837 | 2837 | """
|
2838 | 2838 | a = self._box[0]
|
2839 | 2839 | c = self._box[2]
|
2840 |
| - return Integer(prod(Integer(i + j + k - 1) / Integer(i + j + k - 2) |
2841 |
| - for i in range(1, 1+a//2) |
2842 |
| - for j in range(1, 1+ceil(a/2)) |
2843 |
| - for k in range(1, 1+c//2))) |
| 2840 | + num = prod(i + j + k - 1 |
| 2841 | + for i in range(1, 1 + a // 2) |
| 2842 | + for j in range(1, 1 + (a + 1) // 2) |
| 2843 | + for k in range(1, 1 + c // 2)) |
| 2844 | + den = prod(i + j + k - 2 |
| 2845 | + for i in range(1, 1 + a // 2) |
| 2846 | + for j in range(1, 1 + (a + 1) // 2) |
| 2847 | + for k in range(1, 1 + c // 2)) |
| 2848 | + return Integer(num // den) |
2844 | 2849 |
|
2845 | 2850 |
|
2846 | 2851 | # Class 8
|
@@ -2914,7 +2919,9 @@ def cardinality(self) -> Integer:
|
2914 | 2919 | 11
|
2915 | 2920 | """
|
2916 | 2921 | a = self._box[0] // 2
|
2917 |
| - return Integer(prod((3*i+1) * factorial(6*i) * factorial(2*i) / (factorial(4*i+1) * factorial(4*i)) for i in range(a))) |
| 2922 | + num = prod((3*i + 1) * factorial(6*i) * factorial(2*i) for i in range(a)) |
| 2923 | + den = prod((factorial(4*i + 1) * factorial(4*i)) for i in range(a)) |
| 2924 | + return Integer(num // den) |
2918 | 2925 |
|
2919 | 2926 |
|
2920 | 2927 | # Class 9
|
@@ -2988,7 +2995,9 @@ def cardinality(self) -> Integer:
|
2988 | 2995 | 49
|
2989 | 2996 | """
|
2990 | 2997 | a = self._box[0] // 2
|
2991 |
| - return Integer(prod(factorial(3*i+1)**2 / factorial(a+i)**2 for i in range(a))) |
| 2998 | + num = prod(factorial(3*i + 1)**2 for i in range(a)) |
| 2999 | + den = prod(factorial(a + i)**2 for i in range(a)) |
| 3000 | + return Integer(num // den) |
2992 | 3001 |
|
2993 | 3002 |
|
2994 | 3003 | # Class 10
|
@@ -3202,4 +3211,6 @@ def cardinality(self) -> Integer:
|
3202 | 3211 | 7
|
3203 | 3212 | """
|
3204 | 3213 | a = self._box[0] // 2
|
3205 |
| - return Integer(prod(factorial(3*i+1) / factorial(a+i) for i in range(a))) |
| 3214 | + num = prod(factorial(3*i + 1) for i in range(a)) |
| 3215 | + den = prod(factorial(a + i) for i in range(a)) |
| 3216 | + return Integer(num // den) |
0 commit comments