U
    ZÊ¹jT  ã                   @   sz   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mZ d dlmZ d dlmZ d dlmZ ejZdd„ Zd	d
„ ZdS )é    )Úsymbols)Ú	FiniteSet)Ú
PolyhedronÚtetrahedronÚcubeÚ
octahedronÚdodecahedronÚicosahedronÚ
cube_faces©ÚPermutation)ÚPermutationGroup)Úraisesc            	         s  t tdd„ ƒ tddddgddd	d
ggƒtddddgddd	d
ggƒtd
dddgd	dddggƒtdd	dgdd
dgdgdggƒtdd
dgdddgd	gdggƒtd	ddgddd
gdgdggƒtdddgd	ddgd
gdggƒtd	dgddgd
dgddggƒtd
dgddgddgdd	ggƒtddgddgdd	gd
dggƒtd	d
gddgddgddggƒtd	dgddgddgdd
ggƒtddgd
dgdd	gddggƒtdddd
d	dddgƒg} ttdƒƒ}t}t||| ƒ‰ ˆ jtdŽ k�sÒt	‚t
d
ƒD ]}ˆ  ˆ j| d ¡ �qÚˆ j|k�st	‚t
d
dƒD ]}ˆ  ˆ j| d ¡ �qˆ j|k�s<t	‚ˆ  d¡ t t‡ fdd„ƒ ˆ j|k�sht	‚ˆ jddd	dd
dddgk�sˆt	‚ˆ jddddgdd	d
dggk�s¬t	‚ˆ  ¡  ˆ j|k�sÄt	‚dd„ }ttttttfdddƒD ]\}}}}|||||ƒ �qäd S )Nc                   S   s   t tdƒtdgƒgd�S )NÚabr   )Úpgroup)r   Úlistr   © r   r   úh/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/combinatorics/tests/test_polyhedron.pyÚ<lambda>   s   
ÿz!test_polyhedron.<locals>.<lambda>r   é   é   é   é   é   é   é   zA:H))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   ˆ   tddgƒ¡S )Nr   r   )Úrotater   r   ©r   r   r   r   0   ó    c           
         s  t | jƒt | jƒ t | jƒ dks&t‚| j|ks4t‚tƒ }| jD ]œ}|  ¡ }|j	}t
|ƒD ]}| |¡ |j	|krZ q„qZtd|jƒ t
|ƒD ]N}| |¡ | t|j	ƒ¡ |j	‰ ‡ fdd„|jD ƒ}	| jtˆ |	ƒjksŒt‚qŒq@t |ƒ|ksît‚tdd„ |D ƒƒj�st‚d S )Nr   zerror in permutationc                    s   g | ]}‡ fd d„|D ƒ‘qS )c                    s   g | ]}ˆ | ‘qS r   r   )Ú.0Úi©Úcr   r   Ú
<listcomp>K   s     z=test_polyhedron.<locals>.check.<locals>.<listcomp>.<listcomp>r   )r   Úfr!   r   r   r#   K   s     z2test_polyhedron.<locals>.check.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r   r   )r   Úgr   r   r   r#   N   s     )ÚlenÚfacesZverticesÚedgesÚAssertionErrorÚsizeÚsetr   ÚcopyÚcornersÚranger   ÚprintÚ
array_formÚaddÚtupler   r   Zis_group)
Úhr*   ÚrptÚtargetÚgotÚpÚPÚhitr    r$   r   r!   r   Úcheck7   s&    &



ztest_polyhedron.<locals>.check)r   é   r   é   é   )r   r   r   r   r   )r=   é   r>   é<   r?   )r   Ú
ValueErrorr   r2   r   r
   r   r(   r   r)   r.   r   r   r-   r0   Zcyclic_formÚresetÚzipr   Úsquarer   r   r	   )	r   r-   r'   r    r:   r3   r*   r4   r5   r   r   r   Útest_polyhedron   sR    ó
 $ürD   c               
   C   sò   ddl m} m}m}m}m} ddl m} |ƒ \
}}}}	}
}}}}}t|ksNt‚| |ksZt‚t	|ksft‚t
|	ksrt‚t|
ks~t‚ttt|ƒƒttt|ƒƒksžt‚ttƒt|ƒks²t‚t|ƒt|ƒksÆt‚t|ƒt|ƒksÚt‚t|ƒt|ƒksît‚d S )Nr   )r   Útetrahedron_facesÚoctahedron_facesÚdodecahedron_facesÚicosahedron_faces)Ú_pgroup_calcs)Úsympy.combinatorics.polyhedronr   rE   rF   rG   rH   rI   r   r)   r   r   r	   ÚsortedÚmapr
   )r   rE   rF   rG   rH   rI   Ztetrahedron2Zcube2Zoctahedron2Zdodecahedron2Zicosahedron2Ztetrahedron_faces2Zcube_faces2Zoctahedron_faces2Zdodecahedron_faces2Zicosahedron_faces2r   r   r   Útest_pgroupsX   s&    þ    rM   N)Zsympy.core.symbolr   Zsympy.sets.setsr   rJ   r   r   r   rC   r   r   r	   r
   Z sympy.combinatorics.permutationsr   Zsympy.combinatorics.perm_groupsr   Zsympy.testing.pytestr   ZrmulrD   rM   r   r   r   r   Ú<module>   s   $K