U
    ZÊ¹ju  ã                   @   s,   d dl mZ d dlmZ d dlZdd„ ZdS )é    )ÚBasic)ÚpprintNc              
      sh   d\‰‰d\‰‰d\}‰d\‰}d\}}d\}‰ d‰‡fdd	„‰	‡ ‡‡‡‡‡‡‡‡‡	f
d
d„‰ˆ| dƒS )z6Traverse a tree asking a user which branch to choose. )z[0;31mz[1;31m)z[0;32mz[1;32m)z[0;33mz[1;33m)z[0;34mz[1;34m)z[0;35mz[1;35m)z[0;36mz[1;36mz[0mc                     s   t d tt| ƒ¡ˆ  ƒ d S )NÚ )ÚprintÚjoinÚmapÚstr)Úargs)ÚEND© úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/interactive/traversal.pyÚcprint   s    z%interactive_traversal.<locals>.cprintc           	         sR  |dkrt ƒ  ˆ	dˆ|ˆdƒ t ˆ ƒ t| ƒ t ˆƒ t| tƒrh| jrP|  ¡ }q€| jr`|  ¡ }q€| j}nt	| dƒr|t
| ƒ}n| S t|ƒ}|s�| S t|ƒD ]2\}}ˆ	ˆdˆ|ˆdˆt|ƒˆƒ	 t|ƒ t ƒ  q˜|dkrÚd}nd	|d  }ztd
| ƒ}W n" tk
�r   | }t ƒ  Y �n6X |dk�rfˆ	ˆd| ƒ ˆ	ˆdƒ ˆ	ˆdƒ ˆ	ˆdƒ ˆ	ˆdƒ ˆ| |ƒ}nè|dk�rv| }nØ|dk�r”ˆ|d |d ƒ}nº|dk�r²ˆ|d |d ƒ}nœ|dk�rÒˆt |¡|d ƒ}n|zt|ƒ}W n. tk
�r   ˆ	ˆd| ƒ ˆ| |ƒ}Y nBX |dk �s"||k�r<ˆ	ˆd| ƒ ˆ| |ƒ}nˆ|| |d ƒ}|S )Nr   zCurrent expression (stage z):Ú__iter__ú[z] é   Ú0z0-%dzYour choice [%s,f,l,r,d,?]: ú?z.%s - select subexpression with the given indexz"f - select the first subexpressionz!l - select the last subexpressionz!r - select a random subexpressionz	d - done
)Údr   ÚfÚléÿÿÿÿÚrz$Choice must be a number in %s range
zChoice must be in %s range
)r   r   Ú
isinstancer   Zis_AddZas_ordered_termsZis_MulZas_ordered_factorsr	   ÚhasattrÚlistÚlenÚ	enumerateÚtypeÚinputÚEOFErrorÚrandomÚchoiceÚintÚ
ValueError)	ÚexprZstager	   Zn_argsÚiÚargÚchoicesr!   Úresult©
ZBCYANZBGREENZBLUEZBREDZBYELLOWr
   ZGREENZREDÚ_interactive_traversalr   r   r   r*      sv    





ÿ







ÿz5interactive_traversal.<locals>._interactive_traversalr   r   )r$   ZYELLOWZBBLUEZMAGENTAZBMAGENTAZCYANr   r)   r   Úinteractive_traversal   s    Kr+   )Zsympy.core.basicr   Zsympy.printingr   r    r+   r   r   r   r   Ú<module>   s   