Codice PHP:
function get_age_array($str)
{
$tmp = explode("-", $str);
foreach ($tmp as $duplet)
{
list($nome, $eta) = explode(",", $duplet);
$age_array[] = array("nome" => $nome, "eta" => $eta);
}
return $age_array;
}
function get_duplets($a)
{
$max_age = 70;
$n = count($a);
for($i=0;$i<$n;$i++)
{
$eta = $a[$i]['eta'];
$nome = $a[$i]['nome'];
for($y=$i;$y<$n;$y++)
{
if($y != $i)
{
$sum = $eta + $a[$y]['eta'];
if($sum < $max_age)
{
$d[] = $nome."(".$eta.") - ".$a[$y]['nome']."(".$a[$y]['eta'].")";
}
}
}
}
return $d;
}
$str1 = "Piero,18-Michele,23-Roberto,16";
$str2 = "Michela,23-Roberta,48-Elisabetta,72";
$str3 = "Mirco,32-Mara,23-Monica,72";
$array = get_age_array($str1."-".$str2."-".$str3);
$a = get_duplets($array);
foreach ($a as $duplet)
{
print($duplet."
");
}
la funzione get_age_array() genera l'array bidimensionale (nome, eta) di tutti i nomi presenti nella stringa di input.
la funzione get_duplets() controlla i valori delle eta delle persone presenti nell'array e restituisce un array con le coppie di persone la cui età è minore di $max_age (cambia quel parametro se ne avessi bisogno).
$str1, $str2, $str3 sono le 3 stringhe che arrivano in input alle funzioni. Le ho fuse per fare un'unica stringa e ne ho ricavato il corrispettivo array con get_age_array. Dopo di che ne ho ricavato le coppie "compatibili" e l'ultimo foreach è li solo per una questione di printing più ordinato del risultato.
Spero che fosse quello che ti serviva e soprattutto che non ci siano errori madornali, ma non mi pare.