Перейти до основного контенту

Як вивести масив по спіралі: алгоритми і приклади коду

12 хв читання
1989 переглядів

Для вирішення цього завдання можна використовувати наступний алгоритм:

  1. Ініціалізувати чотири змінні: верхню межу, нижню межу, лівий кордон і праву межу, які вказують на межі матриці.
  2. Ініціалізувати змінні: напрямок (початковий напрямок-вправо) і лічильник (початкове значення-1).
  3. Запустити цикл, який буде виконуватися, поки значення верхньої межі і лівої межі менше або рівні нижньої і правої межі відповідно.
  4. Вивести всі елементи верхньої межі (від лівої до правої межі) і збільшити значення верхньої межі.
  5. Збільшити лічильник.
  6. Вивести всі елементи правої межі (від верхньої до нижньої межі) і зменшити значення правої межі.
  7. Збільшити лічильник.
  8. Вивести всі елементи нижньої межі (від правої до лівої межі) і зменшити значення нижньої межі.
  9. Збільшити лічильник.
  10. Вивести всі елементи лівої межі (від нижньої до верхньої межі) і збільшити значення лівої межі.
  11. Збільшити лічильник.
  12. Повторювати кроки 4-11, поки не будуть виведені всі елементи масиву.

Таким чином, використовуючи даний алгоритм, можна ефективно вивести масив по спіралі.

Скажімо, у нас є наступний масив:

1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
1 2 3
5
7 8 9
1 2 3
5
7 8 9

Таким чином, отримуємо шукану спіральну форму масиву 3x3.

[[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]]
function printSpiral(matrix) topRow++;for (let i = topRow; i rightColumn--;if (topRow = leftColumn; i--) bottomRow--;>if (leftColumn = topRow; i--) leftColumn++;>>return result;>let matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],[13, 14, 15, 16]];let spiral = printSpiral(matrix);console.log(spiral);

В результаті виконання даного коду в консоль буде виведений масив, що містить елементи вихідного масиву, виведені по спіралі:

[1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10]

Таким чином, ми успішно вивели масив 4x4 по спіралі, використовуючи дану функцію.

def print_spiral(matrix):row_start = 0row_end = len(matrix) - 1col_start = 0col_end = len(matrix[0]) - 1while row_start 

В результаті виконання даного прикладу буде виведена наступна послідовність чисел: 1, 2, 3, 6, 9, 8, 7, 4, 5.

Схожі статті

Продовжте вивчення теми з цими цікавими матеріалами

В'язання-це захоплююче і творче заняття, яке дозволяє створювати унікальні предмети з пряжі. Ви можете зв'язати м'яку і теплий одяг, аксесуари або навіть...

381 1766
3 хв читання

Url-адреси - важлива частина роботи будь-якого веб-сайту. Вони допомагають користувачам орієнтуватися і швидко знаходити потрібні їм сторінки.

441 1780
12 хв читання

Існує багато різних антивірусних програм, але однією з найпопулярніших серед користувачів є avast. Він пропонує широкий спектр функцій і налаштувань, які...

305 1622
10 хв читання