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

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

17.04.2021, 00:19. Показов 5512. Ответов 7

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, как можно составить программу, составляющую массив n-ого размера из целочисленных случайных чисел, затем отсортировать его змейкой?
Затем надо вывести первую строку матрицы, выводя сначала самые часто повторяемые числа, затем те, что повторяются реже.
Миниатюры
Заполнение матрицы змейкой  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2021, 00:19
Ответы с готовыми решениями:

Заполнение матрицы змейкой
Сделал по заданию препода программу, которая сортирует матрицу змейкой, но она работает лишь при n...

Заполнение массива змейкой
Здравствуйте. Вот решаю задачку по созданию и заполнению массива змейкой. В результате должно...

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

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

7
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
17.04.2021, 00:31 2
Somesolt4shell, тут не так просто всё объяснить, могу посоветовать нарисовать небольшую матрицу на бумаге, написать вместо элементов индексы
и потом посмотреть на последовательность заполнения
будет хорошо видно как это организовать во вложенном цикле
естественно, для начала нужно будет вытащить все элементы из матрицы в общий список, и его отсортировать

Добавлено через 2 минуты
а со строкой вообще всё просто, можно через словарь например посчитать, или импортировать counter
https://docs.python.org/3/libr... ns.Counter
1
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
17.04.2021, 00:42 3
Змейка:

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
"""
Создаем матрицу-змейку
 
#n - размерность матрицы n x n
#b - результирующая матрица
#st - текущее значение-счетчик для записи в матрицу
#m - коеффициент, используемый для заполнения верхней
#матрицы последующих витков, т.к. одномерные матрицы
#следующих витков имеют меньше значений
"""
 
n = int(input("Размерность матрицы: "))
 
b = [[0]*n for i in range(n)]
st, m = 1, 0
# Заранее присваиваю значение центральному элементу
# матрицы
b[n//2][n//2]=n*n
for v in range(n//2):
    #Заполнение верхней горизонтальной матрицы
    for i in range(n-m):
        b[v][i+v] = st
        st+=1
    
    #Заполнение правой вертикальной матрицы    
    for i in range(v+1, n-v):
        b[i][-v-1] = st
        st+=1
        
    #Заполнение нижней горизонтальной матрицы
    for i in range(v+1, n-v):
        b[-v-1][-i-1] =st
        st+=1
        
    #Заполнение левой вертикальной матрицы
    for i in range(v+1, n-(v+1)):
        b[-i-1][v]=st
        st+=1
        
    m+=2
    
b.reverse()
for el in b:
    el.reverse()
    print(el)
0
Модератор
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
17.04.2021, 10:50 4
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
n, m = map(int, input().split())
a = []
w = -1
a2 = []
for i in range(n):
    a1 = []
    for j in range(m):
        w = w + 1
        a1.append(w)
 
    if i % 2 == 1:
        a1.reverse()
        a.append(a1)
    else:
        a.append(a1)
 
for i in a:
    for j in range(m):
        print('{:<3d}'.format(i[j]), end='')
    print()
0
3578 / 2179 / 570
Регистрация: 02.09.2015
Сообщений: 5,508
17.04.2021, 11:51 5
Цитата Сообщение от Somesolt4shell Посмотреть сообщение
Подскажите пожалуйста, как можно составить программу, составляющую массив n-ого размера из целочисленных случайных чисел, затем отсортировать его змейкой?
0) Генерируешь двумерный список (aka матрица) со случайными значениями;
1) "Разворачиваешь" змейку в одномерный список;
2) Сортируешь его (полученный список);
3) "Сворачиваешь" в бараний рогзмейку;
4) Profit!

Добавлено через 1 минуту
Цитата Сообщение от Somesolt4shell Посмотреть сообщение
Затем надо вывести первую строку матрицы, выводя сначала самые часто повторяемые числа, затем те, что повторяются реже.
Ну тут collections.Counter.most_common в помощь.
0
0 / 0 / 0
Регистрация: 12.04.2021
Сообщений: 12
17.04.2021, 14:34  [ТС] 6
Цитата Сообщение от Arsegg Посмотреть сообщение
0) Генерируешь двумерный список (aka матрица) со случайными значениями;
1) "Разворачиваешь" змейку в одномерный список;
2) Сортируешь его (полученный список);
3) "Сворачиваешь" в бараний рогзмейку;
4) Profit!

Добавлено через 1 минуту

Ну тут collections.Counter.most_common в помощь.
Проблема в том, что я не знаю как свернуть все это в рог, сортировку и остальное я уже сделал, а вот со сворачиванием проблемы.
0
3578 / 2179 / 570
Регистрация: 02.09.2015
Сообщений: 5,508
17.04.2021, 15:14 7
Цитата Сообщение от Somesolt4shell Посмотреть сообщение
Проблема в том, что я не знаю как свернуть все это в рог
С модулем turtle не знаком? Пилишь по аналогии черепашку, да сворачиваешь в бараний рог.
0
Эксперт Python
8553 / 4388 / 1846
Регистрация: 27.03.2020
Сообщений: 7,201
17.04.2021, 16:12 8
Лучший ответ Сообщение было отмечено Somesolt4shell как решение

Решение

Somesolt4shell, "свертка в рог" как вариант
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n = 10
# вместо range(1,n*n+1) вставить 
# отсортированный список (его наименование)
w = (i for i in range(1,n*n+1))
b = [[next(w)]]
 
for i in range(2*(n-1)):
    b = list(map(list,zip(*b)))
    b.reverse()
    for h in range(len(b)):
        b[h].append(next(w))
 
b = list(map(list,zip(*b)))
b.reverse()
b = list(map(list,zip(*b)))
for i in b:
        print(*i)
print()
1
17.04.2021, 16:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2021, 16:12
Помогаю со студенческими работами здесь

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

Заполнение списка змейкой
Напишите программу на языке программирования Python, которая генерирует и выводит на экран...

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

Заполнение матрицы змейкой
Дано натуральное N (1&lt;=N&lt;=10). Заполнить матрицу размера N*N целыми числами 0, 1, 2, 3, …, N^2–1 в...

Заполнение матрицы змейкой
Сформировать двумерный массив размера N×N (N-целочисленная константа).Проинициализировать элементы...

Заполнение матрицы змейкой
Дано натуральное N (1&lt;=N&lt;=10). Заполнить матрицу размера N*N целыми числами 0, 1, 2, 3, …, N^2–1 ...

Заполнение матрицы змейкой
Сколько мучался. Никак не могу понять как организовать заполнение массива таким образом. Если кому...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru