o
    6t¾i   ã                   @   s–   d dl mZmZ d dlZdejdejfdd„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 )é    )ÚDictÚListNÚdatasetÚreturnc                 C   s   dt dt fdd„}|  |¡S )NÚdocr   c                 S   s$   | d | d t t| d ƒƒdœ}|S )NÚproblemÚsolution)r   r   Úanswer)Úremove_boxedÚlast_boxed_only_string)r   Úout_doc© r   úV/home/ubuntu/.local/lib/python3.10/site-packages/lm_eval/tasks/hendrycks_math/utils.pyÚ_process_doc   s
   ýz"process_docs.<locals>._process_doc)ÚdictÚmap)r   r   r   r   r   Úprocess_docs   s   
r   r   Úresultsc                 C   sr   d}dd„ t |d ƒD ƒ}t|ƒdkr|d }n|d |d d |d … }t|tt| d ƒƒƒr3d}d|i}|S )Nr   c                 S   s   g | ]
\}}|d kr|‘qS )ú$r   )Ú.0ÚposÚcharr   r   r   Ú
<listcomp>   s    z#process_results.<locals>.<listcomp>é   éÿÿÿÿr   Úexact_match)Ú	enumerateÚlenÚis_equivr
   r   )r   r   ÚretvalÚindicesr	   r   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   r+   )Ú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   r.   é   ú}{r+   )r0   r   ÚAssertionError)r1   ÚsubstrsÚnew_strÚsubstrÚaÚbÚpost_substrr   r   r   Ú	fix_fracsa   s4   

ÿr?   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ú/r6   r   r   z{}/{}z\frac{r7   r+   )r   r0   ÚintÚformatÚstrr8   )r1   r<   r=   Ú
new_stringr   r   r   Úfix_a_slash_b   s   ÿrE   c                 C   s.   d| v r|   d¡}t|ƒdksJ ‚|d S | S )Nz\text{ r6   r   )r0   r   )r1   Úsplitsr   r   r   Úremove_right_units   s
   
rG   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   r.   z\sqrt{r+   )r0   )r1   rF   rD   r0   r<   Ú
new_substrr   r   r   Úfix_sqrtš   s   

rI   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ú=r6   r   ú z0.5z\frac{1}{2})ÚreplacerG   r   r0   rI   r?   rE   )r1   r   r   r   r#   ©   s:   r#   )F)Útypingr   r   ÚdatasetsÚDatasetr   r   rC   rA   r!   r   r
   r   r?   rE   rG   rI   r#   r   r   r   r   Ú<module>   s    "
 
