o
    n]b                     @   s   d dl Zd dlZdd ZdS )    Nc              
   C   s  |\}}}}}}d}|| }|| }|| }|| }ddg}	|t |	d |	d  }|t |	d |	d  }|t |	d |	d  }|t |	d |	d  }|\}
}}}}}g }|| d }|d }tdD ];}|| }|| }|t|t|t|t|g tdD ]}|t|t|t|t|| g ||7 }q|}qftdt|D ]K}t|| d }t|| d }t|| d }t|| d }g }t||D ]}t||D ]}|| ||
 || f  qq|| t| qtdt|D ]C}t|| d }t|| d }t|| d }t|| d }t|| d }t|| d }| ||
 || f }|| | qt	|dd d	}|S )a`  
    Divides main build area into 16 subgrids. Calculates the height standard deviation of all cells in each subgrid
    
    Optimally, build area should be divisible by 4
    
    Returns
    -------
    ordered arrays of 16 subgrids, from flattest to least flat, stored in array [[startx, startz, endx, endz, height_std_dev, floor level], ...]

       r            c                 S   s   | d S )Nr    )xr   r   z:\Documents\Temple_master\Spring_2022\ai\minecraft_proj\CIS-5603-Minecraft-Settlement-Generation-AI\temple_mc_ai\analysis\heightAnalysis.py<lambda>M   s    zfind_flat.<locals>.<lambda>)keyN)
randomrandintrangeappendintlenstatZpstdevroundsorted)heights	buildAreastartxstartystartzendxendyendzZbuild_offsetoffsetZstartx_areaZstarty_areaZstartz_areaZ	endx_areaZ	endy_areaZ	endz_areaZsubgridswidthZsubgrid_lengthijmZall_heightszr   ZmiddlexZmiddlezfloor_levelsubgrid_sortr   r   r	   	find_flat   sZ   "&
r%   )
statisticsr   r   r%   r   r   r   r	   <module>   s    