- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
<?
error_reporting(0);
$b=array("Калининград","Вологда","Далматово","Дмитров","Архангельск","Владивосток","Краков");
//конкурсный код:
//begin
for($i=0;$i<7;$i++){$s.="for(\$z[$i]=0;\$z[$i]<7;\$z[$i]++)";$n.="\$z[$i],";$q.="\$b[\$z[$i]],";}$f='for($i=0;$i<7;$i++){$l[$i]=strlen($b[$i])-1;$c[$i]=strtolower($b[$i]);for($j=0;$j<7;$j++)if($i!=$j&&$b[$i][$l[$i]]==strtolower($b[$j][0]))$e[$i]=true;}'.$s.'{$y=array('.$n.');sort($y);if($y==array(0,1,2,3,4,5,6)){$d=true;for($i=0;$i<6;$i++)if($d&&$c[$z[$i]][$l[$z[$i]]]!=$c[$z[$i+1]][0]&&($e[$z[$i]]||$c[$z[$i]][$l[$z[$i]]-1]!=$c[$z[$i+1]][0]))$d=!$d;if($d)$a=array('.$q.');}}';eval($f);
//end
print_r($a);
echo "<br />";
echo "<br />";
//тоже самое в нормальном виде:
for($i=0;$i<7;$i++)
{
$l[$i]=strlen($b[$i])-1;
$c[$i]=strtolower($b[$i]);
for($j=0;$j<7;$j++)
{
if($i!=$j && $b[$i][$l[$i]]==strtolower($b[$j][0]))
{
$ecantUsePrelast[$i] = true;
}
}
};
for($z[0]=0;$z[0]<7;$z[0]++)
for($z[1]=0;$z[1]<7;$z[1]++)
for($z[2]=0;$z[2]<7;$z[2]++)
for($z[3]=0;$z[3]<7;$z[3]++)
for($z[4]=0;$z[4]<7;$z[4]++)
for($z[5]=0;$z[5]<7;$z[5]++)
for($z[6]=0;$z[6]<7;$z[6]++)
{
$y=array($z[6],$z[5],$z[4],$z[3],$z[2],$z[1],$z[0]);
sort($y);
if($y==array(0,1,2,3,4,5,6))
{
$dcorrect=true;
for($i=0;$i<6;$i++)
if($dcorrect && $c[$z[$i]][$l[$z[$i]]]!=$c[$z[$i+1]][0] && ($ecantUsePrelast[$z[$i]] || $c[$z[$i]][$l[$z[$i]]-1]!=$c[$z[$i+1]][0]))
$dcorrect=!$dcorrect;
if($dcorrect)
{
$a=array($b[$z[0]],$b[$z[1]],$b[$z[2]],$b[$z[3]],$b[$z[4]],$b[$z[5]],$b[$z[6]]);
}
}
}
print_r($a);
?>
Чтобы немного развеять "академическую" атмосферу на сайте, мы решили провести конкурс в стиле Code Golf (написать программное решение задачи, использовав минимальное количество символов)
Задание: написать программу для игры «в города».
На вход подается массив вида
[Калининград, Вологда, Алматы, Дмитров, Архангельск, Тобольск, Краков]
На выходе.
[Архангельск, Краков, Вологда, Алматы , Тобольск, Калининград, Дмитров]