<?php
// 16桁の最大数なので、10は外枠に来る
// 最も最大の数ということなので、外枠は、6,7,8,9,10 を使えれば望ましい。
/*
0,5,6
1,6,7
2,7,8
3,8,9
4,9,5
合計が一致するようにする。0,1,2,3,4 は 0が一番小さい値になるように。
*/
$array1 = array();
$array2 = array(10=>10,9=>9,8=>8,7=>7,6=>6,5=>5,4=>4,3=>3,2=>2,1=>1);
calc($array1,$array2);
function calc($array1,$array2)
{
foreach($array2 as $v)
{
unset($array2[$v]);
$array1[] = $v;
if(count($array2) != 0)
{
if(count($array1) == 1)
{
calc($array1,$array2);
}
else if(count($array1) == 2 and $array1[0] < $array1[1])
{
calc($array1,$array2);
}
else if(count($array1) == 3 and $array1[0] < $array1[2])
{
calc($array1,$array2);
}
else if(count($array1) == 4 and $array1[0] < $array1[3])
{
calc($array1,$array2);
}
else if(count($array1) == 5 and $array1[0] < $array1[4])
{
calc($array1,$array2);
}
else if(count($array1) >= 6)
{
calc($array1,$array2);
}
}
else
{
if($array1[0]+$array1[5]+$array1[6] == $array1[1]+$array1[6]+$array1[7]){
if($array1[0]+$array1[5]+$array1[6] == $array1[2]+$array1[7]+$array1[8]){
if($array1[0]+$array1[5]+$array1[6] == $array1[3]+$array1[8]+$array1[9]){
if($array1[0]+$array1[5]+$array1[6] == $array1[4]+$array1[9]+$array1[5]){
echo $array1[0].$array1[5].$array1[6].$array1[1].$array1[6].$array1[7].$array1[2].$array1[7].$array1[8].$array1[3].$array1[8].$array1[9].$array1[4].$array1[9].$array1[5]."\n";
}}}}
}
$array2[$v] = $v;
array_pop($array1);
}
}
?>