o
    ˷e                     @   s  d Z ddlZdZdZi dee deed  dee e e d	eed
  deded
 e e ded
 e ded ded
 deed  dee e dee ed
  ded
 dee ded deed
  e ded
 e e ee e ed eed
 e ed e eed
  eed
  e ee ed
  ed
 ed
  d	Zeee dd dZ	dd e D Z
de
d< e Ze	 D ]\ZZedd  Zeje
e eed  d! qeeeD ]\ZZeD ]	Zeeje d"< qqejed"d#d$ZeD ]Zee d   d 9  < qejeed%d& d'd ejd(d)D Zejeeed* d+d, ZddlZej D ]Z!ee!ee! ksHJ q;e"d-#d.d/ d0D  dS )1a  
==========
Morse Trie
==========

A prefix tree (aka a "trie") representing the Morse encoding of the alphabet.
A letter can be encoded by tracing the path from the corresponding node in the
tree to the root node, reversing the order of the symbols encountered along
the path.
    Nu   •u   —ab   cd   efgh   ijklmnopq)	rstuvwxyzc                 C   s   t | d | d fS )N   )len)item r"   w/var/www/ideatree/venv/lib/python3.10/site-packages/../../../share/doc/networkx-2.8.6/examples/graph/plot_morse_trie.py<lambda>4       r$   )keyc                 C   s   i | ]\}}||qS r"   r"   ).0r   r   r"   r"   r#   
<dictcomp>8   s    r(    )charlayer
horizontal)
subset_keyalignT)poswith_labelsc                 C   s   i | ]
\}}}||f|qS r"   r"   )r'   r   r   r   r"   r"   r#   r(   M   s    r+   )data)edge_labelsc                 C   s6   t t| }t| |  d }|dkrt|| S |S )Nr+   r)   )nextGpredecessorsmorse_encode)letterpredsymbolr"   r"   r#   r7   R   s
   r7    c                 C   s   g | ]}t |qS r"   )r7   )r'   ltrr"   r"   r#   
<listcomp>`   r%   r=   ilovenetworkx)$__doc__networkxnxdotdashmorse_direct_mappingdictsorteditemsmorse_mapping_sortedreverse_mappingDiGraphr5   noder+   r9   add_edge	enumeratetopological_generationsr   r,   r   nodesmultipartite_layoutr0   r   drawedgeselabelsdraw_networkx_edge_labelsr7   stringascii_lowercaser8   printjoinr"   r"   r"   r#   <module>   s    
	




!	
