a
    ž¬<b  ã                   @   s<   d Z ddlmZ ddlmZmZ ddlZdd„ Zdd„ ZdS )	z[For reading in DIMACS file format

www.cs.ubc.ca/~hoos/SATLIB/Benchmarks/SAT/satformat.ps

é    )ÚSymbol)ÚAndÚOrNc                 C   sô   g }|   d¡}t d¡}t d¡}t|ƒdkrì| d¡}| |¡s"| |¡}|s"| d¡  d¡}g }|D ]f}	|	dkrht|	ƒdkr‚qhtt|	ƒƒ}
d}t|	ƒdk r¢d}|rº| 	t
d	|
 ƒ¡ qh| 	t
d	|
 ƒ ¡ qht|ƒdkr"| 	t|Ž ¡ q"t|Ž S )
a   Loads a boolean expression from a string.

    Examples
    ========

    >>> from sympy.logic.utilities.dimacs import load
    >>> load('1')
    cnf_1
    >>> load('1 2')
    cnf_1 | cnf_2
    >>> load('1 \n 2')
    cnf_1 & cnf_2
    >>> load('1 2 \n 3')
    cnf_3 & (cnf_1 | cnf_2)
    Ú
zc.*zp\s*cnf\s*(\d*)\s*(\d*)r   ú Ú TFzcnf_%s)ÚsplitÚreÚcompileÚlenÚpopÚmatchÚrstripÚintÚabsÚappendr   r   r   )ÚsZclausesÚlinesZpCommentZpStatsÚlineÚmÚnumsÚlistZlitÚnumÚsign© r   úl/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/logic/utilities/dimacs.pyÚload   s2    





r   c                 C   s8   t | ƒ}| ¡ }W d  ƒ n1 s&0    Y  t|ƒS )z'Loads a boolean expression from a file.N)ÚopenÚreadr   )ÚlocationÚfr   r   r   r   Ú	load_fileA   s    
&r!   )	Ú__doc__Z
sympy.corer   Zsympy.logic.boolalgr   r   r	   r   r!   r   r   r   r   Ú<module>   s
   5