o
    >b                     @   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  d S | dkrdV  dV  d S | dkr+dV  dV  d	V  d S | d
kr7dV  dV  d S | dkrIdV  dV  dV  dV  d S | dkrUdV  d	V  d S | dkrddV  dV  dV  d S | dkrpdV  dV  d S | dkrdV  dV  d	V  d S 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   g/home/manu/boulot/teach/git-bpi-prof/tps/1-bases/optionnel/mini-projets/01-morpion/joueur_ordi_malin.pyget_wining_threes   sF   








r   c                  c   sb    t dD ]} d|  }||d |d fV  qt dD ]}|}||d |d fV  qdV  dV  d S )Nr   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>9   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   =   s    


)sumnext)Zwining_threer   r   countfreer   r   r   get_wining_play_in_wining_three7   s   
r   c                 C   s(   t  D ]}t|| |}|r|  S qd S )N)r   r   )r   r   Zthreeplayr   r   r   get_wining_playI   s   
r!   c                 c   s*    | D ]}|dkr|dkrt |V  qd S )Nr   r   )int)r   r   r   r   r   get_empty_casesQ   s   
r#   c                 c   sn    t | D ]/}| d | |g | |d d   }d}t|D ]}t|||}|r,|d7 }q|dkr4|V  qd S )Nr   r   r   )r#   r   r   )r   r   r   Z	new_casesZnb_wining_playsZwining_threesr    r   r   r   	get_forksW   s   "r$   c                 C   s  t | |}|r	|S |dkrdnd}t | |}|r|S tt| |d }|r&|S tt| |}t|dkr=t|d  |d S | d dkrK| d dkrKdS | d |kr_| d dkr_| d dkr_dS | d |krs| d dkrs| d dkrsd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 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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 J )Nr   r   r   r   r   r   r   r   r   r   r	   )r!   r   r$   listlenprint)r   r   r   Zoponent_symbolZoponent_forksr   r   r   	joue_coupe   sR   


$$$$r(   N)r   r   r   r!   r#   r$   r(   r   r   r   r   <module>   s   $