U
    ZÊ¹jØ‰  ã                   @   s  d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZN d dlOmPZP d dlQmRZRmSZS edƒ\ZTZUZVZWdd„ ZXdd„ ZYdd„ ZZdd„ Z[dd„ Z\dd„ Z]dd„ Z^dd„ Z_dd „ Z`d!d"„ Zad#d$„ Zbd%d&„ Zcd'd(„ Zdd)d*„ Zed+d,„ Zfd-d.„ Zgd/d0„ Zhd1d2„ Zid3d4„ Zjd5d6„ Zkd7d8„ Zld9d:„ Zmd;d<„ Znd=d>„ Zod?d@„ ZpdAdB„ ZqdCdD„ ZrdEdF„ ZsdGdH„ ZtdIdJ„ ZudKdL„ ZvdMdN„ ZwdOdP„ ZxdQdR„ ZydSdT„ ZzdUdV„ Z{dWdX„ Z|dYdZ„ Z}d[d\„ Z~d]d^„ Zd_d`„ Z€dadb„ Z�dcdd„ Z‚dedf„ Zƒdgdh„ Z„didj„ Z…dkdl„ Z†dmS )né    )Údedent)ÚisliceÚproduct)ÚBasic)ÚInteger©Úordered)ÚDummyÚsymbols©Ú	factorial)ÚMatrix)ÚRGS_enumÚ
RGS_unrankÚPermutation)5Ú
_partitionÚ_set_partitionsÚbinary_partitionsÚ	braceletsÚcaptureÚcartesÚcommon_prefixÚcommon_suffixÚconnected_componentsÚ
dict_mergeÚfilter_symbolsÚflattenÚgenerate_bellÚgenerate_derangementsÚgenerate_involutionsÚgenerate_oriented_forestÚgroupÚhas_dupsÚibinÚiproductÚkbinsÚminlexÚmultisetÚmultiset_combinationsÚmultiset_partitionsÚmultiset_permutationsÚ	necklacesÚnumbered_symbolsÚ
partitionsÚpermutationsÚ	postfixesÚprefixesÚreshapeÚrotate_leftÚrotate_rightÚrunsÚsiftÚstrongly_connected_componentsÚsubsetsÚtakeÚtopological_sortÚ	unflattenÚuniqÚ
variationsÚordered_partitionsÚ	rotationsÚis_palindromicÚiterableÚNotIterableÚmultiset_derangementsÚsigned_permutationsÚsequence_partitionsÚsequence_partitions_empty)Úfactoring_visitorÚmultiset_partitions_taocp)ÚS)ÚraisesÚwarns_deprecated_sympyzw,x,y,zc               	   C   sp   ddl m} m} tƒ �" t|ttgƒƒttgks4t‚W 5 Q R X tƒ �" tttg| d�ttgksbt‚W 5 Q R X d S )Nr   ©Údefault_sort_keyr   ©Úkey)	Úsympy.utilities.iterablesrL   r   rJ   ÚlistÚyÚxÚAssertionErrorÚsortedrK   © rU   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/utilities/tests/test_iterables.pyÚtest_deprecated_iterables!   s
    &rW   c                   C   s´   t dƒst‚t dƒst‚t dƒs$t‚t dƒs0t‚t dƒr<t‚t dƒrHt‚t ddƒsVt‚t dd	ƒrdt‚t dd	d
ƒstt‚t dd	dƒs„t‚t ddƒs’t‚t dd	ƒr t‚t dd	dƒs°t‚d S )NÚ rR   ZxxZxyxZxyZxyzxZxxyzzyxé   é   éÿÿÿÿé   Zxxyzyxé   )r?   rS   rU   rU   rU   rV   Útest_is_palindromic)   s    r^   c                     s<  t dƒddgkst‚t ttffƒttgks.t‚ddgdgg‰ t ˆ dd�ˆ ksPt‚t ˆ dd�dddgksjt‚t ˆ dd�d	d
ddddgksŠt‚t ˆ dd�d	d
ddddgksªt‚tt‡ fdd„ƒ G dd„ dtƒ} t | ttƒtgƒ| ttƒtgksðt‚t | ttƒtg| d�tttgk�st‚t dddhƒtdddhƒk�s8t‚d S )N)rY   ©rY   rY   )éþÿÿÿr[   ©rY   rZ   ©r   r   r   ©ZlevelsrZ   r`   r[   é   c                      s   t ˆ dd�S )Nr[   rc   )r   rU   ©ZlsrU   rV   Ú<lambda>D   ó    ztest_flatten.<locals>.<lambda>c                   @   s   e Zd ZdS )ztest_flatten.<locals>.MyOpN©Ú__name__Ú
__module__Ú__qualname__rU   rU   rU   rV   ÚMyOpF   s   rl   ©Úclsé   )	r   rS   rR   rI   Ú
ValueErrorr   rQ   ÚzrP   )rl   rU   re   rV   Útest_flatten9   s      $&rr   c               	   C   s¼  t tƒ ƒdgkst‚t tg ƒƒg ks(t‚t tdddgƒƒdddgksHt‚ttddgddd	gƒƒd
dddddgkstt‚ttddgddgddgƒƒddddddddgks¨t‚tttjƒƒdks¾t‚tttjtjƒƒdksØt‚dttjƒksêt‚dttjtjƒk�st‚dttjtjtjƒk�st‚ttttjtjtjƒdƒƒ} | D ]<\}}}t	|t
ƒ�sXt‚t	|t
ƒ�sht‚t	|t
ƒ�s>t‚�q>tttddƒgd Ž ƒD ]"}|ttjtjtjƒk�s”t‚�q”d S )NrU   rY   rZ   rd   r_   ©rZ   ©rd   é   r]   ©rY   rd   ©rY   ru   ©rY   r]   ©rZ   rd   ©rZ   ru   ©rZ   r]   r   ©r   r   r   ©r   r   rY   ©r   rY   r   ©r   rY   rY   ©rY   r   r   ©rY   r   rY   ©rY   rY   r   ©rY   rY   rY   T)ru   r]   ©rY   rZ   rd   iè  r`   )rP   r$   rS   rT   r@   rH   ZIntegersÚsetr   Ú
isinstancer   r   Úrange)ZtriplesZn1Zn2Zn3ÚtrU   rU   rV   Útest_iproductO   sB          ÿ
       ÿ
r‰   c                	   C   sp  t g ƒg kst‚t g dd�g ks$t‚t dgƒdggks:t‚t dgdd�dgksRt‚t ddgƒddggkslt‚t ddgdd�dgks†t‚t dddgƒdddggks¤t‚t dddgdd�dgksÀt‚t dddgƒdgdgdggksât‚t dddgdd�dddgk�st‚t ddddddd	d	gƒddgdddgdgd	d	ggk�s>t‚t ddddddd	d	gdd�dd
ddgk�slt‚d S )NF)ZmultiplerY   ©rY   rY   ra   rv   rZ   ©rZ   rY   rd   ry   ©rd   rZ   )r!   rS   rU   rU   rU   rV   Ú
test_groupe   s     "":  ÿr�   c                  C   sR  t tdddgdƒƒdgkst‚t tdddgdƒƒdddgks@t‚t tdddgdƒƒd	d
dgksbt‚t tdddgdƒƒdgks€t‚t tdƒƒ} t t| ddd�ƒdgks¨t‚t t| ddd�ƒddddgksÊt‚t t| ddd�ƒdddddd	d
dddg
ksøt‚t t| ddd�ƒddddddddd d!d"d#d$d%dd&d'd(d)d*gk�s<t‚tt t| ddd�ƒƒd+k�s\t‚t t| d d… dd,d�ƒg k�s€t‚t t| d d… ddd�ƒdddd"gk�s¬t‚t tddgdd�ƒddddd	dgk�sÖt‚t tddgd,d�ƒdddd	gk�süt‚t tdddgdƒƒd	d
dgk�s t‚t tdddgddd�ƒdd	d
dddgk�sNt‚d S )-NrY   rZ   rd   r   rU   r_   rs   rt   ra   rv   ry   r„   ru   T©Z
repetition©r   rb   ©r   rY   ©r   rZ   ©r   rd   rŠ   ©rZ   rZ   ©rd   rd   r|   r}   )r   r   rZ   )r   r   rd   r   ©r   rY   rZ   ©r   rY   rd   )r   rZ   rZ   ©r   rZ   rd   )r   rd   rd   rƒ   )rY   rY   rZ   )rY   rY   rd   )rY   rZ   rZ   )rY   rd   rd   )rZ   rZ   rZ   )rZ   rZ   rd   )rZ   rd   rd   )rd   rd   rd   é#   F)rP   r7   rS   r‡   Úlen©ÚlrU   rU   rV   Útest_subsetsz   sn    """    ý
         ÷
 $ýÿ

ÿ
ÿ
ÿrœ   c                  C   sÞ  t tdƒƒ} t t| ddd�ƒdgks(t‚t t| ddd�ƒddd	d
gksJt‚t t| ddd�ƒddddddddddddgks|t‚t t| ddd�ƒdddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0gksÆt‚t t| dd1d�ƒdgksât‚t t| dd1d�ƒddd	d
gk�st‚t t| dd1d�ƒd2ddddd3ddddd4ddddd5gk�sBt‚tt t| dd1d�ƒƒd6k�sbt‚tt t| dd1d�ƒƒd7k�s‚t‚t t| d d… ddd�ƒg k�s¦t‚t t| d d… dd1d�ƒd8d9d:d;d<d=d>d?gk�sÚt‚d S )@Nru   r   FrŽ   rU   rY   r�   r_   rs   rt   rZ   r�   r‘   r’   ©rY   r   ra   rv   )rZ   r   r‹   ry   )rd   r   ©rd   rY   rŒ   rd   r•   r–   ©r   rZ   rY   r—   )r   rd   rY   )r   rd   rZ   ©rY   r   rZ   )rY   r   rd   ©rY   rZ   r   r„   )rY   rd   r   )rY   rd   rZ   ©rZ   r   rY   )rZ   r   rd   ©rZ   rY   r   )rZ   rY   rd   )rZ   rd   r   )rZ   rd   rY   )rd   r   rY   )rd   r   rZ   )rd   rY   r   )rd   rY   rZ   )rd   rZ   r   )rd   rZ   rY   Trb   rŠ   r“   r”   é@   é   r|   r}   r~   r   r€   r�   r‚   rƒ   )rP   r‡   r<   rS   r™   rš   rU   rU   rV   Útest_variations¢   sF    "2J$        û  $      þr¦   c                   C   s”   t tddgdddgƒƒdddd	d
dgks,t‚t tƒ ƒdgks@t‚t tdƒƒdgksVt‚t tddd�ƒdgkspt‚t tt tdƒƒƒƒddgks�t‚d S )NrY   rZ   rd   ru   r]   rv   rw   rx   ry   rz   r{   rU   Úa)r§   )Úrepeat)r§   r§   r�   r_   )rP   r   rS   r‡   rU   rU   rU   rV   Útest_cartesº   s    ÿr©   c                  C   s2   t ƒ } t| tdƒƒ}t|dƒttdƒƒks.t‚d S )Nzx0 x2 x3rd   zx1 x4 x5)r,   r   r
   r8   rP   rS   )ÚsÚfilteredrU   rU   rV   Útest_filter_symbolsÃ   s    r¬   c                  C   sD   t td�} tt| ƒtƒst‚tt ddtdƒgd�ƒtdƒks@t‚d S )Nrm   ÚCrY   ZC1)ÚstartÚexcludeZC2)r,   r	   r†   ÚnextrS   r
   )rª   rU   rU   rV   Útest_numbered_symbolsÉ   s
    
ÿr±   c                   C   sà   t ttdƒƒdd„ ƒddgdddgd	œks.t‚t ttgd
d„ ƒtgtgdœksRt‚t tjgdd„ ƒddgiksrt‚t ddddgdd„ dd�ddgddgfks t‚t ddddgdd„ dd�dgdddgfksÎt‚tt	dd„ ƒ d S )Nr]   c                 S   s   | d S ©NrZ   rU   ©Ú_rU   rU   rV   rf   Ñ   rg   ztest_sift.<locals>.<lambda>rY   rd   r   rZ   ru   r�   c                 S   s
   |   t¡S ©N©ÚhasrR   r³   rU   rU   rV   rf   Ò   rg   )FTc                 S   s
   |   t¡S rµ   r¶   r³   rU   rU   rV   rf   Ó   rg   Fc                 S   s   | d S r²   rU   ©rR   rU   rU   rV   rf   Ô   rg   T©Úbinaryc                 S   s   | d dkS )Nrd   rY   rU   r¸   rU   rU   rV   rf   Ö   rg   c                   S   s   t ddddgdd„ dd�S )	Nr   rY   rZ   rd   c                 S   s   | d S )Nrd   rU   r¸   rU   rU   rV   rf   Ù   rg   z-test_sift.<locals>.<lambda>.<locals>.<lambda>Tr¹   )r5   rU   rU   rU   rV   rf   Ø   s    )
r5   rP   r‡   rS   rR   rQ   rH   ZOnerI   rp   rU   rU   rU   rV   Ú	test_siftÐ   s    .$  ÿ
 ÿ
r»   c                  C   sd   t ƒ } t| dƒttdƒƒks t‚t| dƒttdƒƒks:t‚tdddddgdƒdddddgks`t‚d S )Nr]   zx0:5zx5:10rY   rZ   rd   ru   )r,   r8   rP   r
   rS   )ÚXrU   rU   rV   Ú	test_takeÜ   s    r½   c                   C   sô   t i dtttiƒdtttiks"t‚t dtttii ƒdtttiksDt‚t dtidtttiƒdtdtttiksnt‚t dtttidtiƒdtdtttiks˜t‚t ttdœdtttiƒdtdtttiksÄt‚t dtttittdœƒdtdtttiksðt‚d S )NrY   rZ   ra   )r   rR   rQ   rq   rS   rU   rU   rU   rV   Útest_dict_mergeå   s    ""**,r¾   c                
   C   sš   t tg ƒƒg kst‚t tdgƒƒdggks.t‚t tddgƒƒdgddggksPt‚t tdddddgƒƒdgddgdddgddddgdddddggks–t‚d S ©NrY   rZ   rd   ru   r]   )rP   r0   rS   rU   rU   rU   rV   Útest_prefixesð   s    "*ÿrÀ   c                
   C   sš   t tg ƒƒg kst‚t tdgƒƒdggks.t‚t tddgƒƒdgddggksPt‚t tdddddgƒƒdgddgdddgddddgdddddggks–t‚d S r¿   )rP   r/   rS   rU   rU   rU   rV   Útest_postfixesù   s    "*ÿrÁ   c                	      s’   ddddddddg‰d	d
dddddddg	‰ t ˆˆ fƒddddddddgksNt‚t ˆˆ fdd„ d�ddddddddgkszt‚tt‡ ‡fdd„ƒ d S )NrZ   rd   r]   é   é   é	   é
   ro   )rÂ   ro   ©rÂ   rÃ   )r]   ro   )rd   rÃ   )rd   rÅ   )ro   rZ   )ro   rÄ   )ro   rÅ   )rÃ   rÄ   c                 S   s   |  S rµ   rU   )ÚvrU   rU   rV   rf   	  rg   z'test_topological_sort.<locals>.<lambda>rM   c                      s   t ˆˆ dg fƒS )N)rÅ   rÂ   )r9   rU   ©ÚEÚVrU   rV   rf     rg   )r9   rS   rI   rp   rU   rU   rÈ   rV   Útest_topological_sort  s        þ$ÿrË   c                  C   sä   t g g fƒg kst‚t dddgg fƒdgdgdggks:t‚dddg} dddddg}t | |fƒdddggksnt‚dddd	g} ddd
dg}t | |fƒd	gddgdggks¨t‚dddd	g} ddddg}t | |fƒddgdd	ggksàt‚d S )NrY   rZ   rd   ra   rv   r‹   ry   rž   ru   rŒ   ©rd   ru   )ru   rd   )r6   rS   ©rÊ   rÉ   rU   rU   rV   Ú"test_strongly_connected_components  s    &
"rÎ   c                  C   sÜ   t g g fƒg kst‚t dddgg fƒdgdgdggks:t‚dddg} dddddg}t | |fƒdddggksnt‚dddd	g} ddd
dg}t | |fƒdddd	ggks¤t‚dddd	g} ddg}t | |fƒddgdd	ggksØt‚d S )NrY   rZ   rd   ra   rv   r‹   ry   rž   ru   rŒ   rÌ   )r   rS   rÍ   rU   rU   rV   Útest_connected_components   s    &
rÏ   c                  C   s¦   dddddg} t | dƒdddddgks*t‚t| dƒdddddgksFt‚g } t| dƒ}|g ks`t‚| d¡ | g ksvt‚t | dƒ}|g ksŒt‚| d¡ | g ks¢t‚d S )Nr   rY   rZ   rd   ru   )r2   rS   r3   Úappend)ÚAÚBrU   rU   rV   Útest_rotate1  s    



rÓ   c               $   C   sH  dddddg} t t| dƒƒdgdgdgdgdgggks:t‚tt t| dƒƒƒdksTt‚tt t| dƒƒƒdksnt‚t tdddddgdƒƒddddgdggdddgddggddddgdggdddgddggddgdddgggksÞt‚t tddddgdƒƒdddgdggddgddggdddgdggddgddgggk�s6t‚t tddddgdƒƒdddgdggdddgdggddgddggdddgdggddgddggddgddggdgdddgggk�s¸t‚t tdddgdƒƒddgdggdgddgggk�sît‚t tdƒƒdddggddgdggddgdggdgddggdgdgdgggk�s@t‚t tddƒƒddgdggddgdggdgddgggk�s|t‚t tdgd dƒƒdgddgggk�s¦t‚t tdgd ƒƒdddggdgddggdgdgdgggk�sæt‚dddg}t t|ƒƒt tt|ƒƒƒk�st‚t t|dƒƒg k�s*t‚t t|dƒƒdddgggk�sLt‚t t|dg dƒƒg k�sjt‚t t|dg dƒƒddddgggk�s”t‚t tddƒƒg k�s¬t‚t tddƒƒddgggk�sÌt‚t td	ƒƒd	gggk�sèt‚t td	dƒƒg k�s t‚t td
ƒƒd	dggd	gdgggk�s(t‚t td
dƒƒd	dgggk�sHt‚t tddƒƒdggk�sdt‚t tddgdƒƒddgggk�sˆt‚dddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0g$}d1d2„ td3ƒD ƒ|k�sðt‚d4gd5dgd6dgdd7gdddgd7ddgddddgg}d8d2„ tddgƒD ƒ|k�sDt‚d S )9Nr   rY   rZ   rd   ru   r]   rÅ   é   r§   ÚabÚbÚaaa)Zmpsyy)ZmpsyrQ   )ÚmpsÚyy)rØ   rQ   rQ   )Zmpyyrª   )ÚmpyÚsy)rÚ   rª   rQ   )ÚmpÚsyy)rÜ   rÛ   rQ   )rÜ   rª   rÙ   )rÜ   rª   rQ   rQ   )ZmsyyÚp)ÚmsyÚpy)rß   rÞ   rQ   )ÚmsÚpyy)rá   rà   rQ   )rá   rÞ   rÙ   )rá   rÞ   rQ   rQ   )ÚmyyÚps)rã   rÞ   rª   )ÚmyÚpsy)rå   rä   rQ   )rå   rà   rª   )rå   rÞ   rÛ   )rå   rÞ   rª   rQ   )ÚmZpsyy)rç   ræ   rQ   )rç   rä   rÙ   )rç   rä   rQ   rQ   )rç   râ   rª   )rç   rà   rÛ   )rç   rà   rª   rQ   )rç   rÞ   rÝ   )rç   rÞ   rÛ   rQ   )rç   rÞ   rª   rÙ   )rç   rÞ   rª   rQ   rQ   c                 S   s   g | ]}t d d„ |D ƒƒ‘qS )c                 s   s   | ]}d   |¡V  qdS ©rX   N©Újoin)Ú.0ÚpartrU   rU   rV   Ú	<genexpr>{  s     z6test_multiset_partitions.<locals>.<listcomp>.<genexpr>)Útuple©rë   rÞ   rU   rU   rV   Ú
<listcomp>{  s   ÿz,test_multiset_partitions.<locals>.<listcomp>Zsympyé   rÃ   é   r\   c                 S   s   g | ]}t |d dgƒ‘qS ry   )rF   rï   rU   rU   rV   rð     s   ÿ)rP   r)   rS   r™   rT   rG   )rÑ   r§   ÚansZ
factoringsrU   rU   rV   Útest_multiset_partitionsA  sà    ,   þ
  þ    ý ÿ

   þ  ÿ*
  ÿ

ÿ
"* ( $                     õÿÿ
 
ÿ
ÿÿrô   c                  C   s  ddddddddd	d
dddddg} dd„ t tddƒƒD ƒ| ksBt‚tdƒ}dd„ t t|dƒƒD ƒ| ksjt‚dd„ t|dƒD ƒg ks†t‚t tdgddggdƒƒdgddgggks²t‚tt tddƒƒƒdksÌt‚tt tddƒƒƒdksæt‚t tddƒƒdgdgdggk�s
t‚ttdd„ ƒ d S ) NZiiiZiimZiipZiisÚimpZimsZippÚipsZissZmpprØ   ZmssZppsZpssZsssc                 S   s   g | ]}d   |¡‘qS ©rX   ré   ©rë   ÚirU   rU   rV   rð   †  s     z.test_multiset_combinations.<locals>.<listcomp>Zmississippird   c                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   ‰  s     c                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   ‹  s     é   rY   rZ   r§   r   ÚabcrÖ   Úcc                   S   s   t tdddœdƒƒS )Nrd   r[   r�   rZ   )rP   r(   rU   rU   rU   rV   rf   �  rg   z,test_multiset_combinations.<locals>.<lambda>)rP   r(   rS   r'   r™   rI   rp   )ró   ÚMrU   rU   rV   Útest_multiset_combinationsƒ  s4          ÿÿÿÿÿ,$rþ   c                     s’  ddddddddd	d
ddg} dd„ t dƒD ƒ| ks6t‚dd„ t tdƒƒD ƒ| ksTt‚tt dddgdƒƒddggksvt‚tt dddgdƒƒddgddgddgddgddgddggks¶t‚ttt ddƒƒƒdksÐt‚ttt ddƒƒƒdksêt‚g i dfD ]}tt |ƒƒg gksôt‚qôtt |dƒƒg gk�s*t‚tt |dƒƒg k�sBt‚tt |dƒƒg k�sZt‚dd„ ‰ t‡ fdd„ƒtdƒk�s€t‚ttdd„ ƒ d S )NZabbyZabybZaybbÚbabyZbaybZbbayZbbyaZbyabZbybaZyabbZybabZybbac                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   –  s     z.test_multiset_permutations.<locals>.<listcomp>c                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   —  s     r   rZ   rY   r§   rd   rX   r[   c                  S   s>   t ddƒD ].} t| ƒ tdddddg| ƒD ]}t|ƒ q*q
d S )NrY   rÂ   r   )r‡   Úprintr*   )rù   rÞ   rU   rU   rV   Útest¤  s    z(test_multiset_permutations.<locals>.testc                      s   ˆ ƒ S rµ   rU   rU   ©r  rU   rV   rf   ©  rg   z,test_multiset_permutations.<locals>.<lambda>aÐ          1
        [0]
        [1]
        2
        [0, 0]
        [0, 1]
        [1, 0]
        [1, 1]
        3
        [0, 0, 0]
        [0, 0, 1]
        [0, 1, 0]
        [0, 1, 1]
        [1, 0, 0]
        [1, 0, 1]
        [1, 1, 0]
        4
        [0, 0, 0, 1]
        [0, 0, 1, 0]
        [0, 0, 1, 1]
        [0, 1, 0, 0]
        [0, 1, 0, 1]
        [0, 1, 1, 0]
        [1, 0, 0, 0]
        [1, 0, 0, 1]
        [1, 0, 1, 0]
        [1, 1, 0, 0]
        5
        [0, 0, 0, 1, 1]
        [0, 0, 1, 0, 1]
        [0, 0, 1, 1, 0]
        [0, 1, 0, 0, 1]
        [0, 1, 0, 1, 0]
        [0, 1, 1, 0, 0]
        [1, 0, 0, 0, 1]
        [1, 0, 0, 1, 0]
        [1, 0, 1, 0, 0]
        [1, 1, 0, 0, 0]
        6
c                   S   s   t tdddœƒƒS )Nrd   r[   r�   )rP   r*   rU   rU   rU   rV   rf   Ñ  rg   )	r*   rS   r'   rP   r™   r   r   rI   rp   )ró   ÚnulrU   r  rV   Útest_multiset_permutations“  s6       ÿ"     ÿ
(r  c               	   C   s˜  i gdi fgg} t dƒD ]¾}ttd|d�ƒ| | ks8t‚ttdd|d�ƒ| | ksVt‚ttddd|d�ƒ| | ksvt‚ttddd |d�ƒ| | ks–t‚ttdd d|d�ƒ| | ks¶t‚ttddd|d�ƒ| | kst‚qttddd�ƒddidddœd	ddœddigk�st‚ttddd�ƒddidddd
œdddœddidddœd	ddœddigk�s\t‚ttdd	dd�ƒd	diddddœdddœdddœg  k�r¶dd„ tdd	dd�D ƒk�s¼n t‚tttdƒdd�ƒddidddœgk�sèt‚ttd	dd�ƒdddœddidddœdd	ig  k�r6dd„ td	ƒD ƒk�s<n t‚t ddƒD ]L}d}t|ƒD ]&\}}|t||ƒk�srt‚|d7 }�qV|t|ƒk�sFt‚�qFd S )Nr   rZ   )ÚsizerY   r\   )Úkrd   ra   ru   r„   rv   rÃ   )r  rç   )rY   rd   ru   rz   ry   c                 S   s2   g | ]*}t d d„ |D ƒƒrt| ¡ ƒdkr|‘qS )c                 s   s   | ]}|d kV  qdS )ru   NrU   ©rë   r  rU   rU   rV   rí   ç  s     ú-test_partitions.<locals>.<listcomp>.<genexpr>rd   )ÚallÚsumÚvaluesrø   rU   rU   rV   rð   æ  s    ÿz#test_partitions.<locals>.<listcomp>)rç   c                 S   s"   g | ]}t d d„ |D ƒƒr|‘qS )c                 s   s   | ]}|d kV  qdS )rd   NrU   r  rU   rU   rV   rí   ï  s     r  )r	  rø   rU   rU   rV   rð   î  s     )r‡   rP   r-   rS   rH   r   r   r   )ró   rù   Únrç   ÚqrU   rU   rV   Útest_partitionsÔ  sj       "   ÿ 
    þ 
  ÿÿÿ ÿ   ÿÿÿ
r  c                   C   sö   dd„ t dƒD ƒddgdddgdddgddddgddddgdddddgddddddgdddddddgdddddgddddddgdddddddgddddddddgdddddddddg	ddddddddddg
gksÔt‚tdd„ t d	ƒD ƒƒd
ksòt‚d S )Nc                 S   s   g | ]}|d d … ‘qS rµ   rU   rø   rU   rU   rV   rð      s     z*test_binary_partitions.<locals>.<listcomp>rÅ   rÃ   rZ   rY   ru   c                 S   s   g | ]}|d d … ‘qS rµ   rU   ©rë   ÚjrU   rU   rV   rð     s     é   é$   )r   rS   r™   rU   rU   rU   rV   Útest_binary_partitionsÿ  s     
 
      ü
r  c                  C   s¦   dd„ t ddƒD ƒdd„ t ddƒD ƒks,t‚ttdƒƒddd	d
ddgksLt‚t ddƒD ]<} tt | ƒƒ}t| ƒ}|D ]}|t|jƒksˆt‚| ¡ }qrqVtt	dd„ ƒ d S )Nc                 S   s   g | ]}t tt|ƒƒƒ‘qS rU   )r™   r…   r   rø   rU   rU   rV   rð   
  s     z"test_bell_perm.<locals>.<listcomp>rY   rÂ   c                 S   s   g | ]}t |ƒ‘qS rU   r   rø   rU   rU   rV   rð   
  s    rd   r•   rŸ   r¢   r£   r¡   r    r]   c                   S   s   t tdƒƒS )Nr   )rP   r   rU   rU   rU   rV   rf     rg   z test_bell_perm.<locals>.<lambda>)
r‡   rS   rP   r   r   rî   Z
array_formZnext_trotterjohnsonrI   rp   )r  rÞ   rÖ   ZbirU   rU   rV   Útest_bell_perm	  s$    ÿ
     ÿ
r  c                  C   s`   ddddddg} t | ƒD ]B\}}tt|d ƒƒ}t|ƒ|ks@t‚tdd„ |D ƒƒdkst‚qd S )	NrY   rZ   ru   rÅ   é   éL   c                 S   s   h | ]}t |ƒd  ’qS rs   )r   r  rU   rU   rV   Ú	<setcomp>  s     z#test_involutions.<locals>.<setcomp>)Ú	enumeraterP   r   r™   rS   )Úlengthsr  ÚNrù   rU   rU   rV   Útest_involutions  s
    r  c                  C   sV  t ttttdƒƒƒƒƒdks t‚d dd„ tdƒD ƒ¡dks@t‚ttdd	d
dgƒƒd	ddd
gd	d
ddgd	ddd
gd
ddd	gd
ddd	gd
dd	dgddd	d
gdd
dd	gdd
d	dgg	ks¶t‚ttdd	d
d
gƒƒd
d
dd	gd
d
d	dggksæt‚ttdƒƒtdƒgk�st‚t} t| dƒƒg k�st‚dd„ | dƒD ƒdgk�s:t‚dd„ | dƒD ƒddgk�sZt‚dd„ | dƒD ƒdgk�sxt‚dd„ | dƒD ƒddddddgk�s t‚d d„ | d!ƒD ƒd"d#d$d%d&d'd(d)d*d+d,d-gk�sÔt‚d.d„ | d/ƒD ƒd0d1d2d3d4d5d6d7d8d9d:d;gk�st‚ttdgd
gd
gd	ggƒƒd
gd	gdgd
ggd
gdgd	gd
gggk�sRt‚d S )<Nr\   i	  rX   c                 s   s   | ]}d   |¡V  qdS rè   ré   rø   rU   rU   rV   rí   $  s     z$test_derangements.<locals>.<genexpr>ÚabcdeZÜbadecbaecdbcaedbcdeabceadbdaecbdeacbdecabeacdbedacbedcacabedcadebcaebdcdaebcdbeacdeabcdebaceabdcebadcedabcedbadabecdaebcdaecbdcaebdcbeadceabdcebadeabcdeacbdebacdebcaeabcdeadbceadcbecabdecbadecdabecdbaedabcedacbedbacedbcar   rY   rZ   rd   ÚbarÕ   Zabbc                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   2  s     z%test_derangements.<locals>.<listcomp>c                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   3  s     rû   ZbcaZcabc                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   4  s     ZaabbZbbaac                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   5  s     ZaabbccccZccccaabbZccccababZccccabbaZccccbaabZccccbabaZccccbbaac                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   8  s     ZaabbcccZcccabbaZcccababZcccaabbZccacbbaZccacbabZccacabbZcbccbaaZcbccabaZcbccaabZbcccbaaZbcccabaZbcccaabc                 S   s   g | ]}d   |¡‘qS r÷   ré   rø   rU   rU   rV   rð   <  s     ÚbooksZkbsooZksbooZsbkooZskbooZoksboZoskboZokbsoZobksoZoskobZoksobZosbokZobsok)r™   rP   r   r‡   rS   rê   rB   )ÚDrU   rU   rV   Útest_derangements"  s~     ÿ
 
 
 

 
 
 
 
þ

 
ÿ
     þ         ý        þ ÿr   c                  C   s¤   dd„ } g }t ddƒD ].}| || |ddƒ| |ddƒ| |ddƒf¡ qt|ƒtddddgddddgdd	d	d
gd	dddgddddgddddgddddggƒks t‚d S )Nc                 S   s   t tt| ||ƒƒƒS rµ   )r™   rP   r+   )r  r  ÚfrU   rU   rV   ÚcountD  s    ztest_necklaces.<locals>.countrY   rÃ   rZ   r   rd   r\   ru   rÅ   é   r]   é'   é   é   é\   rÂ   é   é   éÆ   )r‡   rÐ   r   rS   )r"  rç   rù   rU   rU   rV   Útest_necklacesC  s$     
 
 
ÿ






ùr+  c                  C   sÀ   t tddƒƒ} t| ƒtddgddgddgddgddgddgddgddgddgddgg
ƒks^t‚t tddƒƒ} t| ƒtddddgddddgddddgddddgddddgddddggƒks¼t‚d S )NrZ   ru   r   rY   rd   )rP   r   r   rS   )ÚbcrU   rU   rV   Útest_braceletsT  s,    ö





úr-  c                   C   s$  t tdƒƒdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddggk�st‚tt tdƒƒƒdk�s t‚d S )	Nr]   r   rY   rZ   rd   ru   rÅ   i2  )rP   r    rS   r™   rU   rU   rU   rV   Útest_generate_oriented_forestm  s,                  ûr.  c                  C   sˆ   t tdƒƒ} t| ƒt t| d d d… | dd d… ƒƒks:t‚t| dƒt| d d… ƒt| dd … ƒgksht‚ttdd„ ƒ ttdd„ ƒ d S )NrÅ   rZ   rY   r]   c                   S   s   t ttdƒƒdƒS )NrÅ   rd   ©r:   rP   r‡   rU   rU   rU   rV   rf   {  rg   z test_unflatten.<locals>.<lambda>c                   S   s   t ttdƒƒdƒS )NrÅ   r`   r/  rU   rU   rU   rV   rf   |  rg   )rP   r‡   r:   ÚziprS   rî   rI   rp   )ÚrrU   rU   rV   Útest_unflattenw  s
    ..r2  c                   C   sd  t g dgƒg kst‚t ttdƒƒƒdddgks2t‚t ttdƒƒttdƒƒƒdddgksZt‚t dddgdddgƒddgks|t‚t dddgdddgƒdgksœt‚tg dgƒg ks°t‚tttdƒƒƒdddgksÎt‚tttdƒƒttdƒƒƒdddgksöt‚tttdƒƒttdƒƒƒg k�st‚tdddgdddgƒddgk�s>t‚tdddgdddgƒdgk�s`t‚d S )	NrY   rd   r   rZ   ru   r]   rÄ   rÂ   )r   rS   rP   r‡   r   rU   rU   rU   rV   Útest_common_prefix_suffix  s    (" ($$r3  c                   C   sr   t dddgƒdkst‚t dƒdks&t‚t dƒdks6t‚t ddd	�dksJt‚t d
ƒdksZt‚t dtd�dksnt‚d S )NrY   rZ   r   r•   r¡   r    rŸ   F)ZdirectedZabaZaab)Úbbr×   rü   r§   rM   )rü   r§   r4  r×   )r&   rS   r™   rU   rU   rU   rV   Útest_minlexŽ  s    r5  c                      s  t tttftdd�ƒttgttgfks*t‚t tttftdd�ƒt tttftdd�ƒksZt‚t tttfƒƒttgksvt‚dddgdddgdddgdgdggdd„ d	d„ fg\‰‰ t tˆˆ ddd
�ƒdgdgdddgdddgdddggksêt‚tt‡ ‡fdd„ƒ d S )NF)ÚdefaultrY   rZ   r   rd   c                 S   s   t | ƒS rµ   )r™   r¸   rU   rU   rV   rf   ž  rg   ztest_ordered.<locals>.<lambda>c                 S   s   t | ƒS rµ   )r
  r¸   rU   rU   rV   rf   ž  rg   ©r6  Úwarnc                      s   t tˆˆ ddd�ƒS )NFTr7  )rP   r   rU   ©ÚkeysÚseqrU   rV   rf   ¡  s    )rP   r   rR   rQ   ÚhashrS   rI   rp   rU   rU   r9  rV   Útest_ordered—  s    *ÿ"ÿ"ÿr=  c                  C   sÖ   t g ƒg kst‚t dgƒdggks&t‚t ddgƒdgdggksBt‚t dddgƒdgddggksbt‚t dddgƒddgdggks‚t‚t dddgƒdgdgdggks¤t‚ddlm}  t dddg| ƒddgdggksÒt‚d S )NrY   rZ   r   ©Últ)r4   rS   Úoperatorr?  r>  rU   rU   rV   Ú	test_runs¥  s      "rA  c                  C   s¼  t tddƒƒ} t| dgƒddddgdddd	ggks6t‚t| d
ƒddgksLt‚t| dƒddgksbt‚t| ddgfƒddddgfdddd	gfgks’t‚t| ddgfƒdddgfddd	gfgks¾t‚t| ddgdfƒdddgdfdddgd	fgksðt‚tt| ƒdgddgfƒdgddgfdgddgffk�s*t‚tt| ƒdgddfƒdgddfdgddffk�s^t‚tt tdƒƒddgdhdgƒdddddgddhdggk�sœt‚ttdd„ ƒ ttdd„ ƒ d S )NrY   rÄ   ru   rZ   rd   r]   r\   rÂ   rÃ   )ru   )rY   rZ   rd   ru   )r]   r\   rÂ   rÃ   r“   rs   ra   )r]   r\   rÌ   rÆ   rò   )rY   rt   rY   r   )rÂ   )rÃ   rÄ   rÅ   ro   c                   S   s   t ddgdgƒS )Nr   rY   r[   ©r1   rU   rU   rU   rV   rf   Ä  rg   ztest_reshape.<locals>.<lambda>c                   S   s   t ddgdgƒS )Nr   rY   rd   rB  rU   rU   rU   rV   rf   Å  rg   )rP   r‡   r1   rS   rî   rI   rp   )r;  rU   rU   rV   Útest_reshape°  s<    
ÿÿÿÿÿÿÿ
ÿ
ÿ
rC  c                      sˆ  t tdd„ tdƒD ƒƒƒddidddœddidddœddigksDt‚t tdd„ td	ƒD ƒƒƒd
dgksjt‚t tdƒƒdgks€t‚t tdƒƒt dƒks˜t‚t tdgddgdggƒƒdgddggksÄt‚t ttdd„ dgddfD ƒƒƒƒdgddfddgdfdddgfgk�st‚t tdddddgdgdgdgdgg	ƒƒddddgdgdggk�sRt‚dg‰ tt‡ fdd„ƒ dgg‰ tt‡ fdd„ƒ d S )Nc                 s   s   | ]
}|V  qd S rµ   rU   rï   rU   rU   rV   rí   É  s     ztest_uniq.<locals>.<genexpr>ru   rY   rv   rZ   ra   c                 s   s   | ]}|d  V  qdS )rZ   NrU   )rë   rR   rU   rU   rV   rí   Ë  s     r]   r   r§   Zababcrû   c                 s   s   | ]
}|V  qd S rµ   rU   rø   rU   rU   rV   rí   Ï  s     rd   c                      s   ‡ fdd„t ˆ ƒD ƒS )Nc                    s   g | ]}ˆ   |¡‘qS rU   ©Úremoverø   ©r!  rU   rV   rð   Ô  s     ú/test_uniq.<locals>.<lambda>.<locals>.<listcomp>©r;   rU   rF  rU   rV   rf   Ô  rg   ztest_uniq.<locals>.<lambda>c                      s   ‡ fdd„t ˆ ƒD ƒS )Nc                    s   g | ]}ˆ   |¡‘qS rU   rD  rø   rF  rU   rV   rð   Ö  s     rG  rH  rU   rF  rU   rV   rf   Ö  rg   )rP   r;   r-   rS   r‡   r.   rI   ÚRuntimeErrorrU   rU   rF  rV   Ú	test_uniqÈ  s"    $ÿ&,  ÿ
&ÿ
rJ  c                      sâ   t ttdddd�ƒƒdkst‚t ttdddd�ƒƒdks<t‚t ttdddd�ƒƒdksZt‚t ttddd	d�ƒƒd
ksxt‚t ttddd d�ƒƒdks–t‚dd„ ‰ t‡ fdd„ƒtdƒksºt‚dd„ ‰t‡fdd„ƒtdƒksÞt‚d S )NZ1123rZ   rY   r   rñ   ro   r  rÅ   r   r]   rd   c                  S   s<   dD ]2} t d| ƒ tdddgd| d�D ]}t d|ƒ q&qd S )N©Nr   rY   rÅ   ro   ú	ordered =r   rY   rZ   r   ú   )r   r%   ©Z
orderedvalrÞ   rU   rU   rV   Útest1à  s    
ztest_kbins.<locals>.test1c                      s   ˆ ƒ S rµ   rU   rU   )rO  rU   rV   rf   å  rg   ztest_kbins.<locals>.<lambda>a#          ordered = None
            [[0], [0, 1]]
            [[0, 0], [1]]
        ordered = 0
            [[0, 0], [1]]
            [[0, 1], [0]]
        ordered = 1
            [[0], [0, 1]]
            [[0], [1, 0]]
            [[1], [0, 0]]
        ordered = 10
            [[0, 0], [1]]
            [[1], [0, 0]]
            [[0, 1], [0]]
            [[0], [0, 1]]
        ordered = 11
            [[0], [0, 1]]
            [[0, 0], [1]]
            [[0], [1, 0]]
            [[0, 1], [0]]
            [[1], [0, 0]]
            [[1, 0], [0]]
c                  S   s>   dD ]4} t d| ƒ tttdƒƒd| d�D ]}t d|ƒ q(qd S )NrK  rL  rd   rZ   r   rM  )r   r%   rP   r‡   rN  rU   rU   rV   Útest2ý  s    
ztest_kbins.<locals>.test2c                      s   ˆ ƒ S rµ   rU   rU   )rP  rU   rV   rf     rg   a[          ordered = None
            [[0], [1, 2]]
            [[0, 1], [2]]
        ordered = 0
            [[0, 1], [2]]
            [[0, 2], [1]]
            [[0], [1, 2]]
        ordered = 1
            [[0], [1, 2]]
            [[0], [2, 1]]
            [[1], [0, 2]]
            [[1], [2, 0]]
            [[2], [0, 1]]
            [[2], [1, 0]]
        ordered = 10
            [[0, 1], [2]]
            [[2], [0, 1]]
            [[0, 2], [1]]
            [[1], [0, 2]]
            [[0], [1, 2]]
            [[1, 2], [0]]
        ordered = 11
            [[0], [1, 2]]
            [[0, 1], [2]]
            [[0], [2, 1]]
            [[0, 2], [1]]
            [[1], [0, 2]]
            [[1, 0], [2]]
            [[1], [2, 0]]
            [[1, 2], [0]]
            [[2], [0, 1]]
            [[2, 0], [1]]
            [[2], [1, 0]]
            [[2, 1], [0]]
)r™   rP   r%   rS   r   r   rU   rU   )rO  rP  rV   Ú
test_kbinsÙ  s    rQ  c                   C   st   t tƒ ƒdkst‚t ttdƒƒƒdks*t‚t dddgƒdks@t‚t dgdggƒdksXt‚t dgdggƒdkspt‚d S )NFrd   rY   rZ   T)r"   r…   rS   rP   r‡   rU   rU   rU   rV   Útest_has_dups'  s
    rR  c                  C   s”   t ddddddgƒddgddgd	ggks,t‚t ddddddgd
ƒddgddgd	ggksZt‚d
dddddgf} t d| žŽ ddgddgd	ggks�t‚d S )Nr  rY   r   rZ   rÖ   Úer§   rü   Údrd   )r  )r   rS   )ÚoutputrU   rU   rV   Útest__partition/  s      ÿ
  ÿ
rV  c               	   C   sº   ddl m}  t}t|ddƒƒg gks(t‚t|ddƒƒg gks@t‚tddƒD ]j}d gttd|ƒƒ D ]P}tdd„ |||dƒD ƒƒtdd„ |||dƒD ƒƒ  kr¬| ||ƒksbn t‚qbqJd S )Nr   )ÚnTrY   rÂ   c                 s   s   | ]
}d V  qdS ©rY   NrU   rï   rU   rU   rV   rí   @  s     z*test_ordered_partitions.<locals>.<genexpr>c                 s   s   | ]
}d V  qdS rX  rU   rï   rU   rU   rV   rí   A  s     )Z%sympy.functions.combinatorial.numbersrW  r=   rP   rS   r‡   r
  )rW  r!  rù   r  rU   rU   rV   Útest_ordered_partitions8  s    þýrY  c                   C   sˆ   t tdƒƒddgddggks t‚t ttdƒƒƒdddgdddgdddggksPt‚t ttdƒdd	�ƒdddgdddgdddggks„t‚d S )
NrÕ   r§   rÖ   rd   r   rY   rZ   r[   )Údir)rP   r>   rS   r‡   rU   rU   rU   rV   Útest_rotationsE  s     0r[  c                   C   s¶   t dƒddgkst‚t ddƒdddgks,t‚t ddd�dks@t‚t dddd�dksVt‚tt dd	ƒƒd
dddgkstt‚tt dddd�ƒddddgks–t‚ttdd„ ƒ ttdd„ ƒ d S )Nrd   rY   r   T)ÚstrZ11Z011rZ   r	  rb   r�   r�   rŠ   rX   Z00Z01Ú10c                   S   s   t dƒS )Ng      à¿©r#   rU   rU   rU   rV   rf   R  rg   ztest_ibin.<locals>.<lambda>c                   S   s
   t ddƒS )NrZ   rY   r^  rU   rU   rU   rV   rf   S  rg   )r#   rS   rP   rI   rp   rU   rU   rU   rV   Ú	test_ibinK  s    "r_  c                  C   sú   t dƒdkst‚t dƒdks t‚t d ƒdks0t‚G dd„ dtƒ} t | ƒ ƒdksRt‚G dd„ dtƒ}t |ƒ ƒdkstt‚G d	d
„ d
ƒ}t |ƒ ƒdks”t‚G dd„ dƒ}t |ƒ ƒdks´t‚G dd„ dƒ}t |ƒ ƒdksÔt‚G dd„ d|ƒ}t |ƒ ƒdksöt‚d S )Nr   FrY   c                   @   s   e Zd ZdS )ztest_iterable.<locals>.Test1Nrh   rU   rU   rU   rV   ÚTest1[  s   r`  c                   @   s   e Zd ZdZdS )ztest_iterable.<locals>.Test2TN©ri   rj   rk   Ú	_iterablerU   rU   rU   rV   ÚTest2`  s   rc  Tc                   @   s   e Zd ZdS )ztest_iterable.<locals>.Test3Nrh   rU   rU   rU   rV   ÚTest3e  s   rd  c                   @   s   e Zd ZdZdS )ztest_iterable.<locals>.Test4TNra  rU   rU   rU   rV   ÚTest4j  s   re  c                   @   s   e Zd Zdd„ ZdS )ztest_iterable.<locals>.Test5c                 s   s
   dV  d S )NrY   rU   )ÚselfrU   rU   rV   Ú__iter__p  s    z%test_iterable.<locals>.Test5.__iter__N)ri   rj   rk   rg  rU   rU   rU   rV   ÚTest5o  s   rh  c                   @   s   e Zd ZdZdS )ztest_iterable.<locals>.Test6FNra  rU   rU   rU   rV   ÚTest6u  s   ri  )r@   rS   rA   )r`  rc  rd  re  rh  ri  rU   rU   rV   Útest_iterableV  s    rj  c                   C   sR  t tdgdƒƒdgggkst‚t tddgdƒƒddgggks@t‚t tddgdƒƒdgdgggksdt‚t tdddgdƒƒdddgggksŠt‚t tdddgdƒƒdgddggddgdgggks¾t‚t tdddgdƒƒdgdgdgggksèt‚t tg dƒƒg ksþt‚t tg dƒƒg k�st‚t tddgdƒƒg k�s2t‚t tddgdƒƒg k�sNt‚d S ©NrY   rZ   rd   r   )rP   rD   rS   rU   rU   rU   rV   Útest_sequence_partitions{  s    "$&ÿ*rl  c                   C   s  t tg dƒƒg ggkst‚t tg dƒƒg g ggks6t‚t tg dƒƒg g g ggksTt‚t tdgdƒƒdgggksrt‚t tdgdƒƒg dggdgg ggksšt‚t tdgdƒƒg g dggg dgg gdgg g ggksÐt‚t tddgdƒƒddgggksòt‚t tddgdƒƒg ddggdgdggddgg ggk�s,t‚t tddgdƒƒg g ddggg dgdggg ddgg gdgg dggdgdgg gddgg g ggk�s�t‚t tdddgdƒƒdddgggk�s¸t‚t tdddgdƒƒg dddggdgddggddgdggdddgg ggk�st‚t tdddgdƒƒg g dddggg dgddggg ddgdggg dddgg gdgg ddggdgdgdggdgddgg gddgg dggddgdgg gdddgg g gg
k�s°t‚t tg dƒƒg k�sÈt‚t tdgdƒƒg k�sât‚t tddgdƒƒg k�sþt‚d S rk  )rP   rE   rS   rD   rU   rU   rU   rV   Útest_sequence_partitions_empty‹  sN    ( ÿ" ÿ
    þ(2ÿ
     û	rm  c                  C   s\   ddddddddd	d
ddg} t tdƒƒ| ks0t‚t tdƒƒ| ksDt‚t td	ƒƒ| ksXt‚d S )Nr   )r   r[   rY   )r   rY   r[   )r   r[   r[   r�   )r[   r   rY   )rY   r   r[   )r[   r   r[   r‚   )r[   rY   r   )rY   r[   r   )r[   r[   r   )rP   rC   rS   )ró   rU   rU   rV   Útest_signed_permutations«  s          þrn  N)‡Útextwrapr   Ú	itertoolsr   r   Zsympy.core.basicr   Zsympy.core.numbersr   Zsympy.core.sortingr   Zsympy.core.symbolr	   r
   Z(sympy.functions.combinatorial.factorialsr   Zsympy.matrices.denser   Zsympy.combinatoricsr   r   r   rO   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   Zsympy.utilities.enumerativerF   rG   Zsympy.core.singletonrH   Zsympy.testing.pytestrI   rJ   ÚwrR   rQ   rq   rW   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.  r2  r3  r5  r=  rA  rC  rJ  rQ  rR  rV  rY  r[  r_  rj  rl  rm  rn  rU   rU   rU   rV   Ú<module>   sx   Ü(				BA+
!
	N	% 