49
49
D = (0 , - 1 )
50
50
51
51
FPL_edges = (
52
- # 0 UD 1 RD, 2 UR, 3 LR, 4 LD 5 LU
53
- ((D ,U ), (L ,D ), (D ,R ), (R ,L ), (L ,U ), (R ,U )), # even
54
- ((R ,L ), (R ,U ), (L ,U ), (D ,U ), (D ,R ), (L ,D )) # odd
55
- )
52
+ # 0 UD 1 RD, 2 UR, 3 LR, 4 LD 5 LU
53
+ ((D , U ), (L , D ), (D , R ), (R , L ), (L , U ), (R , U )), # even
54
+ ((R , L ), (R , U ), (L , U ), (D , U ), (D , R ), (L , D )) # odd
55
+ )
56
56
57
57
FPL_turns = (
58
- # 0 UD 1 RD 2 UR 3 LR 4 LD 5 LU
59
- ({U : U , D : D }, {R : D , U : L }, {U : R , L : D }, {L : L , R : R }, {R : U , D : L }, {L : U , D : R }), # even
60
- ({L : L , R : R }, {L : U , D : R }, {R : U , D : L }, {U : U , D : D }, {U : R , L : D }, {R : D , U : L }) # odd
61
- )
58
+ # 0 UD 1 RD 2 UR 3 LR 4 LD 5 LU
59
+ ({U : U , D : D }, {R : D , U : L }, {U : R , L : D }, {L : L , R : R }, {R : U , D : L }, {L : U , D : R }), # even
60
+ ({L : L , R : R }, {L : U , D : R }, {R : U , D : L }, {U : U , D : D }, {U : R , L : D }, {R : D , U : L }) # odd
61
+ )
62
62
63
63
64
- def _make_color_list (n , colors = None , color_map = None , randomize = False ):
64
+ def _make_color_list (n , colors = None , color_map = None , randomize = False ):
65
65
r"""
66
66
TESTS::
67
67
@@ -530,7 +530,7 @@ def __classcall_private__(cls, generator):
530
530
M = generator .to_alternating_sign_matrix ().to_matrix ()
531
531
AlternatingSignMatrix (M )
532
532
SVM = generator
533
- else : # Not ASM nor SVM
533
+ else : # Not ASM nor SVM
534
534
try :
535
535
SVM = AlternatingSignMatrix (generator ).to_six_vertex_model ()
536
536
except (TypeError , ValueError ):
@@ -608,22 +608,22 @@ def _repr_(self):
608
608
# List are in the order of URDL
609
609
# One set of rules for how to draw around even vertex, one set of rules for odd vertex
610
610
n = len (self ._six_vertex_model ) - 1
611
- ascii1 = [[r' ' , ' -' , r' ' , '- ' ], # LR
612
- [r' | ' , ' ' , r' ' , '- ' ], # LU
613
- [r' ' , ' ' , r' | ' , '- ' ], # LD
614
- [r' | ' , ' ' , r' | ' , ' ' ], # UD
615
- [r' | ' , ' -' , r' ' , ' ' ], # UR
616
- [r' ' , ' -' , r' | ' , ' ' ]] # RD
617
-
618
- ascii2 = [[r' | ' , ' ' , r' | ' , ' ' ], # LR
619
- [r' ' , ' -' , r' | ' , ' ' ], # LU
620
- [r' | ' , ' -' , r' ' , ' ' ], # LD
621
- [r' ' , ' -' , r' ' , '- ' ], # UD
622
- [r' ' , ' ' , r' | ' , '- ' ], # UR
623
- [r' | ' , ' ' , r' ' , '- ' ]] # RD
611
+ ascii1 = [[r' ' , ' -' , r' ' , '- ' ], # LR
612
+ [r' | ' , ' ' , r' ' , '- ' ], # LU
613
+ [r' ' , ' ' , r' | ' , '- ' ], # LD
614
+ [r' | ' , ' ' , r' | ' , ' ' ], # UD
615
+ [r' | ' , ' -' , r' ' , ' ' ], # UR
616
+ [r' ' , ' -' , r' | ' , ' ' ]] # RD
617
+
618
+ ascii2 = [[r' | ' , ' ' , r' | ' , ' ' ], # LR
619
+ [r' ' , ' -' , r' | ' , ' ' ], # LU
620
+ [r' | ' , ' -' , r' ' , ' ' ], # LD
621
+ [r' ' , ' -' , r' ' , '- ' ], # UD
622
+ [r' ' , ' ' , r' | ' , '- ' ], # UR
623
+ [r' | ' , ' ' , r' ' , '- ' ]] # RD
624
624
ret = ' '
625
625
# Do the top line
626
- for i ,entry in enumerate (self ._six_vertex_model [0 ]):
626
+ for i , entry in enumerate (self ._six_vertex_model [0 ]):
627
627
if i % 2 == 0 :
628
628
ret += ' | '
629
629
else :
@@ -632,47 +632,47 @@ def _repr_(self):
632
632
plus_sign = '+'
633
633
634
634
# Do the meat of the ascii art
635
- for j ,row in enumerate (self ._six_vertex_model ):
635
+ for j , row in enumerate (self ._six_vertex_model ):
636
636
ret += '\n '
637
637
# Do the top row
638
- for i ,entry in enumerate (row ):
638
+ for i , entry in enumerate (row ):
639
639
if (i + j ) % 2 == 0 :
640
640
ret += ascii1 [entry ][0 ]
641
641
else :
642
642
ret += ascii2 [entry ][0 ]
643
643
ret += '\n '
644
644
645
645
# Do the left-most entry
646
- if ( j ) % 2 == 0 :
646
+ if j % 2 == 0 :
647
647
ret += ' '
648
648
else :
649
649
ret += ' -'
650
650
651
651
# Do the middle row
652
- for i ,entry in enumerate (row ):
652
+ for i , entry in enumerate (row ):
653
653
if (i + j ) % 2 == 0 :
654
654
ret += ascii1 [entry ][3 ] + plus_sign + ascii1 [entry ][1 ]
655
655
else :
656
656
ret += ascii2 [entry ][3 ] + plus_sign + ascii2 [entry ][1 ]
657
657
658
658
# Do the right-most entry
659
- if (j + n ) % 2 == 0 :
659
+ if (j + n ) % 2 == 0 :
660
660
ret += ' '
661
661
else :
662
662
ret += '- '
663
663
664
664
# Do the bottom row
665
665
ret += '\n '
666
- for i ,entry in enumerate (row ):
667
- if (i + j ) % 2 == 0 :
666
+ for i , entry in enumerate (row ):
667
+ if (i + j ) % 2 == 0 :
668
668
ret += ascii1 [entry ][2 ]
669
669
else :
670
670
ret += ascii2 [entry ][2 ]
671
671
672
672
# Do the bottom line
673
673
ret += '\n '
674
- for i ,entry in enumerate (self ._six_vertex_model [- 1 ]):
675
- if (i + n + 1 ) % 2 == 0 :
674
+ for i , entry in enumerate (self ._six_vertex_model [- 1 ]):
675
+ if (i + n + 1 ) % 2 == 0 :
676
676
ret += ' '
677
677
else :
678
678
ret += ' | '
@@ -879,7 +879,7 @@ def plot(self, **options):
879
879
unrank = self .parent ()._boundary
880
880
seen = [False ] * (2 * n )
881
881
882
- squares = set ((i ,j ) for i in range (n ) for j in range (n ))
882
+ squares = set ((i , j ) for i in range (n ) for j in range (n ))
883
883
884
884
colors = _make_color_list (2 * n ,
885
885
colors = link_options .pop ('colors' , None ),
@@ -922,7 +922,7 @@ def plot(self, **options):
922
922
loop_options ['color' ] = colors .pop ()
923
923
924
924
# make it upside down
925
- orbit = [(j , n - i - 1 ) for i ,j in orbit ]
925
+ orbit = [(j , n - i - 1 ) for i , j in orbit ]
926
926
927
927
if fill :
928
928
G += polygon2d (orbit , ** loop_options )
@@ -1025,13 +1025,13 @@ def _link_or_loop_from(self, pos, d0=None):
1025
1025
raise RuntimeError
1026
1026
1027
1027
if i == - 1 or j == - 1 or i == n or j == n :
1028
- i0 ,j0 = orbit [0 ]
1028
+ i0 , j0 = orbit [0 ]
1029
1029
if d0 is None and i0 != - 1 and i0 != n and j0 != - 1 and j0 != n :
1030
1030
# only half of a link -> compute the other half
1031
- i1 ,j1 = orbit [1 ]
1031
+ i1 , j1 = orbit [1 ]
1032
1032
d = (i0 - i1 , j0 - j1 )
1033
1033
orbit2 = self ._link_or_loop_from (orbit [1 ], d )
1034
- assert orbit2 [0 ] == (i1 ,j1 ) and orbit2 [1 ] == (i0 ,j0 )
1034
+ assert orbit2 [0 ] == (i1 , j1 ) and orbit2 [1 ] == (i0 , j0 )
1035
1035
return orbit2 [:1 :- 1 ] + orbit
1036
1036
return orbit
1037
1037
else :
@@ -1156,7 +1156,7 @@ def link_pattern(self):
1156
1156
if seen [k ]:
1157
1157
continue
1158
1158
1159
- i ,j = unrank (k )
1159
+ i , j = unrank (k )
1160
1160
1161
1161
# initial direction
1162
1162
if i == - 1 :
@@ -1180,7 +1180,7 @@ def link_pattern(self):
1180
1180
d = FPL_turns [parity ][conf ][d ]
1181
1181
1182
1182
# update seen and link_pattern
1183
- l = rank ((i ,j ))
1183
+ l = rank ((i , j ))
1184
1184
seen [k ] = seen [l ] = True
1185
1185
link_pattern .append ((k + 1 , l + 1 ))
1186
1186
@@ -1294,7 +1294,7 @@ def _repr_(self):
1294
1294
sage: FPLs = FullyPackedLoops(4); FPLs
1295
1295
Fully packed loops on a 4x4 grid
1296
1296
"""
1297
- return "Fully packed loops on a %sx%s grid" % (self ._n ,self ._n )
1297
+ return "Fully packed loops on a %sx%s grid" % (self ._n , self ._n )
1298
1298
1299
1299
def __contains__ (self , fpl ):
1300
1300
"""
@@ -1368,7 +1368,7 @@ def _element_constructor_(self, generator):
1368
1368
if isinstance (generator , AlternatingSignMatrix ):
1369
1369
SVM = generator .to_six_vertex_model ()
1370
1370
elif isinstance (generator , SquareIceModel .Element ) or \
1371
- isinstance (generator , SixVertexConfiguration ):
1371
+ isinstance (generator , SixVertexConfiguration ):
1372
1372
SVM = generator
1373
1373
else : # Not ASM nor SVM
1374
1374
try :
@@ -1407,11 +1407,11 @@ def cardinality(self):
1407
1407
1408
1408
EXAMPLES::
1409
1409
1410
- sage: [AlternatingSignMatrices(n).cardinality() for n in range(11 )]
1411
- [1, 1, 2, 7, 42, 429, 7436, 218348, 10850216, 911835460, 129534272700 ]
1410
+ sage: [AlternatingSignMatrices(n).cardinality() for n in range(10 )]
1411
+ [1, 1, 2, 7, 42, 429, 7436, 218348, 10850216, 911835460]
1412
1412
"""
1413
- return Integer (prod ( [ factorial (3 * k + 1 ) / factorial (self ._n + k )
1414
- for k in range (self ._n )] ))
1413
+ return Integer (prod (factorial (3 * k + 1 ) / factorial (self ._n + k )
1414
+ for k in range (self ._n )))
1415
1415
1416
1416
def _an_element_ (self ):
1417
1417
"""
@@ -1433,9 +1433,9 @@ def _an_element_(self):
1433
1433
| |
1434
1434
| |
1435
1435
"""
1436
- #ASM = AlternatingSignMatrix(matrix.identity(self._n))
1437
- #SVM = ASM.to_six_vertex_model()
1438
- SVM = SixVertexModel (self ._n ,boundary_conditions = 'ice' ).an_element ()
1436
+ # ASM = AlternatingSignMatrix(matrix.identity(self._n))
1437
+ # SVM = ASM.to_six_vertex_model()
1438
+ SVM = SixVertexModel (self ._n , boundary_conditions = 'ice' ).an_element ()
1439
1439
return self .element_class (self , SVM )
1440
1440
1441
1441
def _boundary (self , k ):
@@ -1457,19 +1457,19 @@ def _boundary(self, k):
1457
1457
True
1458
1458
"""
1459
1459
n = self ._n
1460
- n_LR = n // 2 if n % 2 == 0 else (n + 1 ) // 2
1461
- n_TB = n // 2 if n % 2 == 0 else (n - 1 ) // 2
1460
+ n_LR = n // 2 if n % 2 == 0 else (n + 1 ) // 2
1461
+ n_TB = n // 2 if n % 2 == 0 else (n - 1 ) // 2
1462
1462
if k < n_LR :
1463
1463
return (- 1 , 2 * k )
1464
1464
k -= n_LR
1465
1465
if k < n_TB :
1466
- return (n % 2 + 2 * k , n )
1466
+ return (n % 2 + 2 * k , n )
1467
1467
k -= n_TB
1468
1468
if k < n_LR :
1469
1469
return (n , n - 1 - 2 * k )
1470
1470
k -= n_LR
1471
1471
if k < n_TB :
1472
- return (n - 1 - n % 2 - 2 * k , - 1 )
1472
+ return (n - 1 - n % 2 - 2 * k , - 1 )
1473
1473
1474
1474
def _boundary_index (self , pos ):
1475
1475
r"""
0 commit comments