Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.02.2014, 23:42
Аватар для NuclleaR
Интересующийся
Отправить личное сообщение для NuclleaR Посмотреть профиль Найти все сообщения от NuclleaR
 
Регистрация: 15.02.2014
Сообщений: 19

Сортировка спиралью
Доброго времени суток!
Уважаемые знатоки подскажите пожалуйста алгоритм решения задачи.
Есть матрица
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

на выходе должно получиться
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Ответить с цитированием
  #2 (permalink)  
Старый 16.02.2014, 03:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

NuclleaR,
ну алгоритм примерно такой
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
<style type="text/css">
td{
   height: 22px; width: 22px; text-align: center;
}
</style>
</head>
<body>
<script>
for (var m = [], z = [[1, 1]], l = 7, k,v = 0,
 b = ["background-color: #FFFF00;", "background-color: #FF00FF;", "background-color: #00FF00;", "background-color: #FF0000;"],
 t = document.createElement("table"), c = 0; c < l; c++) {
    var tr = t.insertRow(c);
    m[c] = [];
    for (var s = 0; s < l; s++) {
        k = 1;
        if (c == 0 || c == l - 1 || s == 0 || s == l - 1) k = 0;
        var td = tr.insertCell(s)
        td.style.cssText = b[k];
        k && (td.innerHTML = ++v)
        m[c][s] = k
    }
}
document.body.appendChild(t);
t.rows[z[0][0]].cells[z[0][1]].style.cssText = b[3];
var p = [
            [0, 1],
            [-1, 0],
            [0, -1],
            [1, 0]
        ],
  v = 0, end = 4;
function go() {

    n = [z[0][0] + p[0][0], z[0][1] + p[0][1]];
    if (m[n[0]][n[1]] == 2) {
        end = 4;
        m[n[0]][n[1]] = 3;
        t.rows[n[0]].cells[n[1]].style.cssText = b[3];
        z.unshift(n)
    } else if (m[n[0]][n[1]] == 1) {
        end = 4;
        m[n[0]][n[1]] = 3;
        t.rows[n[0]].cells[n[1]].style.cssText = b[3];
        z.unshift(n);
        d = z.pop();
        m[d[0]][d[1]] = 3;
        t.rows[d[0]].cells[d[1]].style.cssText = b[1];
        t.rows[d[0]].cells[d[1]].innerHTML = ++v
    } else if (m[n[0]][n[1]] == 0 || m[n[0]][n[1]] == 3) {
        p.push(p.shift());
        end--
    }
    end ? setTimeout(arguments.callee, 300) : (t.rows[z[0][0]].cells[z[0][1]].innerHTML = ++v,alert("Game over"))

};
</script>
<input type="button" name="" value="go"  onclick="go()"/>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 16.02.2014, 03:37
Аватар для NuclleaR
Интересующийся
Отправить личное сообщение для NuclleaR Посмотреть профиль Найти все сообщения от NuclleaR
 
Регистрация: 15.02.2014
Сообщений: 19

Спасибо за помощь рони, только с этого кода я всё равно не могу понять алгоритм работы перебора массива
Ответить с цитированием
  #4 (permalink)  
Старый 16.02.2014, 03:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

NuclleaR,
все ячейки матрицы кидаем в один массив -- сортируем потом заполняем матрицу
когда нет ячейки справа ищем снизу если нет снизу ищем слева -- нет слева ищем вверху и так по кругу
Ответить с цитированием
  #5 (permalink)  
Старый 16.02.2014, 13:19
Аватар для NuclleaR
Интересующийся
Отправить личное сообщение для NuclleaR Посмотреть профиль Найти все сообщения от NuclleaR
 
Регистрация: 15.02.2014
Сообщений: 19

рони,
если тебе не тяжело ответить на несколько вопросов по этой теме кинь свой скайп в ЛС
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Говнокод)) Сортировка пузырьком. Lorines Ваши сайты и скрипты 3 03.10.2013 01:23
Сортировка строк Chrome adamenko.artem Opera, Safari и др. 4 25.07.2013 16:27
Сортировка и фильтрация в селекторе amt779 jQuery 1 08.07.2011 03:09
Сортировка таблиц с tablesort lexniko jQuery 0 03.11.2009 13:02
Сортировка числовых данных в таблице Vladsss Общие вопросы Javascript 15 01.09.2009 17:02