Skip to content

Commit de93962

Browse files
committed
PR for #36198: fix return types in permutation.py so that methods
return type `Integer` instead of type `int`.
1 parent 6ea1fe9 commit de93962

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

src/sage/combinat/permutation.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -720,7 +720,7 @@ def size(self) -> Integer:
720720
sage: Permutation([3,4,1,2,5]).size()
721721
5
722722
"""
723-
return len(self)
723+
return Integer(len(self))
724724

725725
grade = size # for the category SetsWithGrading()
726726

@@ -1167,7 +1167,7 @@ def signature(self) -> Integer:
11671167
sage: Permutation([]).sign()
11681168
1
11691169
"""
1170-
return (-1)**(len(self)-len(self.to_cycles()))
1170+
return Integer((-1)**(len(self)-len(self.to_cycles())))
11711171

11721172
#one can also use sign as an alias for signature
11731173
sign = signature
@@ -1476,21 +1476,23 @@ def to_inversion_vector(self):
14761476
l = len(p)
14771477
# lightning fast if the length is less than 3
14781478
# (is it really useful?)
1479+
zero = Integer(0)
1480+
one = Integer(1)
14791481
if l < 4:
14801482
if l == 0:
14811483
return []
14821484
if l == 1:
1483-
return [0]
1485+
return [zero]
14841486
if l == 2:
1485-
return [p[0] - 1, 0]
1487+
return [Integer(p[0] - 1), zero]
14861488
if l == 3:
14871489
if p[0] == 1:
1488-
return [0, p[1] - 2, 0]
1490+
return [zero, Integer(p[1] - 2), zero]
14891491
if p[0] == 2:
14901492
if p[1] == 1:
1491-
return [1, 0, 0]
1492-
return [2, 0, 0]
1493-
return [p[1], 1, 0]
1493+
return [one, zero, zero]
1494+
return [Integer(2), zero, zero]
1495+
return [Integer(p[1]), one, zero]
14941496
# choose the best one
14951497
if l < 411:
14961498
return self._to_inversion_vector_small()
@@ -1548,7 +1550,7 @@ def _to_inversion_vector_small(self):
15481550
for pi in reversed(p):
15491551
checked[pi] = 0
15501552
iv[pi] = sum(checked[pi:])
1551-
return iv[1:]
1553+
return [Integer(a) for a in iv[1:]]
15521554

15531555
def _to_inversion_vector_divide_and_conquer(self):
15541556
r"""
@@ -1614,7 +1616,7 @@ def sort_and_countv(L):
16141616
return merge_and_countv(sort_and_countv(L[:l]),
16151617
sort_and_countv(L[l:]))
16161618

1617-
return sort_and_countv(self._list)[0]
1619+
return [Integer(a) for a in sort_and_countv(self._list)[0]]
16181620

16191621
def inversions(self) -> list:
16201622
r"""
@@ -1883,8 +1885,8 @@ def number_of_noninversions(self, k) -> Integer:
18831885
"""
18841886
if k > len(self):
18851887
return 0
1886-
return sum(1 for pos in itertools.combinations(self, k)
1887-
if all(pos[i] < pos[i + 1] for i in range(k - 1)))
1888+
return Integer(sum(1 for pos in itertools.combinations(self, k)
1889+
if all(pos[i] < pos[i + 1] for i in range(k - 1))))
18881890

18891891
def length(self) -> Integer:
18901892
r"""
@@ -1934,7 +1936,7 @@ def inverse(self) -> Permutation:
19341936
"""
19351937
w = list(range(len(self)))
19361938
for i, j in enumerate(self):
1937-
w[j - 1] = i + 1
1939+
w[j - 1] = Integer(i + 1)
19381940
return Permutations()(w)
19391941

19401942
__invert__ = inverse
@@ -2239,7 +2241,7 @@ def longest_increasing_subsequence_length(self) -> Integer:
22392241
else:
22402242
# We replace y by x
22412243
r[idx] = x
2242-
return len(r)
2244+
return Integer(len(r))
22432245

22442246
def longest_increasing_subsequences(self):
22452247
r"""
@@ -3082,8 +3084,7 @@ def number_of_fixed_points(self) -> Integer:
30823084
sage: Permutation([1,2,3,4]).number_of_fixed_points()
30833085
4
30843086
"""
3085-
3086-
return len(self.fixed_points())
3087+
return Integer(len(self.fixed_points()))
30873088

30883089
def is_derangement(self) -> bool:
30893090
r"""
@@ -3209,7 +3210,7 @@ def number_of_recoils(self) -> Integer:
32093210
sage: Permutation([1,4,3,2]).number_of_recoils()
32103211
2
32113212
"""
3212-
return len(self.recoils())
3213+
return Integer(len(self.recoils()))
32133214

32143215
def recoils_composition(self) -> Composition:
32153216
r"""
@@ -3382,7 +3383,7 @@ def number_of_descents(self, final_descent=False) -> Integer:
33823383
sage: Permutation([1,4,3,2]).number_of_descents(final_descent=True)
33833384
3
33843385
"""
3385-
return len(self.descents(final_descent))
3386+
return Integer(len(self.descents(final_descent)))
33863387

33873388
def number_of_idescents(self, final_descent=False) -> Integer:
33883389
r"""
@@ -3400,7 +3401,7 @@ def number_of_idescents(self, final_descent=False) -> Integer:
34003401
sage: Permutation([1,4,3,2]).number_of_idescents(final_descent=True)
34013402
3
34023403
"""
3403-
return len(self.idescents(final_descent))
3404+
return Integer(len(self.idescents(final_descent)))
34043405

34053406
@combinatorial_map(name='descent composition')
34063407
def descents_composition(self) -> Composition:
@@ -3497,7 +3498,7 @@ def major_index(self, final_descent=False) -> Integer:
34973498
6
34983499
"""
34993500
descents = self.descents(final_descent)
3500-
return sum(descents)
3501+
return Integer(sum(descents))
35013502

35023503
def multi_major_index(self, composition):
35033504
r"""
@@ -3566,7 +3567,7 @@ def imajor_index(self, final_descent=False) -> Integer:
35663567
sage: Permutation([4,3,2,1]).imajor_index()
35673568
6
35683569
"""
3569-
return sum(self.idescents(final_descent))
3570+
return Integer(sum(self.idescents(final_descent)))
35703571

35713572
def to_major_code(self, final_descent=False):
35723573
r"""
@@ -3655,7 +3656,7 @@ def number_of_peaks(self) -> Integer:
36553656
sage: Permutation([4,1,3,2,6,5]).number_of_peaks()
36563657
2
36573658
"""
3658-
return len(self.peaks())
3659+
return Integer(len(self.peaks()))
36593660

36603661
#############
36613662
# Saliances #
@@ -3701,7 +3702,7 @@ def number_of_saliances(self) -> Integer:
37013702
sage: Permutation([5,4,3,2,1]).number_of_saliances()
37023703
5
37033704
"""
3704-
return len(self.saliances())
3705+
return Integer(len(self.saliances()))
37053706

37063707
################
37073708
# Bruhat Order #

0 commit comments

Comments
 (0)