var prd = [[0,1],[1,0],[0,-1],[-1,0]];
var n = 9; // Размер матрицы
var matrix = new Array();
for(var i = 0; i<n; i++) matrix = new Array(n);
var num = 1;
var si=0, sj=0, t=Math.floor(n/2), w = n-1;
for(var l=0; l<t; l++)
{
si=sj=l;
for(var dir = 0; dir<4; dir++)
for(var c=0; c < w; c++)
{
matrix[si][sj] = num++;
si += prd[dir][0];
sj += prd[dir][1];
}
w-=2;
}
if(l*2+1==n) matrix[l][l] = num;
Помогите решить задачу в JavaScript
12
43
или
123
894
765
Я могу вывести только вернихние элементы, дальше полный ступор немогу ничего рпидумать:mad::
<title>1</title>
<script language="javascript" type="text/javascript">
var p,c,a,i,m,n,b,arr1=[0];
n=eval(prompt("n=","n"));
m=n+(n-1)+(n-1)+(n-2);
p=n+(n-1)+(n-1);
c=m;
q=n;
a=1;
b=n*n;
if (n<2) {alert("n<2!!!");}
for(i=0;i<b;i++)
{
arr1=a;
a+=1;
} document.write(arr1+"<br>");
document.write(m+"<br >");
document.write("<table border=2><tr>");
for (i=0;i<n;i++)
{
document.write("<td>"+arr1+"</td>");
}
document.write("</tr>");
document.write("<tr>");
for(m;m<c+n-1;m++)
{
document.write("<td>"+arr1[m-1]+"</td>");
}
document.write("<td>"+arr1[q]+"</td>");
document.write("</tr>");
document.write("</table>");
</script></head>
Вот пока что получилось. Помогите плз что дальше надо писать?
Либо название нужно более интригующее :)
Но, тем не менее, чтобы приблизиться к решению этой задачи нужно заварить себе чашечку чая, нарисовать на листочке квадратную матрицу и внимательно на нее посмотреть.
В скором времени придет озарение: "Твою бровь, да это же кольца!!!" - подумаете вы, - "Квадратные кольца!".
Итог этой истерии будет таковым:
Чтобы "обойти матрицу по спирали" нужно последовательно пройтись по кольцам до самого центра... Т.е. после каждого кольца мы сужаем границы. Кольцо суть последовательный проход по четырем направлениям.
Вот мой вариант:
Код:
Только сейчас дошло, что elmaster просто приколист...
Приколистка мая училка:D т.к. дала эту задачу решать мне))