суббота, 23 декабря 2017 г.

Алгоритм вращения массива

В одном из заданий на сайте codewars в качестве дополнительного алгоритма требовалось вращать массив в конкретном направлении.

Хотя направлений всего два (против или по часовой стрелке), приведу вам код для вращения против часовой стрелки.
Итак, исходные данные:
$a = [
    [1,2,3],
    [4,5,6],
    [7,8,9],
];

Требуется получить:
$a = [
    [3,6,9],
    [2,5,8],
    [1,4,7],
];


Код для вращения следующий:

function rotate($a)
{
    $r = [];

    $i = 0;
    $ti = count($a[0]);
    $tj = count($a);
    for (; $i < $ti; $i++) {
        $row = [];
        for ($j = 0; $j < $tj; $j++) {
            $row[] = $a[$j][$i];
        }
        array_unshift($r, $row);
    }

    return $r;
}


Вращение по часовой стрелке реализуется аналогично, но если вам лень думать (а такое часто бывает), можете сразу сходить в git/gist.

Комментариев нет:

Отправить комментарий