
    Edu                     ,    d dl mZ d dlmZ d dlZd ZdS )    )Basic)pprintNc           
         	
 d\  	d\  d\  }
d\  }d\  }}d\  }dfd	
f
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                  x    t          d                    t          t          |                     z              d S )N )printjoinmapstr)argsENDs    ;lib/python3.11/site-packages/sympy/interactive/traversal.pycprintz%interactive_traversal.<locals>.cprint   s0    bggc#tnn%%+,,,,,    c                 N  
 |dk    rt                        d|d           t          	           t          |            t                     t          | t                    r@| j        r|                                 }nF| j        r|                                 }n*| j        }n"t          | d          rt          |           }n| S t          |          }|s| S t          |          D ]B\  }} d
|dt          |          	  	         t          |           t                       C|dk    rd}nd	|dz
  z  }	 t          d
|z            }|dk    rM d|z              d            d            d            d            | |          }n |dv r| }n|dk    r |d         |dz             }n|dk    r |d         |dz             }n|dk    r" t          j        |          |dz             }n	 t#          |          }|dk     s||k    r d|z              | |          }na ||         |dz             }nK# t$          $ r  d|z              | |          }Y n$w xY w# t&          $ r | }t                       Y nw xY w|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 in %s range
z$Choice must be a number in %s range
)r   r   
isinstancer   is_Addas_ordered_termsis_Mulas_ordered_factorsr   hasattrlistlen	enumeratetypeinputrandomchoiceint
ValueErrorEOFError)exprstager   n_argsiargchoicesr(   resultBCYANBGREENBLUEBREDBYELLOWr   GREENRED_interactive_traversalr   s            r   r:   z5interactive_traversal.<locals>._interactive_traversal   s   19 	GGG+WeS$GGGetc


dE"" 
	{ !,,.. !..00yT:&& 	::DDKT 	Koo 	 	FAsF5#vq%tT#YYLLL3KKKGGGGQ; 	,GG
+G#	Q9GCDDF
 } QsL      s@AAAs?@@@s?@@@sL)))//e<<9$ Q3 Q//QCC3 Q//R%!)DD3 Q//d0C0CUQYOOQ [[F z QVv%5 Qt%Cg%MNNN!7!7e!D!D!7!7Veai!P!P " A A AF4BWLN N N33D%@@FFFA1  	 	 	FGGGGG	F s$    J I %JJJ"!J"r    )r,   YELLOWBBLUEMAGENTABMAGENTACYANr3   r4   r5   r6   r7   r   r8   r9   r:   r   s         @@@@@@@@@@r   interactive_traversalrA      s     +IC.ME60OFG,KD%2GX,KD%
C- - - - -I I I I I I I I I I I I I IV "!$***r   )sympy.core.basicr   sympy.printingr   r'   rA   r;   r   r   <module>rD      sP    " " " " " " ! ! ! ! ! ! Y+ Y+ Y+ Y+ Y+r   