Prezados!
eu tenho a seguinte array:
$eventos = array(
array('nome' => 'evento 1' , 'frequencia' => 1, 'tempo_de_duracao_total' => 2, 'tempo_de_duracao_unitaria' => 2),
array('nome' => 'evento 2' , 'frequencia' => 1, 'tempo_de_duracao_total' => 1, 'tempo_de_duracao_unitaria' => 1),
array('nome' => 'evento 3' , 'frequencia' => 2, 'tempo_de_duracao_total' => 4, 'tempo_de_duracao_unitaria' => 2),
array('nome' => 'evento 4' , 'frequencia' => 3, 'tempo_de_duracao_total' => 6, 'tempo_de_duracao_unitaria' => 2),
array('nome' => 'evento 5' , 'frequencia' => 1, 'tempo_de_duracao_total' => 2, 'tempo_de_duracao_unitaria' => 2),
);
Essa array contem eventos que irão ocorrer dentro de um período. Cada evento tem uma frequência, ou seja, quantas vezes esse evento irá se repetir dentro desse período, por exemplo: o evento 4 irá se repetir quatro vezes. Cada evento também tem uma duração em horas, por exemplo o evento 4 tem duração total de seis horas, mas como ele irá se repetir três vezes, cada ocorrência do evento 4 terá duração de duas horas (esse tempo está registrado na chave 'tempo_de_duracao_unitário').
O que eu preciso é de uma lógica que faça uma distribuição das ocorrências de cada evento de maneira balanceada. Ou seja, eu gostaria de uma lógica que retornasse um array mais ou menos assim:
$eventosDistribuidos = array(
'evento 1',
'evento 4',
'evento 3',
'evento 2',
'evento 4',
'evento 3',
'evento 5',
'evento 4',
);
Observe que ouve uma distribuição de forma que cada ocorrência do mesmo evento ficasse espaçada de uma forma balanceada. Por exemplo, cada ocorrência do 'evento 4', que se repetiu 3 vezes, ficou igualmente espaçado entre dois outros eventos, o mesmo ocorreu para o evento 3, que se repetiu 2 vezes,
Bem, era isso, desde já agradeço!