U
    fp                     @   s  d dl mZmZmZmZmZmZ d dlZd dl	m
Z
 d dlZeeZde_dd Zeddd	 Zed
dd Zeddd Zeddd Zeddd Zejddgddd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zed+kre  dS ),    )Flaskrequestjsonifyrender_template_stringsessionsend_from_directoryN)deepcopyZ0fea7c212f01dbf6a9da79c1a2b0ee570ba179020a3853977c                    s6   ddddddddd	d
d
 d  fddt| D S )Nu   ۰u   ۱u   ۲u   ۳u   ۴u   ۵u   ۶u   ۷u   ۸u   ۹)
0123456789 c                 3   s   | ]} | V  qd S N ).0ZdigitZpersian_numsr   4/var/www/pilapila.net/web_application_project/app.py	<genexpr>   s     z!to_persian_num.<locals>.<genexpr>)joinstr)Znumberr   r   r   to_persian_num   s    
    r   /c                   C   s
   t ddS )N/var/www/pilapila.netzwelcome.htmlr   r   r   r   r   welcome   s    r    z/gamec               	   C   s   d} d}t |d}t|  } W 5 Q R X dtkrjdtd< | d7 } t |d}|t|  W 5 Q R X t| }t ddd	d
}| d|}W 5 Q R X t	|S )Nr   z!/var/www/pilapila.net/counter.txtrZvisitedT   wz"/var/www/pilapila.net/thetest.htmlzutf-8)encodingz[Display count here])
openintreadstripr   writer   r   replacer   )Zvisitor_countZcounter_pathfZvisitor_count_persianfileZhtml_contentr   r   r   game   s    r-   z	/10_Guessc                   C   s
   t ddS )Nr   z10.htmlr   r   r   r   r   game_10-   s    r.   z/15c                   C   s
   t ddS )Nr   z15.htmlr   r   r   r   r   game_152   s    r/   z/sitemap.xmlc                   C   s   t tjtjdd  S Nr"   )r   appZstatic_folderr   pathr   r   r   r   static_from_root7   s    r3   z/solve_gameZPOST)methodsc            
      C   s   t  } | d }ddd |D }tt|d }tdd |D ||}t|}t	dd |D j
}| }t||dd	g}t| }t||}	tddtt|	iS )
Nstater   c                 S   s   g | ]}|d krdnd qS )r	   r
   r   )r   charr   r   r   
<listcomp>B   s     zsolve_game.<locals>.<listcomp>g      ?c                 S   s   g | ]}t |qS r   )r&   )r   xr   r   r   r7   E   s     c                 S   s   g | ]}|  qS r   )flatten)r   mr   r   r   r7   G   s     r"   )r   Zget_jsonr   r&   lennpZarrayZreshapegenerate_matricesZvstackTr9   Zhstackrreftolistextract_solutionr   mapr   )
dataZ
game_state	dimensionZgame_state_matrixmatricesAbZaugmented_matrixrref_matrixsolutionr   r   r   
solve_game<   s    
rK   c                 C   s   g }t | D ]}t | D ]}tj| | ftd}d|||f< |dkrRd||d |f< || d k rnd||d |f< |dkrd|||d f< || d k rd|||d f< || qq|S )N)Zdtyper"   r   )ranger=   Zzerosr&   append)rE   rF   ijmatrixr   r   r   r>   P   s        r>   c                 C   s  t | }|D ]&}tt|D ]}|| d ||< qqd}t|}t|d }t|D ]}||krh|  S |}|| | dkr|d7 }||krl|}|d7 }||krl|  S qlt||| t|D ]2}||kr|| | dkrt|| || ||< q|d7 }qTt| |S )N   r   r"   )r   rL   r<   	swap_rows
vector_addback_substitute)rP   r:   rowrN   ZleadZrowCountZcolumnCountr!   r   r   r   r@   ]   s2    

r@   c                    s    fddt t D S )Nc                    s    g | ]} | |  d  qS )rQ   r   )r   rN   Zv1Zv2r   r   r7   }   s     zvector_add.<locals>.<listcomp>rL   r<   rV   r   rV   r   rS   |   s    rS   c                 C   s   | | | |  | |< | |< d S r   r   )r:   rN   rO   r   r   r   rR      s    rR   c                 C   s0   t |t| D ]}| | | dkr|  S qd S r0   rW   )r:   rO   rN   r   r   r   
find_pivot   s    
rX   c                 C   sB   t |d t| D ]*}| | | dkrt| | | | | |< qd S r0   )rL   r<   rS   )r:   Z	pivot_row	pivot_colrN   r   r   r   	eliminate   s    rZ   c                    s   t t d  }}t|d ddD ]` t fddt|D d }|d krRq&t D ]*}| | dkrZt|   |< qZq&d S )Nr   r"   r;   c                 3   s"   | ]}  | d kr|V  qdS )r"   Nr   )r   rO   rN   r:   r   r   r      s      z"back_substitute.<locals>.<genexpr>)r<   rL   nextrS   )r:   ZrowsZcolsrY   rO   r   r[   r   rT      s    rT   c                 C   sz   dg||  }t t| D ]Z}| | }t|d d dkrX|d dkrXdg||    S || dkrt|d ||< q|S )Nr   r;   r"   )rL   r<   sumr&   )rI   rE   rJ   rN   rU   r   r   r   rB      s     rB   __main__) Zflaskr   r   r   r   r   r   Znumpyr=   copyr   os__name__r1   Z
secret_keyr   Zrouter    r-   r.   r/   r3   rK   r>   r@   rS   rR   rX   rZ   rT   rB   runr   r   r   r   <module>   s8    








