Skip to content

Commit 167acc9

Browse files
committed
formated Integer_vector.py according to sagemath guidelines
1 parent 7fe22d1 commit 167acc9

File tree

1 file changed

+62
-58
lines changed

1 file changed

+62
-58
lines changed

src/sage/combinat/integer_vector.py

Lines changed: 62 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
from sage.rings.integer import Integer
4949

5050

51-
def is_gale_ryser(r,s):
51+
def is_gale_ryser(r, s):
5252
r"""
5353
Tests whether the given sequences satisfy the condition
5454
of the Gale-Ryser theorem.
@@ -314,20 +314,20 @@ def gale_ryser_theorem(p1, p2, algorithm="gale",
314314
"""
315315
from sage.matrix.constructor import matrix
316316

317-
if not is_gale_ryser(p1,p2):
317+
if not is_gale_ryser(p1, p2):
318318
return False
319319

320-
if algorithm == "ryser": # ryser's algorithm
320+
if algorithm == "ryser": # ryser's algorithm
321321
from sage.combinat.permutation import Permutation
322322

323323
# Sorts the sequences if they are not, and remembers the permutation
324324
# applied
325-
tmp = sorted(enumerate(p1), reverse=True, key=lambda x:x[1])
325+
tmp = sorted(enumerate(p1), reverse=True, key=lambda x: x[1])
326326
r = [x[1] for x in tmp]
327327
r_permutation = [x-1 for x in Permutation([x[0]+1 for x in tmp]).inverse()]
328328
m = len(r)
329329

330-
tmp = sorted(enumerate(p2), reverse=True, key=lambda x:x[1])
330+
tmp = sorted(enumerate(p2), reverse=True, key=lambda x: x[1])
331331
s = [x[1] for x in tmp]
332332
s_permutation = [x-1 for x in Permutation([x[0]+1 for x in tmp]).inverse()]
333333

@@ -340,12 +340,12 @@ def gale_ryser_theorem(p1, p2, algorithm="gale",
340340
k = i + 1
341341
while k < m and r[i] == r[k]:
342342
k += 1
343-
if t >= k - i: # == number rows of the same length
343+
if t >= k - i: # == number rows of the same length
344344
for j in range(i, k):
345345
r[j] -= 1
346346
c[j] = 1
347347
t -= k - i
348-
else: # Remove the t last rows of that length
348+
else: # Remove the t last rows of that length
349349
for j in range(k-t, k):
350350
r[j] -= 1
351351
c[j] = 1
@@ -366,17 +366,17 @@ def gale_ryser_theorem(p1, p2, algorithm="gale",
366366
k1, k2 = len(p1), len(p2)
367367
p = MixedIntegerLinearProgram(solver=solver)
368368
b = p.new_variable(binary=True)
369-
for (i,c) in enumerate(p1):
370-
p.add_constraint(p.sum([b[i,j] for j in range(k2)]) == c)
371-
for (i,c) in enumerate(p2):
372-
p.add_constraint(p.sum([b[j,i] for j in range(k1)]) == c)
369+
for (i, c) in enumerate(p1):
370+
p.add_constraint(p.sum([b[i, j] for j in range(k2)]) == c)
371+
for (i, c) in enumerate(p2):
372+
p.add_constraint(p.sum([b[j, i] for j in range(k1)]) == c)
373373
p.set_objective(None)
374374
p.solve()
375375
b = p.get_values(b, convert=ZZ, tolerance=integrality_tolerance)
376376
M = [[0]*k2 for i in range(k1)]
377377
for i in range(k1):
378378
for j in range(k2):
379-
M[i][j] = b[i,j]
379+
M[i][j] = b[i, j]
380380
return matrix(M)
381381

382382
else:
@@ -780,6 +780,7 @@ def __contains__(self, x):
780780
return False
781781
return True
782782

783+
783784
class IntegerVectors_all(UniqueRepresentation, IntegerVectors):
784785
"""
785786
Class of all integer vectors.
@@ -917,11 +918,11 @@ def rank(self, x):
917918
"""
918919
if sum(x) != self.n:
919920
raise ValueError("argument is not a member of IntegerVectors({},{})".format(self.n, None))
920-
921+
921922
n, k = self.n, len(x)
922923

923924
r = binomial(k+n-1, n+1)
924-
925+
925926
for i in range(k - 1):
926927
k -= 1
927928
n -= x[i]
@@ -944,29 +945,29 @@ def unrank(self, x):
944945
sage: IntegerVectors(n=10).unrank(10)
945946
[1, 9]
946947
"""
947-
ptr=0
948-
rtn=[self.n]
948+
ptr = 0
949+
rtn = [self.n]
949950
while self.rank(rtn) < x:
950951
rtn.append(0)
951952
rtn.pop()
952-
953+
953954
while True:
954955
if self.rank(rtn) < x:
955-
rtn[ptr+1]=rtn[ptr]
956-
rtn[ptr]=0
957-
ptr+=1
956+
rtn[ptr+1] = rtn[ptr]
957+
rtn[ptr] = 0
958+
ptr += 1
958959
elif self.rank(rtn) > x:
959-
rtn[ptr]-=1
960-
rtn[ptr-1]+=1
960+
rtn[ptr] -= 1
961+
rtn[ptr-1] += 1
961962
else:
962963
return self._element_constructor_(rtn)
963964

964965
def cardinality(self):
965966
"""
966967
Return the cardinality of ``self``.
967-
968+
968969
EXAMPLES::
969-
970+
970971
sage: IntegerVectors(n=0).cardinality()
971972
1
972973
sage: IntegerVectors(n=10).cardinality()
@@ -977,6 +978,7 @@ def cardinality(self):
977978
else:
978979
return PlusInfinity()
979980

981+
980982
class IntegerVectors_k(UniqueRepresentation, IntegerVectors):
981983
"""
982984
Integer vectors of length `k`.
@@ -1068,16 +1070,16 @@ def rank(self, x):
10681070
raise ValueError("argument is not a member of IntegerVectors({},{})".format(None, self.k))
10691071

10701072
n, k = sum(x), self.k
1071-
1073+
10721074
r = sum(binomial(k + i - 1, k - 1) for i in range(n))
1073-
1075+
10741076
for i in range(k - 1):
10751077
k -= 1
10761078
n -= x[i]
10771079
r += binomial(k + n - 1, n - 1)
10781080

10791081
return r
1080-
1082+
10811083
def unrank(self, x):
10821084
"""
10831085
Return the element at given rank x.
@@ -1097,28 +1099,28 @@ def unrank(self, x):
10971099
raise IndexError(f"Index {x} is out of range for the IntegerVector.")
10981100
else:
10991101
n, ptr = 0, 0
1100-
rtn=[0]*self.k
1102+
rtn = [0]*self.k
11011103
while self.rank(rtn) <= x:
1102-
n += 1
1103-
rtn[ptr]=n
1104-
rtn[ptr]-=1
1104+
n += 1
1105+
rtn[ptr] = n
1106+
rtn[ptr] -= 1
11051107
while True:
11061108
if self.rank(rtn) < x:
1107-
rtn[ptr+1]=rtn[ptr]
1108-
rtn[ptr]=0
1109-
ptr+=1
1109+
rtn[ptr+1] = rtn[ptr]
1110+
rtn[ptr] = 0
1111+
ptr += 1
11101112
elif self.rank(rtn) > x:
1111-
rtn[ptr]-=1
1112-
rtn[ptr-1]+=1
1113+
rtn[ptr] -= 1
1114+
rtn[ptr-1] += 1
11131115
else:
11141116
return self._element_constructor_(rtn)
1115-
1117+
11161118
def cardinality(self):
11171119
"""
11181120
Return the cardinality of ``self``.
1119-
1121+
11201122
EXAMPLES::
1121-
1123+
11221124
sage: IntegerVectors(k=0).cardinality()
11231125
1
11241126
sage: IntegerVectors(k=10).cardinality()
@@ -1127,8 +1129,9 @@ def cardinality(self):
11271129
if self.k == 0:
11281130
return Integer(1)
11291131
else:
1130-
return PlusInfinity()
1131-
1132+
return PlusInfinity()
1133+
1134+
11321135
class IntegerVectors_nk(UniqueRepresentation, IntegerVectors):
11331136
"""
11341137
Integer vectors of length `k` that sum to `n`.
@@ -1170,11 +1173,11 @@ def _list_rec(self, n, k):
11701173
res = []
11711174

11721175
if k == 1:
1173-
return [ (n, ) ]
1176+
return [(n, )]
11741177

11751178
for nbar in range(n + 1):
11761179
n_diff = n - nbar
1177-
for rest in self._list_rec( nbar , k - 1):
1180+
for rest in self._list_rec(nbar, k - 1):
11781181
res.append((n_diff,) + rest)
11791182
return res
11801183

@@ -1342,24 +1345,24 @@ def unrank(self, x):
13421345
if x >= len(self):
13431346
raise IndexError(f"Index {x} is out of range for the IntegerVector.")
13441347
else:
1345-
ptr=0
1346-
rtn=[0]*self.k
1347-
rtn[ptr]=self.n
1348+
ptr = 0
1349+
rtn = [0]*self.k
1350+
rtn[ptr] = self.n
13481351
while True:
1349-
if self.rank(rtn)<x:
1350-
rtn[ptr+1]=rtn[ptr]
1351-
rtn[ptr]=0
1352-
ptr+=1
1353-
elif self.rank(rtn)>x:
1354-
rtn[ptr]-=1
1355-
rtn[ptr-1]+=1
1352+
if self.rank(rtn) < x:
1353+
rtn[ptr+1] = rtn[ptr]
1354+
rtn[ptr] = 0
1355+
ptr += 1
1356+
elif self.rank(rtn) > x:
1357+
rtn[ptr] -= 1
1358+
rtn[ptr-1] += 1
13561359
else:
13571360
return self._element_constructor_(rtn)
1358-
1361+
13591362
def cardinality(self):
13601363
"""
13611364
Return the cardinality of ``self``.
1362-
1365+
13631366
EXAMPLES::
13641367
13651368
sage: IntegerVectors(3,5).cardinality()
@@ -1372,6 +1375,7 @@ def cardinality(self):
13721375
n, k = self.n, self.k
13731376
return Integer(binomial(n + k - 1, n))
13741377

1378+
13751379
class IntegerVectors_nnondescents(UniqueRepresentation, IntegerVectors):
13761380
r"""
13771381
Integer vectors graded by two parameters.
@@ -1522,16 +1526,16 @@ def __init__(self, n=None, k=None, **constraints):
15221526
del constraints['inner']
15231527
self.constraints = constraints
15241528

1525-
if n is not None :
1529+
if n is not None:
15261530
if k is not None or 'max_length' in constraints:
15271531
category = FiniteEnumeratedSets()
15281532
else:
15291533
category = EnumeratedSets()
1530-
elif k is not None and 'max_part' in constraints: # n is None
1534+
elif k is not None and 'max_part' in constraints: # n is None
15311535
category = FiniteEnumeratedSets()
15321536
else:
15331537
category = EnumeratedSets()
1534-
IntegerVectors.__init__(self, category=category) # placeholder category
1538+
IntegerVectors.__init__(self, category=category) # placeholder category
15351539

15361540
def _repr_(self):
15371541
"""

0 commit comments

Comments
 (0)