
\SZc           @   s   d  d l  Z  d  d l Z d  d l Z d Z d Z d   Z d   Z d   Z d   Z e	 d k r e e  j
 d	  \ Z Z e e  j
 d
  Z e e e  Z e e  Z xC e d e  D]/ Z e  j j d e e e e e e f  q Wn  d S(   iNi6eg:0yE>c         C   s$   |  t  k s | t  k r t  S|  | S(   N(   t   LOG_ZERO(   t   v1t   v2(    (    s   ./2.1.viterbi.sol.pyt   log_multiply	   s    c         C   s  t  } d } t |   } | j   } t |  } i  } i  } x/ t d | d  D] }	 i  | |	 <i  | |	 <qP Wx | D] }
 d | d |
 <qu Wx t d | d  D] }	 |  |	 d } x | D] } t  } d } xX | D]P }
 t | |	 d |
 | |
 |  } | | k s| t  k r | } |
 } q q Wt | | | |  | |	 | <| | |	 | <q Wq Wt  } d } xC | D]; }
 | | |
 } | | k s| t  k rq| } |
 } qqqqWi  } x6 t | d d  D]" }	 | | |	 d <| |	 | } qW| S(   Nt    i    i   i(   R    t   lent   keyst   rangeR   (   t   Datat   Modelt   maxkt   ptr_kt   Lt   Statest   Nst   Vt   PTRt   it   kt   symbolt   lt   max_kt   vt   vvt   vd(    (    s   ./2.1.viterbi.sol.pyt   viterbi   sH    
#c         C   s   i  } t  |    } x | D] } t j d |  } | r | j d  } | j d  } t | j d   } | t k  r t } n t j |  } | | k r i  | | <n  | | | | <q q W| SWd  QXd  S(   Ns   (\S*)::(\S*)::(\S*)i   i   i   (	   t   opent   ret   matcht   groupt   floatt   SMALLR    t   matht   log(   t   nameR	   t   ft   linet   mobjt   s1t   s2t   p(    (    s   ./2.1.viterbi.sol.pyt	   readmodel;   s     	c         C   sh   i  } i  } d } t  |   > } x4 | D], } | d | | <| d | | <| d 7} q( WWd  QX| | f S(   Ni    i   (   R   (   R"   R   t   RefR   R#   R$   (    (    s   ./2.1.viterbi.sol.pyt   readdataN   s    t   __main__i   i   i    s   %c%c%c
(   t   sysR   R    R    R   R   R   R)   R+   t   __name__t   argvR   R*   R	   t   ViterbiDR   R   R   R   t   stdoutt   write(    (    (    s   ./2.1.viterbi.sol.pyt   <module>   s   		-		