B
     S]                 @   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.7/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   r   	randomize   s    r   c             C   s6   x0t |D ]$}| t| | d| |  q
W d S )Ng      ?)rangeleftr   Zforward)tZdistancepartsr   ir
   r
   r   randomfd   s    r   
      c             c   s   |dkrg }g }xt t| |D ]\}	}
|	||  |	ddd|  td  dd|  td d |	  t|	||| dV  xD|
D ]<\}}|	| ||		  |t
|
|| |	| qW q W x*t||| |d ||||D ]
}d V  qW d 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    

r.   c             C   s2   |   t|dd t|gd| ddddgg}|S )N   i0P   g?)-   gGz?)r   g?)igQ?)r,   r.   r&   )r(   penr   r
   r
   r   doit1A   s    r3   c             C   s0   |   t|dd t|gd| dddgg}|S )Niyi~x   g?)r1   gGz?)igQ?)r,   r.   r&   )r(   r2   r   r
   r
   r   doit2G   s    r5   c             C   s2   |   t|dd t|gd| ddddgg}|S )N   id   g?)r1   gffffff?)r   g
ףp=
?)ig?)r,   r.   r&   )r(   r2   r   r
   r
   r   doit3M   s    r8   c              C   s   t  } |   tdd tdt dd}tdt dd}tdt dd}t }xHd}x4|||fD ]&}y|  W q`   |d7 }Y q`X q`W |dkrPP qPW tdd	 t }d
||  S )NK   r      r   )Zundobuffersize   r      r   zruntime: %.2f sec.)r   Zhtr   r3   r5   r8   clock__next__)pusr   aZdonebr
   r
   r   mainT   s&    

rD   __main__N)r   r   )__doc__Zturtler   r   r   r   Zrandomr   Ztimer   r=   r   r   r   r&   r.   r3   r5   r8   rD   __name__r
   r
   r
   r   <module>   s   

