o
    jgN                     @   s2  d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZ d d	lmZmZmZmZ d d
lmZmZ ejZe
dddZdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&d d! Z'd"d# Z(d$d% Z)d&d' Z*d(d) Z+d*d+ Z,d,d- Z-d.S )/    )permutations)copy)	unchanged)Integer)Eq)Symbol)S)Permutation
_af_parity_af_rmul	_af_rmulnAppliedPermutationCycle)sstrsreprprettylatex)raiseswarns_deprecated_sympyaTintegerc               	      s&  t tdd  tg d  fddt jD t ksJ  tt jt ks.J t ddg dks;J t t fd	d t t fd
d t ttdksYJ    ksaJ t  ksiJ tddtdkstJ ttdddtdksJ tddggddtddgdgdggksJ tdtddgtddgfv sJ tg d tdgg dg} t	  hdksJ tg d}tt
dd  | |fD  j}t | |j|ksJ t | |fD ]\}}}|||f | |fkrqt|||j|ksJ q  ttdksJ |  g dks J t jj jks,J  jdks4J | jdks<J | jdksDJ t|  tg dksRJ t | tg dks`J t j| jg dksnJ ttg dddggtg ddgdggjg dddggksJ | jg dksJ | jg dgksJ | jg ddggksJ  jg dg dgksJ   }|g dksJ tjd d |D  sJ tddg d!gksJ  d"  ksJ | d ttt| jksJ | d# | d  ksJ | d tg d$ksJ | d | d |  ks'J | d | d | d  ks6J tdd}tddd}td}| |d% ksOJ ||  |ksYJ ||d%  ||  ksgJ tddddd&dd} |    | ksJ  |   j| ksJ |     | ksJ t t fd'd  |    tdd&ddddd ksJ   |   dk sJ |     tddd&ddd ksJ  |  tt
d(d |  fD  ksJ  tg   ksJ tg    ksJ  tddgg tg d)ksJ tddgg  tg d*ks0J  | A }|tg d+ks?J |t|  |  ksKJ |  A }	|	tg d,ksZJ |	t |   ksfJ t t fd-d  | tddddd&ddksJ |  tdddd&dddksJ  | |   ksJ t t fd.d t	  dksJ |  h d/ksJ   g d0ksJ |  g d1ksJ t   ksJ t|  j| jksJ t td2d  tttd3d%d% d4ksJ tg d5}
|
 dksJ |
j}t	|
j|
jkr*|
 dks,J |
jr2J |
js8J tg d6 dksEJ t g d5dksPJ t g d6dks[J tdg}
|
j!sfJ tg j"snJ tg d7}|d j#s|J t   j#sJ   d" tg d8ksJ  $ d&ksJ  % dksJ td&gdgg d9g} | $ dksJ | % dksJ tg d: tg d;ddgg}  & g d<ksJ | & g dksJ |& g ksJ  ' g d=ksJ | ' g d>ksJ t|' j#sJ   dksJ t tt $ d  $ d?  }t| dks9J  ( d%ksBJ |  d@ksKJ | ( d%ksTJ t    dksaJ t   ( dksnJ  ) d&kswJ | ) dAksJ   )  j#sJ  * d&ksJ | * dksJ |* dksJ  + ddgdgg dBdggksJ | + dgg dCdd&gdggksJ |+ dgdgdgdggksJ  , dDksJ | , dDksJ |, dksJ  -| | - ksJ  .|  .| ksJ  /|  /| ksJ tg d tg d7}  -| d&ks4J  .| dks>J  /| dDksHJ tg dE t0ddd}  .| dks_J t t fdFd t t fdGd t t fdHd dId tdD }tg d}tdD ]R}t|d dD ]G}|| 1|| t|| || t|| || kksJ || 1|| r|| || |ksJ || || |ksJ qqtd}tdd&ddd}|j2ddiksJ |j2ddddJksJ t tdKd  t tdLd  d S )MNc                   S   s
   t dgS )N   r	    r   r   c/var/www/html/zoom/venv/lib/python3.10/site-packages/sympy/combinatorics/tests/test_permutations.py<lambda>      
 z"test_Permutation.<locals>.<lambda>r   r         c                    s   g | ]} |qS r   r   .0ipr   r   
<listcomp>       z$test_Permutation.<locals>.<listcomp>r   r   r   r   r   r    c                          dS )Nr   r   r$   r   r   r          c                      r)   )N   r   r   r$   r   r   r      r+      sizer    r,   r   r   r,   r      r    r   r-   )r   r    r,   r1   r   r-   )r   r    r   r   r-   r1   r,   c                 S   s   g | ]}|j qS r   )
array_formr"   wr   r   r   r&   .   s       )r   r   r    r-   r,   r1   i  )r-   r1   r   r   r,   r    r   )r1   r,   r    r   r   r-   r   )r   r   r    )r   r   r-   )r   r-   r   )r    r   r-   r,   r   r1   r   )r   r   r   r,   )r    r1   r-   ))r   r,   r   r   )r   r   )r    r-   )r    r1   c                 S   s   g | ]}t t| qS r   )r	   r   )r"   tir   r   r   r&   K       r6      )r,   r   r   r1   r    r   r-   r*   r1   c                      s    t ttd S )N
   )r	   listranger   r$   r   r   r   `   r'   c                 S      g | ]}t |qS r   )r<   r3   r   r   r   r&   f   r'   )r   r,   r   r1   r    r   r-   )r,   r   r   r1   r    r   r-   )r,   r1   r   r-   r   r   r    )r-   r    r1   r   r   r,   r   c                      s    t g A S Nr   r   r$   r   r   r   r       c                           tg S r?   )
commutatorr	   r   r$   r   r   r   w       >   r   r   r   r    r-   r,   r1   )r   r-   r   r    r   r   )r    r   r   r   r   r   c                   S   s   t ddgS )Nr   r   )r	   from_inversion_vectorr   r   r   r   r      rC   i  iB )r   r-   r   r    r   r   r   r-   r    r   r    r   r   r   )r,   r   r   r-   r1   r   r    r   r   r   r    r-   r   r,   r   r   r    r1   r-   r   r   r    r,   r1   )r   r    r-   )r   r   r,   )r   r    r,         r;   )r   r    r1   )r   r    r,      )r   r    r   r   r-   c                      rA   r?   )get_adjacency_distancer	   r   r$   r   r   r      rC   c                      rA   r?   )get_positional_distancer	   r   r$   r   r   r      rC   c                      rA   r?   )get_precedence_distancer	   r   r$   r   r   r      rC   c                 S   s   g | ]}t d |qS r-   )r	   unrank_nonlexr!   r   r   r   r&      r8   )r   r    r   c                   S   s   t dddS )Nr    r.   r   r   r   r   r   r      r@   c                   S   s   t g dddS )Nr   r   r   r    r    r.   r   r   r   r   r   r          )3r   
ValueErrorr	   r=   r/   r<   	TypeErrorr   randomlenr   r2   rmulr   supportcyclic_formcardinalitycyclesr   full_cyclic_formtranspositionsrank_rankrB   atomsinversion_vectorrD   
inversionsparity_cyclic_formis_oddis_evenr
   is_Singletonis_Emptyis_Identitymaxminascentsdescents	signatureorderlengthrunsindexrO   rM   rN   josephuscommutes_withcycle_structure)qransr   bctIpqqps_bigidenr#   jr   r$   r   test_Permutation   s`  $,&

 
..($$$$
"$
&&&""
r   c                     s   G dd dt   g d} t g d| ksJ ttfdd ddg| ddgks/J t|   ks9J t|  t ksCJ  fd	d
}|  d S )Nc                       s4   e Zd Z fddZ fddZ fddZ  ZS )z7test_Permutation_subclassing.<locals>.CustomPermutationc                    sV   zt  j| W S  ty   Y nw z|d } fdd|D W S  ty*   tdw )Nr   c                    s   g | ]} j | qS r   )_array_form)r"   r   selfr   r   r&      s    zTtest_Permutation_subclassing.<locals>.CustomPermutation.__call__.<locals>.<listcomp>zunrecognized argument)super__call__rU   )r   r#   perm_obj	__class__r   r   r      s   z@test_Permutation_subclassing.<locals>.CustomPermutation.__call__c                    s&   t |tr|  | kS t |S r?   )
isinstancer	   _hashable_contentr   __eq__)r   otherr   r   r   r      s   
z>test_Permutation_subclassing.<locals>.CustomPermutation.__eq__c                    
   t   S r?   )r   __hash__r   r   r   r   r      s   
z@test_Permutation_subclassing.<locals>.CustomPermutation.__hash__)__name__
__module____qualname__r   r   r   __classcell__r   r   r   r   CustomPermutation   s    r   r   r   r    r   c                      s    ddgS Nr   r   r   r   )rw   r   r   r     r@   z.test_Permutation_subclassing.<locals>.<lambda>r   r    r   c                      s<   t  d t  d<  t  d< t  t  d t  d< t  d= d S )Nr	   __Perm)globalsr   r   )r   r   r   wrapped_test_Permutation  s
   
z>test_Permutation_subclassing.<locals>.wrapped_test_Permutation)r	   r   rU   type)r%   r   r   )r   rw   r   test_Permutation_subclassing   s   
r   c                   C   s6   t dddt g dksJ t dddjsJ d S )Nr-   r1   r   )r    r   r   r   r,   r-   r,   )r	   rt   rj   r   r   r   r   test_josephus  s   r   c                  C   s  t dd dksJ t dd} |  dksJ |  }| dks&J t dd dks2J t ddjs;J t dd} |  dksIJ | jg d	ksRJ |  d u sZJ t g d
} t g dddgg}dd tdD }|g dg dg dg dg dgksJ dd |D ttdksJ t g d t g dksJ |	 dksJ | 	 dksJ t ddg	 dksJ t ttd}|}g }g }tdD ]}|
| |
| | }| }q||  krd u sJ  J dd |D dd |D ks	J t g d} t dgdgg dg}|  dks#J | dks,J t g  dks7J |  }|dksBJ t d d| ksMJ | }	|	d!ksXJ t d d!t |jksfJ d"d td#D }|g d$g d%g d&g d'g d(g d)g dg d*g d+g dg d,g d-g d.g d/g d0g d1g d	g d2g dg d3g d4g d5g dg dgksJ d}
t |d }td|
d D ]}|t ||  }qt jd6d ||
d d7 D  }||ksJ g }t ddg} tdD ]}|
| j |  } | d u r|
d   nq|ddgddgd gks#J t g d% t g d&ks4J d8d |D ttd#ksDJ d S )9Nr,   r;            r   r-      rF   rH   rI   c                 S      g | ]	}t d |jqS rP   )r	   unrank_trotterjohnsonr2   r!   r   r   r   r&   *      z test_ranking.<locals>.<listcomp>r   r   r   r    r   r   r    r   r   )r    r   r   r   )r    r   r   r   c                 S      g | ]}t | qS r   )r	   rank_trotterjohnsonr"   par   r   r   r&   -  r8   i  i=  r   r    r1   c                 S   s   h | ]}t |qS r   )tuple)r"   r   r   r   r   	<setcomp>>  r'   ztest_ranking.<locals>.<setcomp>r0   rG   i  if  i@  r5   )   c                 S   r   rP   r	   rQ   r2   r!   r   r   r   r&   L  r      r   )r    r   r   r   )r   r    r   r   rR   )r   r    r   r   )r   r   r    r   )r   r   r   r    )r   r    r   r   )r   r   r    r   )r   r   r   r    )r   r   r    r   )r   r    r   r   )r    r   r   r   )r   r   r   r    r   r   r    r   r(   r    r   r   r   )r   r    r   r   c                 S   r>   r   r   )r"   hr   r   r   r&   X  r'   r*   c                 S   r   r   )r	   rank_nonlexr   r   r   r   r&   e  r8   )r	   
unrank_lexr_   next_lexrj   r2   r=   r<   next_trotterjohnsonr   appendr   rQ   rmul_with_afnext_nonlex)r%   p1rw   r   rz   ltjr#   prankqrankNp2okr   r   r   test_ranking  s   




"

"$r   c                     s4  g dg d}  t |  g dksJ t|  ttdg dks$J tt| t jg dks4J tg d} d dt|  tg dksMJ t| tg dks[J tt fdd	 d
d}fddt|D } tt}t|D ]}t || | }t| d |d   }||ksJ q~d S )Nr(   r   r   r-   r   r   rF   c                      s   t  S r?   )r	   rX   r   )rz   r{   r   r   r   s  r@   ztest_mul.<locals>.<lambda>r1   rL   c                    s   g | ]	}t  |jqS r   r   r!   )nr   r   r&   w  r   ztest_mul.<locals>.<listcomp>r   )	r   r   r<   r=   rX   r	   r2   r   rU   )r   mr   r#   h2r   )rz   r{   r   r   test_mulh  s&     r   c                  C   s^  t ddg} | jd u sJ t | | ksJ | jg dddggks"J | jg dks+J t d} | jd u s6J | jg dks?J t dgt dksJJ t dgdggt d	  krbt ddgfkseJ  J t dd
ggt g dkstJ t dgdd
ggt g dksJ t dgdd
ggddt g dksJ t dgdd
ggddt g dksJ t ddgdd
ggt ddd
ksJ t g ddt g dksJ t ddg dksJ t ddg ksJ t ddd
dg dksJ t ddd
 g dksJ ttdd  ttdd  ttdd  ttdd  t ddt g dks-J d S )Nr   )r-   r,   r-   r,   )r    r   r   r   r,   r-   r   r   r   )r   )r   r   r   r   r   rE   r.   r1   )r   r   r-   r    r   r,   r    r   r   r   rG   r*   )r   r   r   r    r-   r,   c                   S   s   t ddgdgS Nr   r   r   r   r   r   r   r   r     rS   ztest_args.<locals>.<lambda>c                   S   s   t ddgdgS r   r   r   r   r   r   r     rS   c                   S   s   t g dS )N)r   r   r   r   r   r   r   r   r     r@   c                   S   s   t ddgddS )Nr-   r,   r;   r.   r   r   r   r   r   r     rS   )r   r   r   r    r,   r-   )r	   re   rZ   r   r<   r   rT   r$   r   r   r   	test_args  s>   "&
$   r   c                  C   s  t t dks	J ttddtddksJ tdd tddks%J ttdddg dks3J tddddtdddksCJ tddddddtdddddksYJ ttddddddjsnJ tdddttd	d
  tdd g dksJ tdddg dksJ tddddgksJ tddg dksJ ttddddtg dksJ t tdddddksJ t tdddksJ ttttdt ksJ tdd g dksJ tdddg dksJ t j	dksJ ttdd
  ttdd
  tt
dd
  ttdd
  ttdd
  tddgddggdd} tt| | ksAJ d S )N()r   r   r    r   r-   r,   r   c                   S   r   r?   )r   r<   r   r   r   r   r     r   ztest_Cycle.<locals>.<lambda>r   r(   r1   r   r   r   r    r-   r,   r.   z
(1 2)(4 5)(1 2)c                   S   s   t dS )N)r   r   r   r   r   r   r   r     r+   c                   S   s   t dddS r   r   r   r   r   r   r     r@   c                   S   s   t ddi  S r   r   r   r   r   r   r     rC   c                   S   s   t dt S Nr-   )r   r   r   r   r   r   r     r@   c                   S   s   t dddS )Nr   r    r   r   r   r   r   r     r@   )strr   r   r<   r	   rZ   r   rT   r=   r/   rU   r$   r   r   r   
test_Cycle  s8    ,*
r   c                   C   sL   t dt ddddksJ t jddd dt ddd	ddks$J d S )
NSymPyr-   r   r   r    c                 S   s   |   S r?   )lowerxr   r   r   r     r+   z$test_from_sequence.<locals>.<lambda>)keyr   )r	   from_sequencer   r   r   r   test_from_sequence  s   r   c                      s   t ddd  dt dddddksJ  dt dddddks$J  d ks-J tt fdd	 t ddddddd
  dt dddksOJ tt fdd	 d S )Nr   r   r   r,   r.   r-   r    c                      
     dS )Nr   resizer   r$   r   r   r     r   ztest_resize.<locals>.<lambda>r1   c                      r   r   r   r   r$   r   r   r     r   )r	   r   r   rT   r   r   r$   r   test_resize  s   r   c                  C   sr   t g d} t| dksJ t| dksJ t  }t|dks!J t|dks)J t g d}t|dks7J d S )Nr   zPermutation(1, 2)r   zPermutation()r   rR   zPermutation(3)(0, 1, 2))r	   reprr   )r   r   p3r   r   r   test_printing_cyclic  s   r   c                  C   s   t g d} t| dddksJ t| dddksJ t g d}t|dddks*J t|dddks4J t g d}t|dddksDJ t|dddksNJ t g d	}t|ddd
ks^J d S )Nr   F)perm_cycliczPermutation([], size=6)r   zPermutation([0, 1, 2])r   zPermutation([0, 2, 1]))r   r   r    r   r-   r,   r1   r5   z!Permutation([0, 1, 3, 2], size=8))r	   r   r   )r   r   r   p4r   r   r   test_printing_non_cyclic  s   r   c                  C   s  t ddd} zdt _t  t| dksJ W d    n1 s w   Y  t  t| dks1J W d    n1 s;w   Y  t  t| dksLJ W d    n1 sVw   Y  t  t| dksgJ W d    n1 sqw   Y  dt _t  t| d	ksJ W d    n1 sw   Y  t  t| d	ksJ W d    n1 sw   Y  t  t| dd
dksJ W d    n1 sw   Y  t  t| dksJ W d    n1 sw   Y  W d t _d S W d t _d S d t _w )Nr   r   r   Tz(0 1 2)zPermutation(0, 1, 2)z\left( 0\; 1\; 2\right)FzPermutation([1, 2, 0]))use_unicodez/0 1 2\
\1 2 0/z4\begin{pmatrix} 0 & 1 & 2 \\ 1 & 2 & 0 \end{pmatrix})r	   print_cyclicr   r   r   r   r   r$   r   r   r   test_deprecated_print_cyclic  sB   

r   c                  C   s   t ddd} t ddd}t| |tju sJ t ddd}t| |tju s&J t ddddd}tt| |s6J t ddddd}tt| |sFJ t  }tt|dsQJ ttd|sYJ d S )Nr   r   r   r-   r.   )r	   r   r   truefalser   )r   rz   r{   der#   r   r   r   test_permutation_equality  s   r   c                  C   s@   t dd} t dd}| |ksJ t| dksJ | |ksJ d S )Nr   r   zCycle(1, 2))r   r   )c1c2r   r   r   test_issue_17661  s
   

r   c                      s   t dtddd  ddksJ t dtsJ  t ks)J t ddks6J t dddtt fdd t dd	d
tt fdd d S )Nr   r   r   r   Fr   c                      
     S r?   applyr   r%   r   r   r   r   )  r   z(test_permutation_apply.<locals>.<lambda>T)negativec                      r   r?   r   r   r   r   r   r   +  r   )	r   r	   r   r   r   r   subsr   NotImplementedErrorr   r   r   r   test_permutation_apply   s   r   c                     sX   t d tddd} tt fdd t| ddddksJ t| dd	djtks*J d S )
Nr   r   r   r   c                      s
   t d S )Nr   )r   r   r   r   r   r   1  r   z)test_AppliedPermutation.<locals>.<lambda>T)evaluateF)r   r	   r   rT   r   r   r$   r   r   r   test_AppliedPermutation.  s   r   N).	itertoolsr   r   sympy.core.exprr   sympy.core.numbersr   sympy.core.relationalr   sympy.core.symbolr   sympy.core.singletonr    sympy.combinatorics.permutationsr	   r
   r   r   r   r   sympy.printingr   r   r   r   sympy.testing.pytestr   r   rX   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s:      V.M! 