Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/103: Рейтинг темы: голосов - 103, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 12.04.2021
Сообщений: 12

Заполнение матрицы змейкой

24.04.2021, 22:43. Показов 19742. Ответов 21

Студворк — интернет-сервис помощи студентам
Сделал по заданию препода программу, которая сортирует матрицу змейкой, но она работает лишь при n равном 5, как можно это исправить?
Python
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
26
27
28
29
30
31
32
33
34
import copy
import numpy as np
import random
n = int(input())
s = n*n
a = np.arange(s).reshape(n, n)
print(a)
a = a.reshape(-1)
a = np.sort(a)
a = a.reshape(n, n)
print(a)
a = a.reshape(-1)
b = copy.deepcopy(a)
print(a)
print(b)
for i in range(n):
    b[0+i*n] = a[s-n+i]
 
for i in range(n):
    b[0+i] = a[s-n-i]
for i in range(n+1):
    b[n * i - 1] = a[s-1-2*(n - 1)-i+1]
for i in range(0, n-1):
    b[s-1-i] = a[2*n-i+2]
for i in range(0, n-2):
    b[(3*n+1)-(i*n)] = a[2*n-2-i]
for i in range(0, n-2):
    b[n+1+i] = a[n+1-i]
for i in range(0, n-3):
    b[2*n+3+(n*i)] = a[n-2-i]
for i in range(0, n-3):
    b[3*n+2-i*n] = a[n-(n-1)-i]
b = b.reshape(n, n)
print(b)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.04.2021, 22:43
Ответы с готовыми решениями:

Заполнение матрицы змейкой
Подскажите пожалуйста, как можно составить программу, составляющую массив n-ого размера из целочисленных случайных чисел, затем...

Заполнение массива змейкой
Здравствуйте. Вот решаю задачку по созданию и заполнению массива змейкой. В результате должно получится, что-то вроде этого 1 2 3...

Заполнение двумерного массива змейкой
заполнение идёт по спирали, в один цикл не получится, можно разбить на 4 цикла и в центр добавить число отдельно. я понимаю как это...

21
Эксперт Python
8837 / 4489 / 1864
Регистрация: 27.03.2020
Сообщений: 7,311
25.04.2021, 11:45
Студворк — интернет-сервис помощи студентам
Viktorrus,
Пусть он даст четкое условие.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
25.04.2021, 13:29
Gdez, Добавил в Ваш код формирование исходной случайной квадратной матрицы. Видно, что Ваш код прекрасно работает, как для четной, так и для нечетной матрицы.
Кликните здесь для просмотра всего текста
Python
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from random import randint
 
# формируем исходную матрицу.
n = int(input('Порядок квадратной матрицы: '))
#b = [[randint(0, 99) for j in range(n)] for i in range(n)]
b = []
for i in range(n):
    b.append([])
    for j in range(n):
        b[i].append(randint(0, 99))
 
print(b)
print('****************')
 
for i in b:
    print(*map('{:2d}'.format, i))
print('****************')
 
# собираем элементы матрицы в одномерный список и сортируем его
w = []
for row in b:
    for el in row:
        w.append(el)
w.sort()
print(w)
print('****************')
 
# заполняем матрицу "b" по спирали
 
i = j = n//2
b[i][j] = w[0]
ij = 0
m = -1 if n%2 else 1
for k in range(1, n):
    # заполняем по вертикали
    for _ in range(k):
        ij += 1
        i -= m
        b[i][j] = w[ij]
    m *= -1
    # заполняем по горизонтали
    for _ in range(k):
        ij += 1
        j += m
        b[i][j] = w[ij]
# заполняем вниз до левой нижней ячейки
for i in range(1, n):
    ij += 1
    b[i][0] = w[ij]
for i in b:
    print(*map('{:2d}'.format, i))

Вывод для четной матрицы:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Порядок квадратной матрицы: 8
[[41, 41, 89, 16, 17, 18, 48, 87], [77, 22, 46, 61, 63, 88, 48, 74], [68, 6, 62, 12, 30, 64, 56, 6], [91, 63, 66, 92, 66, 3, 7, 69], [8, 91, 76, 60, 82, 54, 70, 92], [6, 34, 31, 17, 48, 5, 72, 37], [66, 91, 72, 44, 32, 37, 15, 10], [89, 91, 24, 12, 30, 24, 18, 29]]
****************
41 41 89 16 17 18 48 87
77 22 46 61 63 88 48 74
68  6 62 12 30 64 56  6
91 63 66 92 66  3  7 69
 8 91 76 60 82 54 70 92
 6 34 31 17 48  5 72 37
66 91 72 44 32 37 15 10
89 91 24 12 30 24 18 29
****************
[3, 5, 6, 6, 6, 7, 8, 10, 12, 12, 15, 16, 17, 17, 18, 18, 22, 24, 24, 29, 30, 30, 31, 32, 34, 37, 37, 41, 41, 44, 46, 48, 48, 48, 54, 56, 60, 61, 62, 63, 63, 64, 66, 66, 66, 68, 69, 70, 72, 72, 74, 76, 77, 82, 87, 88, 89, 89, 91, 91, 91, 91, 92, 92]
****************
89 88 87 82 77 76 74 72
89 46 44 41 41 37 37 72
91 48 17 16 15 12 34 70
91 48 17  6  5 12 32 69
91 48 18  6  3 10 31 68
91 54 18  6  7  8 30 66
92 56 22 24 24 29 30 66
92 60 61 62 63 63 64 66

Вывод для не четной матрицы:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Порядок квадратной матрицы: 7
[[4, 13, 36, 66, 9, 9, 85], [72, 79, 9, 43, 93, 10, 7], [13, 76, 42, 18, 61, 21, 23], [76, 8, 81, 68, 63, 33, 10], [7, 0, 74, 32, 50, 54, 95], [57, 23, 6, 90, 57, 88, 24], [37, 77, 53, 32, 34, 86, 14]]
****************
 4 13 36 66  9  9 85
72 79  9 43 93 10  7
13 76 42 18 61 21 23
76  8 81 68 63 33 10
 7  0 74 32 50 54 95
57 23  6 90 57 88 24
37 77 53 32 34 86 14
****************
[0, 4, 6, 7, 7, 8, 9, 9, 9, 10, 10, 13, 13, 14, 18, 21, 23, 23, 24, 32, 32, 33, 34, 36, 37, 42, 43, 50, 53, 54, 57, 57, 61, 63, 66, 68, 72, 74, 76, 76, 77, 79, 81, 85, 86, 88, 90, 93, 95]
****************
81 79 77 76 76 74 72
85 32 32 24 23 23 68
86 33  9  8  7 21 66
88 34  9  0  7 18 63
90 36  9  4  6 14 61
93 37 10 10 13 13 57
95 42 43 50 53 54 57
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.04.2021, 13:29
Помогаю со студенческими работами здесь

Вывод матрицы змейкой наружу
Доброго времени суток. Я пытаюсь сделать вывод матрицы змейкой наружу, примерно так: 7 8 9 6 1 2 5 4 3 Но не могу понять, что мне...

Задача "Заполнение змейкой"
По данным числам n и m заполните двумерный массив размером n×m числами от 1 до nm “змейкой”, как показано в примере. Входные данные ...

Заполнение списка змейкой
Напишите программу на языке программирования Python, которая генерирует и выводит на экран двумерный массив 17 01 02 03 04 12 13 14...

Заполнение "змейкой" по вертикали
Просьба сделать программу для заполнения двумерного массива так, как представлено на таблице 1 | 24 | 25 | ... | 120 2 | ... | 26 |...

Заполнение матрицы змейкой
Здравствуйте, нужно заполнить матрицу змейкой(картинка змейки вложена). Матрица NxN (1<=N<=10), заполнить числами от 1 до N^2 - 1 по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru