o
    JAf                     @   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rKe  e  dS 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   (/usr/lib/python3.10/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rxg }g }t t| |D ]S\}	}
|	||  |	ddd|  td  dd|  td d |	  t|	||| dV  |
D ]\}}|	| ||		  |t
|
|| |	| qDqt||| |d ||||D ]}d V  qrd S 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(      s2   
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   0   |   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      r<   c                 C   s0   |   t|dd t|gd| dddgg}|S )Niyi~x   r4   r5   r8   r:   r;   r   r   r   doit2G   r=   r?   c                 C   r1   )N   id   r4   ))r6   gffffff?)r   g
ףp=
?)r9   r7   r:   r;   r   r   r   doit3M   r=   rB   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/|d	krFnq(tdd
 t }d||  S )NK   r      r	   )Zundobuffersize   r   T   r   zruntime: %.2f sec.)r   Zhtr   r<   r?   rB   clock__next__)pusr   adonebr   r   r   mainT   s(   


rO   __main__N)r   r   )__doc__Zturtler   r   r   r   randomr   timer   rG   r   r   r   r(   r0   r<   r?   rB   rO   __name__r   r   r   r   <module>   s"   


