B
    S*9_t                 @   s<   d d Z dd Zdd Zdd Zdd	 Zd
d Zdd ZdS )c             c   s   | dkrdV  dV  dV  n| dkr2dV  dV  n| dkrNdV  dV  d	V  n| d
krddV  dV  n| dkrdV  dV  dV  dV  nb| dkrdV  d	V  nL| dkrdV  dV  dV  n0| dkrdV  dV  n| dkrdV  dV  d	V  d S )N    )r         )r         )r         r   )r   r      r   )r   r   r   )r      r   r   )r   r   r	   r   r	   r   )r   r   r   )r   r   r   r   r    )caser
   r
   b/home/manu/boulot/teach/git-bpi-prof/tps/1-bases/travaux-pratiques/03-morpion/joueur_ordi_malin.pyget_wining_threes   sB    r   c              c   sh   x,t dD ] } d|  }||d |d fV  q
W x(t dD ]}|}||d |d fV  q8W dV  dV  d S )Nr   r   r   r   )r   r   r   )r   r   r   )range)lineZfirstZcolumnr
   r
   r   get_all_wining_threes%   s    r   c                sD   t  fdd| D }|dkr@t fdd| D d }|r@|S d S )Nc             3   s   | ]} | krd V  qdS )r   Nr
   ).0r   )casessymboler
   r   	<genexpr>7   s    z2get_wining_play_in_wining_three.<locals>.<genexpr>r   c             3   s*   | ]"} | d kr | dkr|V  qdS )xoNr
   )r   r   )r   r
   r   r   :   s    )sumnext)Zwining_threer   r   countfreer
   )r   r   r   get_wining_play_in_wining_three5   s    r   c             C   s(   x"t  D ]}t|| |}|r|S qW d S )N)r   r   )r   r   Zthreeplayr
   r
   r   get_wining_play@   s
    r   c             c   s,   x&| D ]}|dkr|dkrt |V  qW d S )Nr   r   )int)r   r   r
   r
   r   get_empty_casesG   s    
r   c             c   st   xnt | D ]b}| d | |f | |d d   }d}x(t|D ]}t|||}|r>|d7 }q>W |dkr
|V  q
W d S )Nr   r   r   )r   r   r   )r   r   r   Z	new_casesZnb_wining_playsZwining_threesr   r
   r
   r   	get_forksL   s    "r    c             C   sP  t | |}|r|S |dkrdnd}t | |}|r4|S tt| |d }|rL|S tt| |}t|dkrzt|d  |d S | d dkr| d dkrdS | d |kr| d dkr| d dkrdS | d |kr| d dkr| d dkrdS | d |kr| d dkr| d dkrdS | d |krB| d dkrB| d dkrBdS | d dkrb| d dkrbdS | d dkr| d dkrdS | d dkr| d dkrdS | d dkr| d dkrdS | d dkr| d dkrdS | d	 dkr| d	 dkrd	S | d
 dkr"| d
 dkr"d
S | d dkrB| d dkrBdS dsLtd S )Nr   r   r   r   r   r   r   r   r   r	   r   F)r   r   r    listlenprintAssertionError)r   r   r   Zoponent_symbolZoponent_forksr
   r
   r   	joue_coupY   sR    


$$**r%   N)r   r   r   r   r   r    r%   r
   r
   r
   r   <module>   s   $