a
    If                     @   s   d Z ddlmZmZmZmZ ddlmZ ddlm	Z
 dd Zdd Zd	d
 ZdddZdd Zdd Zdd Zdd Zdd Zedkre  e  dS )a4       turtlegraphics-example-suite:

             tdemo_forest.py

Displays a 'forest' of 3 breadth-first-trees
similar to the one in tree.
For further remarks see tree.py

This example is a 'breadth-first'-rewrite of
a Logo program written by Erich Neuwirth. See
http://homepage.univie.ac.at/erich.neuwirth/
    )Turtle	colormodetracermainloop	randrange)perf_counterc                 C   s   t |  | d S )N   r   )n r   "lib/python3.9/turtledemo/forest.py	symRandom   s    r   c                    s    fdd| D S )Nc                    s,   g | ]$\}}|t   |d t   fqS )g)\(?)r   ).0angle
sizefactor	angledistsizedistr   r   
<listcomp>   s   
zrandomize.<locals>.<listcomp>r   )
branchlistr   r   r   r   r   	randomize   s    r   c                 C   s2   t |D ]$}| t| | d| |  qd S )Ng      ?)rangeleftr   Zforward)tZdistancepartsr   ir   r   r   randomfd   s    r   
      c                 c   s   |dkrg }g }t t| |D ]\}	}
|	||  |	ddd|  td  dd|  td d |	  t|	||| dV  |
D ]<\}}|	| ||		  |t
|
|| |	| qqt||| |d ||||D ]
}d V  qd S )Nr               r	   )listzipZpensizeZpencolorr   pendownr   r   appendZcloner   righttree)ZtlistsizelevelZwidthfactorZbranchlistsr   r   ZlstZbrsr   r   r   r   xr   r   r   r(      s*    
r(   c                 C   sL   t d |   | d |   | d |   | || |   d S )Nr   r   Z   )r   resetZspeed
hideturtler   ZpenupZsetposr%   )r   r+   yr   r   r   start7   s    

r0   c                 C   s0   |   t|dd t|gd| dg dg}|S )N   i0P   皙?)-   gGz?)r   ?gQ?r.   r0   r(   r*   Zpenr   r   r   r   doit1A   s    r;   c                 C   s0   |   t|dd t|gd| dddgg}|S )Niyi~x   r3   r4   r7   r9   r:   r   r   r   doit2G   s    r=   c                 C   s0   |   t|dd t|gd| dg dg}|S )N   id   r3   ))r5   gffffff?)r   g
ףp=
?)r8   r6   r9   r:   r   r   r   doit3M   s    r@   c                  C   s   t  } |   tdd tdt dd}tdt dd}tdt dd}t }d}|||fD ]&}z|  W q\   |d7 }Y q\0 q\|dkrNqqNtdd	 t }d
||  S )NK   r      r	   )Zundobuffersize   r      r   zruntime: %.2f sec.)r   Zhtr   r;   r=   r@   clock__next__)pusr   aZdonebr   r   r   mainT   s$    

rL   __main__N)r   r   )__doc__Zturtler   r   r   r   Zrandomr   timer   rE   r   r   r   r(   r0   r;   r=   r@   rL   __name__r   r   r   r   <module>   s   

