Skip to content

Commit 169d9ce

Browse files
author
Release Manager
committed
sagemathgh-41551: Permutation return types This is only a trivial conflict resolution for sagemath#36199. URL: sagemath#41551 Reported by: Martin Rubey Reviewer(s):
2 parents 914f81e + d277168 commit 169d9ce

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

src/sage/combinat/permutation.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1309,7 +1309,7 @@ def signature(self) -> Integer:
13091309
sage: Permutation([]).sign()
13101310
1
13111311
"""
1312-
return (-1)**(len(self) - len(self.to_cycles()))
1312+
return Integer((-1)**(len(self) - len(self.to_cycles())))
13131313

13141314
# one can also use sign as an alias for signature
13151315
sign = signature
@@ -1619,21 +1619,23 @@ def to_inversion_vector(self) -> list:
16191619
l = len(p)
16201620
# lightning fast if the length is less than 3
16211621
# (is it really useful?)
1622+
zero = Integer(0)
1623+
one = Integer(1)
16221624
if l < 4:
16231625
if l == 0:
16241626
return []
16251627
if l == 1:
1626-
return [0]
1628+
return [zero]
16271629
if l == 2:
1628-
return [p[0] - 1, 0]
1630+
return [Integer(p[0] - 1), zero]
16291631
if l == 3:
16301632
if p[0] == 1:
1631-
return [0, p[1] - 2, 0]
1633+
return [zero, Integer(p[1] - 2), zero]
16321634
if p[0] == 2:
16331635
if p[1] == 1:
1634-
return [1, 0, 0]
1635-
return [2, 0, 0]
1636-
return [p[1], 1, 0]
1636+
return [one, zero, zero]
1637+
return [Integer(2), zero, zero]
1638+
return [Integer(p[1]), one, zero]
16371639
# choose the best one
16381640
if l < 411:
16391641
return self._to_inversion_vector_small()
@@ -1691,7 +1693,7 @@ def _to_inversion_vector_small(self) -> list:
16911693
for pi in reversed(p):
16921694
checked[pi] = 0
16931695
iv[pi] = sum(checked[pi:])
1694-
return iv[1:]
1696+
return [Integer(a) for a in iv[1:]]
16951697

16961698
def _to_inversion_vector_divide_and_conquer(self) -> list:
16971699
r"""
@@ -1757,7 +1759,7 @@ def sort_and_countv(L):
17571759
return merge_and_countv(sort_and_countv(L[:l]),
17581760
sort_and_countv(L[l:]))
17591761

1760-
return sort_and_countv(self._list)[0]
1762+
return [Integer(a) for a in sort_and_countv(self._list)[0]]
17611763

17621764
def inversions(self) -> list:
17631765
r"""
@@ -2027,8 +2029,8 @@ def number_of_noninversions(self, k) -> Integer:
20272029
"""
20282030
if k > len(self):
20292031
return 0
2030-
return sum(1 for pos in itertools.combinations(self, k)
2031-
if all(pos[i] < pos[i + 1] for i in range(k - 1)))
2032+
return Integer(sum(1 for pos in itertools.combinations(self, k)
2033+
if all(pos[i] < pos[i + 1] for i in range(k - 1))))
20322034

20332035
def length(self) -> Integer:
20342036
r"""
@@ -2078,7 +2080,7 @@ def inverse(self) -> Permutation:
20782080
"""
20792081
w = list(range(len(self)))
20802082
for i, j in enumerate(self, start=1):
2081-
w[j - 1] = i
2083+
w[j - 1] = Integer(i)
20822084
return Permutations()(w)
20832085

20842086
__invert__ = inverse
@@ -2379,7 +2381,7 @@ def longest_increasing_subsequence_length(self) -> Integer:
23792381
else:
23802382
# We replace y by x
23812383
r[idx] = x
2382-
return len(r)
2384+
return Integer(len(r))
23832385

23842386
def longest_increasing_subsequences(self) -> list:
23852387
r"""
@@ -3321,7 +3323,7 @@ def number_of_fixed_points(self) -> int:
33213323
sage: Permutation([1,2,3,4]).number_of_fixed_points()
33223324
4
33233325
"""
3324-
return len(self.fixed_points())
3326+
return Integer(len(self.fixed_points()))
33253327

33263328
def is_derangement(self) -> bool:
33273329
r"""
@@ -3442,7 +3444,7 @@ def number_of_recoils(self) -> Integer:
34423444
sage: Permutation([1,4,3,2]).number_of_recoils()
34433445
2
34443446
"""
3445-
return len(self.recoils())
3447+
return Integer(len(self.recoils()))
34463448

34473449
def recoils_composition(self) -> Composition:
34483450
r"""
@@ -3615,7 +3617,7 @@ def number_of_descents(self, final_descent=False) -> int:
36153617
sage: Permutation([1,4,3,2]).number_of_descents(final_descent=True)
36163618
3
36173619
"""
3618-
return len(self.descents(final_descent))
3620+
return Integer(len(self.descents(final_descent)))
36193621

36203622
def number_of_idescents(self, final_descent=False) -> int:
36213623
r"""
@@ -3633,7 +3635,7 @@ def number_of_idescents(self, final_descent=False) -> int:
36333635
sage: Permutation([1,4,3,2]).number_of_idescents(final_descent=True)
36343636
3
36353637
"""
3636-
return len(self.idescents(final_descent))
3638+
return Integer(len(self.idescents(final_descent)))
36373639

36383640
@combinatorial_map(name='descent composition')
36393641
def descents_composition(self) -> Composition:
@@ -3720,7 +3722,7 @@ def major_index(self, final_descent=False) -> Integer:
37203722
6
37213723
"""
37223724
descents = self.descents(final_descent)
3723-
return sum(descents)
3725+
return Integer(sum(descents))
37243726

37253727
def multi_major_index(self, composition):
37263728
r"""
@@ -3789,7 +3791,7 @@ def imajor_index(self, final_descent=False) -> Integer:
37893791
sage: Permutation([4,3,2,1]).imajor_index()
37903792
6
37913793
"""
3792-
return sum(self.idescents(final_descent))
3794+
return Integer(sum(self.idescents(final_descent)))
37933795

37943796
def to_major_code(self, final_descent=False):
37953797
r"""
@@ -3873,7 +3875,7 @@ def number_of_peaks(self) -> int:
38733875
sage: Permutation([4,1,3,2,6,5]).number_of_peaks()
38743876
2
38753877
"""
3876-
return len(self.peaks())
3878+
return Integer(len(self.peaks()))
38773879

38783880
#############
38793881
# Saliances #
@@ -3920,7 +3922,7 @@ def number_of_saliances(self) -> int:
39203922
sage: Permutation([5,4,3,2,1]).number_of_saliances()
39213923
5
39223924
"""
3923-
return len(self.saliances())
3925+
return Integer(len(self.saliances()))
39243926

39253927
################
39263928
# Bruhat Order #

0 commit comments

Comments
 (0)