ó
    ˆ*£hå  ã                   óF   • S SK Jr  S SKJr  S SKJr  \R                  rS rg)é    )ÚPermutationGroup)ÚPermutation)Úuniqc                  ó¼  • / n/ nSnSnU  HN  nUR                   n[        UR                  5      nUR                  U5        X6-  nUR                  U5        XG-  nMP     / n[	        U5       H&  n	UR                  [        [	        U5      5      5        M(     Sn
Sn[	        [        U5      5       Hc  n	[	        XªX)   -   5       H>  nX	   R                  Xº-
     R                  nU Vs/ s H  oÝU-   PM	     snX‹   XfX   -   & M@     X¢U	   -  n
XaU	   -  nMe     [        [        U Vs/ s H  n[        [        U5      5      PM     sn5      5      n[        USS9$ s  snf s  snf )aè  
Returns the direct product of several groups as a permutation group.

Explanation
===========

This is implemented much like the __mul__ procedure for taking the direct
product of two permutation groups, but the idea of shifting the
generators is realized in the case of an arbitrary number of groups.
A call to DirectProduct(G1, G2, ..., Gn) is generally expected to be faster
than a call to G1*G2*...*Gn (and thus the need for this algorithm).

Examples
========

>>> from sympy.combinatorics.group_constructs import DirectProduct
>>> from sympy.combinatorics.named_groups import CyclicGroup
>>> C = CyclicGroup(4)
>>> G = DirectProduct(C, C, C)
>>> G.order()
64

See Also
========

sympy.combinatorics.perm_groups.PermutationGroup.__mul__

r   F)Údups)
ÚdegreeÚlenÚ
generatorsÚappendÚrangeÚlistÚ
array_formr   Ú_af_newr   )ÚgroupsÚdegreesÚ
gens_countÚtotal_degreeÚ
total_gensÚgroupÚcurrent_degÚcurrent_num_gensÚ
array_gensÚiÚcurrent_genÚjÚgenÚxÚaÚ	perm_genss                   Úa/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/combinatorics/group_constructs.pyÚDirectProductr!      se  € ð: €GØ€JØ€LØ€JÛˆØ—l‘lˆÜ˜u×/Ñ/Ó0ÐØ�‰�{Ô#ØÑ#ˆØ×ÑÐ*Ô+ØÑ&Š
ñ ð €JÜ�:ÖˆØ×Ñœ$œu \Ó2Ó3Ö4ñ à€KØ€KÜ”3�z“?Ö#ˆÜ�{°*±-Ñ$?Ö@ˆAØ‘I×(Ñ(¨!©/Ñ:×FÑFˆCá*-Ó.ª# Q�[”©#Ñ.ð ‰M˜+°G±JÑ&>Ò?ñ Að 	 !‘}Ñ$ˆØ˜q‘zÑ!Šñ $ô ”T±ZÓ@²Z°œ7¤4¨£7Ö+±ZÑ@ÓAÓB€IÜ˜I¨EÑ2Ð2ùò	 /ùò As   Ã#EÄ!EN)Úsympy.combinatorics.perm_groupsr   Ú sympy.combinatorics.permutationsr   Úsympy.utilities.iterablesr   r   r!   © ó    r    Ú<module>r'      s   ðÝ <Ý 8Ý *à
×
Ñ
€ó53r&   