white phoenix
Новичок
Задача на сообразительность
Я не стал искать зависимость (между N и числом), которая несомненно существует, а просто решил "пройти" весь путь заполнив массив.
Результат:
X.Y i d j
1.1 1 0 0
1.2 2 0 1
1.3 3 0 2
1.4 4 0 3
1.5 5 0 4
2.5 6 1 1
3.5 7 1 2
4.5 8 1 3
5.5 9 1 4
5.4 10 2 1
5.3 11 2 2
5.2 12 2 3
5.1 13 2 4
4.1 14 3 1
3.1 15 3 2
2.1 16 3 3
1.1 17 3 4
1.2 18 0 1
1.3 19 0 2
1.4 20 0 3
1.5 21 0 4
2.5 22 1 1
3.5 23 1 2
4.5 24 1 3
Сначала верно, а потом начинает врать.
Помогите люди добрые ибо сам я уже в конец задолбался.
Прошлую ночь не спал нифига, тем не менее вот что получилось:Дан массив из чисел, NхN, расставить числа по примеру:
01 16 15 14 13
02 17 24 23 12
03 18 25 22 11
04 19 20 21 10
05 06 07 08 09
Сосчитать сумму чисел по диагонали ((1,1)-(N,N)).
* предпочтительно решение для ограниченного объема памяти (вся матрица в
память не помещается).
Решение: посчитанная сумма для N=1000, исходник на любом языке
программирования.
Я не стал искать зависимость (между N и числом), которая несомненно существует, а просто решил "пройти" весь путь заполнив массив.
PHP:
$array = array();
$k = 5; // кол-во цифр на стороне
$x = 1; // начальные
$y = 1; // координаты
$d = 0; // начальное направление (0 - вниз)
$m = $k; // кол-во цифр на стороне, которое уменьшается
$i = 1; // начальное N
$j = 0; // пробегающая переменная по стороне
echo "<table border=1 width=40%><tr><td><b>X.Y</b></td><td><b>i</b></td><td><b>d</b></td><td><b>j</b></td></tr>";
while ($i < 25)
{
$t = $x.".".$y;
echo "<tr><td>".$t."</td><td>".$i."</td><td>".$d."</td><td>".$j."</td></tr>";
$array[$t] = $i;
$u = $j == $m-1;
if ($u) {if ($d == 3) {$d = 0;} else {$d++;} $j = 0;}
if ($d == 0) {$y++;}
if ($d == 1) {$x++;}
if ($d == 2) {$y--;}
if ($d == 3) {$x--;}
$i++;
$j++;
}
echo "</table>";
//var_dump($array);
exit;
$n = 100;
$s = 0;
for($i=0;$i<$n;$i++)
{
$t = $i.".".$i;
$s += $array[$t];
}
echo $s;
X.Y i d j
1.1 1 0 0
1.2 2 0 1
1.3 3 0 2
1.4 4 0 3
1.5 5 0 4
2.5 6 1 1
3.5 7 1 2
4.5 8 1 3
5.5 9 1 4
5.4 10 2 1
5.3 11 2 2
5.2 12 2 3
5.1 13 2 4
4.1 14 3 1
3.1 15 3 2
2.1 16 3 3
1.1 17 3 4
1.2 18 0 1
1.3 19 0 2
1.4 20 0 3
1.5 21 0 4
2.5 22 1 1
3.5 23 1 2
4.5 24 1 3
Сначала верно, а потом начинает врать.
Помогите люди добрые ибо сам я уже в конец задолбался.