K i7\ddlmZddlmZddlmZddlmZmZdZ dZ dZ dZ d Z d Zy )  Permutation)symbolsMatrix) variations rotate_leftc#XKdtt||DEd{y7w)z Generates the symmetric group of order n, Sn. Examples ======== >>> from sympy.combinatorics.generators import symmetric >>> list(symmetric(3)) [(2), (1 2), (2)(0 1), (0 1 2), (0 2 1), (0 2)] c32K|]}t|ywNr).0perms d/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/combinatorics/generators.py zsymmetric..sFd D!FsN)rrange)ns r symmetricrs"Gjq1.EFFFs *(*c#Ktt|}t|D]}t|t|d}yw)a Generates the cyclic group of order n, Cn. Examples ======== >>> from sympy.combinatorics.generators import cyclic >>> list(cyclic(5)) [(4), (0 1 2 3 4), (0 2 4 1 3), (0 3 1 4 2), (0 4 3 2 1)] See Also ======== dihedral N)listrrr rgenis rcyclicrs?" uQx.C 1X"##q!"s?Ac#xKtt||D]}t|}|js| yw)z Generates the alternating group of order n, An. Examples ======== >>> from sympy.combinatorics.generators import alternating >>> list(alternating(3)) [(2), (0 1 2), (0 2 1)] N)rrris_even)rrps r alternatingr,s858Q'   99Gs0::c#xK|dk(rtddgtddgy|dk(r=tgdtgdtgdtgdytt|}t|D].}t|t|ddd t|d}0yw) a Generates the dihedral group of order 2n, Dn. The result is given as a subgroup of Sn, except for the special cases n=1 (the group S2) and n=2 (the Klein 4-group) where that's not possible and embeddings in S2 and S4 respectively are given. Examples ======== >>> from sympy.combinatorics.generators import dihedral >>> list(dihedral(3)) [(2), (0 2), (0 1 2), (1 2), (0 2 1), (2)(0 1)] See Also ======== cyclic rr)rrr )rrr!r )r r!rr)r!r rrN)rrrr rs rdihedralr#=s( Av1a&!!1a&!! a,'','','',''58nq &Ac" "c$B$i( (c1%C &sB8B:cgdgdgdgdgdgdg}|Dcgc]0}t|Dcgc]}|Dcgc]}|dz  c}c}}d 2c}}}Scc}wcc}}wcc}}}w) zpReturn the permutations of the 3x3 Rubik's cube, see https://www.gap-system.org/Doc/Examples/rubik.html ))rr!)r ) !) ") #))r*r2)r.  )rr-)()r),%)r&.r3))r-r5r@)r1r=)r&r,+r6)r(*r8)r%r;r2))r,r4 rH)r0rF)r!&rEr5)r'$-rC)r%r+0rB))r+r3r<rL)r/r?'rM)r!r*rArI)r r:/rJ)rr7rOr4))r;rErOrA)rGrNrQr>)r7r@rHrL)r9rDrKrP)r6rBrIr<rrO)sizer)axxirs rrubik_cube_generatorsrVasi       - ANO O OKq9,A!a%,9 C OO,9 Os&A  A AA A AA c  dkr tdfdfdfdfdfdfdfd  fd dfd fd d  fd fd}d f d fd}d f d fd}tdx\   id}tdD]@}g}tdzD]}|j||d z }t ||<Bdfd }gt tddzz} td z D]} | ||| |d | k(sJtd z D]'} | |||| )||d | k(sJ||td z D]C} | |||||| E||d | k(sJS)a)Return permutations for an nxn Rubik's cube. Permutations returned are for rotation of each of the slice from the face up to the last face for each of the 3 sides (in this order): front, right and bottom. Hence, the first n - 1 permutations are for the slices from the front. r zdimension of cube must be > 1c2|j|z Sr colfrfacesrs rgetrzrubik..getrQx||AE""c2|j|dz SNrrYr\rr]s rgetlzrubik..getlr_r`c2|j|dz Srbrowrcs rgetuzrubik..getur_r`c2|j|z Sr rfr[s rgetdzrubik..getdr_r`c:td||dd|z f<yrbrr\rsr]rs rsetrzrubik..setr!#Aq!_aAEr`c:td||dd|dz f<yrbrrls rsetlzrubik..setlror`c:td|||dz ddf<yrbrrls rsetuzrubik..setu!#Aq!_aQr`c:td|||z ddf<yrbrrls rsetdzrubik..setdrtr`rct|D]T}|}g}tD]-}tdz ddD]}|j|||f/t||<Vy)Nrr")rappendr)Fr_facervcr]rs rcwzrubik..cws{q (A8DB1X *q1ub"-*AIId1a4j)* *aB'E!H  (r`c|dyNr!)ryrs rccwzrubik..ccws  1ar`c Lt|D]}|dk(r |dz } |}|t ||tt ||t ||tt||dz}y)Nrr)rrreversed)rrzr{tempDryLRUrrjrdr^rhrvrqrnrss rfcwzrubik..fcwsq AAv1 FA1:D AtDAJ' ( AtHT!QZ01 2 AtDAJ' ( AtHTN+ , FA r`c|dyrr)rrs rfccwzrubik..fccws  Aq r`c t|D]T}    }   <   <   <| <Vyr r rzr{tBrryrrrrrr]s rFCWzrubik..FCWsyq A qE F qEaA qEQxE!H qEQxE!H qEQxE!HE!H r`cdyrr)rsrFCCWzrubik..FCCW  Ar`c t|D]4}   }  <  <  <| <6yr rrs rUCWzrubik..UCWs]q A qE FaAQxE!HQxE!HQxE!HE!H r`cdyrr)rsrUCCWzrubik..UCCWrr`zU, F, R, B, L, Drr&c|g}D]}|j||r|Sjt|yr )extendrxr)showrr\r]gnamess rrzrubik..perms?  A HHU1X   H Q r`)r)r) ValueErrorrrrxrr)!rrrrcountfir\rSrIrrrryrrrrrrrr]rrrjrdr^rhrrvrqrnrss!` @@@@@@@@@@@@@@@@@@@@@@rrubikrvs9 1u899####----(      ''9::Aq!Q1u E EAh+ q!t A HHUO QJE "!Q?eBi +! A U1QT6]A1q5\ A  Q 7a<<E 1q5\  A    Q  F 7a<<EFF 1q5\ A        Q"EEF 7a<< Hr`N) sympy.combinatorics.permutationsrsympy.core.symbolrsympy.matricesrsympy.utilities.iterablesrr rrrr#rVrrr`rrs38%!= G"."!&HP*w r`