mò ¿¬ôCc@s€dklZdkTdklZlZlZdklZdkl Z d„Z d„Z d„Z d„Z d „Zd „Zd „Zd „Zd „ZddddddddgZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd „Zd!„Zd"gZ d#gZ!d$„Z"d%„Z#d&„Z$d'„Z%d(„Z&d)„Z'd*„Z(d+„Z)d,S(-(srandom(t*(ssqrtslogsfloor(sstdout(ssplitcCs*x#|djo|||}}qW|S(Ni(tbta(RR((t math_stuff.pytgcds cCs‡tddddgƒ}xhtd|ddƒD]P}xG|D]?}||djoPq<|||jo|i|ƒPq<q<Wq/W|S(Ntliiiiii(tarrayt prime_arraytrangetup_totcurrentttesttappend(R RR R ((Rtprimes s  cCs?t|ƒ}x,tt|ƒƒD]}|||||d}x1|djo#t||ƒ\}}||}q W|S(Ni(tsumR7R8tbaseR9(R7R=R<R9((Rt digit_sumis  cCsd||d|dS(Nii(R(R((RthexpscCs||ddS(Nii(R(R((RttrisscCs||d|ddS(Niii(R(R((RttetravscCsHd\}}|G|Gx-tdƒD]}||G|||}}q!WdS(Niiid(ii(RRRR(RRR((Rtfiboys   cCs_||}}|G|GHxBtdƒD]4}t|||ƒ\}}|G|||}}q#WdS(Niè( tseed_1tseed_2tnext_1tnext_2RRR8tsizetcarrytanswer(RGRCRDRERFRIRRH((Rt fibo_random€s   c Cs¨|iƒ}|didƒ}|didƒ}t|dƒt|dƒg}t|dƒt|dƒg}g}g} xÍt |ƒD]¿} xzt t |ƒdƒD]b}|i||ƒ|i||||dƒ| i||ƒ| i||||dƒq¨W|i|dƒ| i|dƒ|}| }g}g} q‹Wd}xDt t |ƒƒD]0} |t|| ƒdt|| ƒd}qgW|||fS(ssusage: sb_tree(fractions,times) Do a Stern-Brocot tree on a seed string of two fractions (in quotes) 'times' timesit/iiÿÿÿÿR5t N(t fractionstsplittfrac1tfrac2R!t starting_topststarting_bottomst ending_topstending_bottomsRttimesRRRR toutstrtrepr( RMRURRRVRSRORQRPRRRT((Rtsb_treeˆs6    ! .cCsjddg}xWtd|ƒD]F}|it||||dƒƒ|i||||dƒqW|S(Nii(tstartRRRR tabs(RRYR((Rtmyseq¤s  #!cCs|dS(Ni(R(R((Rtminus«scCs„|}xwtƒ}|djoPnt|ƒ}tt|ƒ}x!y|i dƒWqBPqBXqBW|i |ƒ|GH|}q WdS(NiR5i( tlisttoldsett raw_inputtcontRtlengthtmapR\tsettremoveR (R]RcR`RaR^((Rt bulgarian®s"     iicCsh|iƒd}xQ|t|ƒjo=|i||ƒdjo|i||ƒq|d}qW|S(Nii(RtsortRRR Rd(RR((RtuniquesÁs c Cs”||}t||ƒ}g}xg|D]_}y||i|ƒ}Wnt j o d}nX|i |ƒ}||}|i |ƒq'W||fS(Ni(tcountstnumberstnew_setRgt new_numberst new_countsRtindext old_countt ValueErrorR t new_countt total_countR ( RhRiRqRnRRlRjRkRp((RtgenerateÌs   cCstttƒƒƒS(N(R!troundtrandom(((Rt flip_coinàscCs6d}x)tdƒD]}|d|tƒ}qW|S(Niii(RYRRRu(RYR((Rt sixteen_flipãs  cCsg}x!tdƒD]}|idƒqWx/t|ƒD]!}tƒ}||d||R?R@RARBRJRXR[R\ReRhRiRgRrRuRvRxR|RRƒ(&R‰R|R4RxRJRRXR RR;RgR†RR?R…RBRhRNRvReRRƒR#R(R[RRrRR@R1RARuR‡RtR>RR\Ri((Rt?sH