$objects = array(array('lon' => 1, 'lat' => 2), ..., ...);
$cluster = array();
$levels = 10;
$firstRectWidth = 0.01; //самый маленький "квадрат" будет 1111 на 1111
for ($i = 0; $i < count($objects); $i++)
{
$obj = $objects[$i];
for ($level = 1; $level <= $levels; $level++)
{
$lon_index = ($obj->lon) / ($firstRectWidth * (2 ^ $level)); // не помню как степень в php
$lat_index = ($obj->lat) / ($firstRectWidth * (2 ^ $level)); // не помню как степень в php
$cluster[$level][$lon_index . "-" . $lat_index][] = $i;
}
}
// использование
$zoom = 1..10;
echo "кластеров ".(count($cluster[$zoom]))."<br >";
foreach ($cluster[$zoom] as $key => $value)
{
echo "область ".$key."<br >";
echo "кол-во элеметнов ". (count($value));
}
function getRandSeq($seq_len) {
$result = array();
for ($i=1; $i<=$seq_len; $i++)
$result[] = rand(1, 10);
return implode(" ", $result);
}
function getMtRandSeq($seq_len) {
$result = array();
for ($i=1; $i<=$seq_len; $i++)
$result[] = mt_rand(1, 10);
return implode(" ", $result);
}
//
$total = 50000;
$seq_arr1 = array();
$seq_arr2 = array();
$dbl_count1 = 0;
$dbl_count2 = 0;
for ($t=1; $t<=$total; $t++) {
$seq1 = getRandSeq(16);
$seq2 = getMtRandSeq(16);
if (in_array($seq1, $seq_arr1))
$dbl_count1++;
if (in_array($seq2, $seq_arr2))
$dbl_count2++;
$seq_arr1[] = $seq1;
$seq_arr2[] = $seq2;
}
echo $dbl_count1."/".$dbl_count2."/".$total;
1. Составляется ТЗ, в котором по пунктам расписано, что нужно сделать и как оно должно в результате выглядеть и работать.
2. ТЗ отдаётся на оценку кандидатам, они проставляют оценочное количество человеко-часов и ставку за час по каждому пункту
3. Прибавляются прочие расходы, такие как покупка шаблонов или фотографий или движка сайта и т.д.
Сумма 2 и 3 и будет ответом. Если пункт 1 вы выполнить сами не в состоянии (думаю, это так), то ещё и за него нужно будет заплатить.