o
    6t¾ih  ã                   @   s€   d dl Z d dlmZmZ dedee deeef fdd„Z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S )é    N)ÚDictÚListÚdocÚresultsÚreturnc           
   	   C   sÀ   d}|d }dd„ t |ƒD ƒ}t|ƒdkr|}n||d d |d … }t|ƒ}|d urDzt|ƒ}|d ur7|}W n ttfyC   Y nw tdd„ |  ¡ D ƒƒ}t| | ƒ}	t	||	ƒr\d}d|iS )	Nr   c                 S   s   g | ]
\}}|d kr|‘qS )ú$© )Ú.0ÚposÚcharr   r   úL/home/ubuntu/.local/lib/python3.10/site-packages/lm_eval/tasks/aime/utils.pyÚ
<listcomp>
   s    z#process_results.<locals>.<listcomp>é   éÿÿÿÿc                 s   s     | ]}|  ¡ d kr|V  qdS )ÚanswerN)Úlower)r	   Úkr   r   r   Ú	<genexpr>   s   € z"process_results.<locals>.<genexpr>Úexact_match)
Ú	enumerateÚlenÚlast_boxed_only_stringÚremove_boxedÚAssertionErrorÚ
IndexErrorÚnextÚkeysÚstrÚis_equiv)
r   r   ÚretvalÚresponseÚindicesr   Úboxed_answerÚboxed_contentÚ
answer_keyÚtargetr   r   r   Úprocess_results   s*   €ÿ
r&   Fc                 C   st   | d u r|d u rt dƒ dS | d u s|d u rdS zt| ƒ}t|ƒ}|r(t ||ƒ ||kW S  ty9   | |k Y S w )NzWARNING: Both NoneTF)ÚprintÚstrip_stringÚ	Exception)Ústr1Ústr2ÚverboseÚss1Úss2r   r   r   r   $   s   

ÿr   c                 C   sp   d| v rd}| d t |ƒ… |ksJ ‚| t |ƒd … S d}| d t |ƒ… |ks(J ‚| d dks0J ‚| t |ƒd… S )Nú\boxed z\boxed{r   Ú})r   )ÚsÚleftr   r   r   r   5   s   r   c                 C   sÒ   |   d¡}d| v rd|  d¡d  d¡d  S |dk r&|   d¡}|dk r&d S |}d }d}|t| ƒk rW| | dkr<|d7 }| | d	krM|d8 }|dkrM|}n
|d7 }|t| ƒk s2|d u r_d }|S | ||d … }|S )
Nz\boxedr/   r   r   r   z\fboxÚ{r   r0   )ÚrfindÚsplitr   )ÚstringÚidxÚiÚright_brace_idxÚnum_left_braces_openr   r   r   r   r   C   s2   

ø
þr   c              	   C   s8  |   d¡}|d }t|ƒdkr˜|dd … }|D ]€}|d7 }|d dkr(||7 }qz
t|ƒdks1J ‚W n ty?   |  Y   S w |d }|d }|dkrtt|ƒdkrg|dd … }|d| d | d | 7 }q|d| d | d 7 }qt|ƒdkr|dd … }|d| d | | 7 }q|d| d | 7 }q|} | S )Nz\fracr   r   r3   é   ú}{r0   )r5   r   r   )r6   ÚsubstrsÚnew_strÚsubstrÚaÚbÚpost_substrr   r   r   Ú	fix_fracsa   s4   

ÿrC   c                 C   s   t |  d¡ƒdkr| S |  d¡d }|  d¡d }z#t|ƒ}t|ƒ}| d ||¡ks,J ‚dt|ƒ d t|ƒ d }|W S  tyG   |  Y S w )	Nú/r;   r   r   z{}/{}z\frac{r<   r0   )r   r5   ÚintÚformatr   r   )r6   r@   rA   Ú
new_stringr   r   r   Úfix_a_slash_b   s   ÿrH   c                 C   s.   d| v r|   d¡}t|ƒdksJ ‚|d S | S )Nz\text{ r;   r   )r5   r   )r6   Úsplitsr   r   r   Úremove_right_units   s
   
rJ   c                 C   sr   d| vr| S |   d¡}|d }|dd … D ]!}|d dkr.|d }d| d |dd …  }nd| }||7 }q|S )Nz\sqrtr   r   r3   z\sqrt{r0   )r5   )r6   rI   rG   r5   r@   Ú
new_substrr   r   r   Úfix_sqrtš   s   

rL   c                 C   s>  |   dd¡} |   dd¡} |   dd¡} |   dd¡} |   dd¡} |   d	d¡} |   d
d¡} |   dd¡} |   dd¡} |   dd¡} t| ƒ} |   dd¡} |   dd¡} |   dd¡} |   dd¡} t| ƒdkr`| S | d dkrjd|  } t|  d¡ƒdkr…t|  d¡d ƒdkr…|  d¡d } t| ƒ} |   dd¡} t| ƒ} | dkr™d} t| ƒ} | S )NÚ
Ú z\!z\\ú\ÚtfracÚfracÚdfracz\leftz\rightz^{\circ}z^\circz\$z\%z .z 0.z{.z{0.r   Ú.Ú0ú=r;   r   ú z0.5z\frac{1}{2})ÚreplacerJ   r   r5   rL   rC   rH   )r6   r   r   r   r(   ©   s:   r(   )F)ÚreÚtypingr   r   Údictr   rE   r&   r   r   r   rC   rH   rJ   rL   r(   r   r   r   r   Ú<module>   s    "
 
