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

Число матриц с неповторяющимися элементами по вертикали и горизонтали

04.08.2024, 07:33. Показов 866. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, приветствую! Прошу помощи. Пытаюсь набрать код, который выведет число матриц с неповторяющимися элементами по вертикали и горизонтали, мой код выдает 0 решений, но это неправильно, не пойму в чем ошибка, спасибо.
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
a = [int(11),int(12),int(21),int(22)]
b = []
c = []
q = []
l = []
cnt = 0
cnt1 = 0
 
print(a)
for x in range(0,4):
    for y in range(0,4):
        for z in range(0,4):
            for o in range(0,4):
                if x!=o and x!=z and x!=y and y!=z and y!=o and z!=o:    
                    b.append(a[z])
                    b.append(a[y])
                    b.append(a[x])
                    b.append(a[o])
                    print(b)
                    c.append(b)
                    cnt+=1
                    print(cnt)
                    b=[]
print(c)
for v in range(24):
    for b in range(24):
        for n in range(24):
            for m in range(24):
                if v!=b and v!=n and v!=m and b!=n and b!=m and n!=m:
                    q.append(c[m])
                    q.append(c[n])
                    q.append(c[b])
                    q.append(c[v])
                    print(q)
                    if (q[0][0]!=q[1][0] and q[0][0]!=q[2][0] and q[0][0]!=q[3][0] and q[1][0]!=q[2][0] and q[1][0]!=q[3][0] and q[2][0]!=q[3][0]):
                        if (q[0][1]!=q[1][1] and q[0][1]!=q[2][1] and q[0][1]!=q[3][1] and q[1][1]!=q[2][1] and q[1][1]!=q[3][1] and q[2][1]!=q[3][1]):
                            if (q[0][2]!=q[1][2] and q[0][2]!=q[2][2] and q[0][2]!=q[3][2] and q[1][2]!=q[2][2] and q[1][2]!=q[3][2] and q[2][2]!=q[3][2]):
                                if (q[0][3]!=q[1][3] and q[0][3]!=q[2][3] and q[0][3]!=q[3][3] and q[1][3]!=q[2][3] and q[1][3]!=q[3][3] and q[2][3]!=q[3][3]):
                                    cnt1+=1
                                    q = []
print(cnt1)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2024, 07:33
Ответы с готовыми решениями:

Заполнить таблицу элементами так, чтобы они не повторялись по диагонали, горизонтали и вертикали
2 задача во вложениях, можете подсказать алгоритм или метод как это сделать? Пытался сам разобратся но в итоге запутался ещё сильнее.

Найдите максимальное число, из идущих подряд цифр по горизонтали, и по вертикали
Добрый день, помогите написать программу: найдите максимальное число, в нескольких строках c учетом того, что числом считаются подряд...

ScrollViewer по вертикали и горизонтали
Странно, смотрел примеры, но у меня не выходит, мне нужно чтобы были полосы прокрутки внизу и справа, но я знаю что фото явно больше,...

7
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
04.08.2024, 08:58
Цитата Сообщение от Argentum Candy Посмотреть сообщение
матриц с неповторяющимися элементами по вертикали и горизонтали
- поясни более точно, что это означает. А лучше - приведи матрицу, которая удовлетворяет этому условию.
0
0 / 0 / 0
Регистрация: 11.07.2021
Сообщений: 3
04.08.2024, 09:15  [ТС]
11 12 21 22
22 11 12 21
21 22 11 12
12 21 22 11
Добрый день! Выше одно из возможных решений.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
04.08.2024, 09:35
Цитата Сообщение от Argentum Candy Посмотреть сообщение
int(11),int(12),int(21),int(22)
Зачем число приводить к числу? Чтоб более числовее стало?

Добавлено через 5 минут
Python
1
2
3
4
5
6
7
8
import exrex
 
lst = list(map(int, exrex.generate(r'[12][12]')))
# lst = [11, 12, 21, 22]
 
m = [lst[i:] + lst[:i] for i in range(len(lst))]
for i in m:
    print(i)
Code
1
2
3
4
[11, 12, 21, 22]
[12, 21, 22, 11]
[21, 22, 11, 12]
[22, 11, 12, 21]
3
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38195 / 21128 / 4309
Регистрация: 12.02.2012
Сообщений: 34,736
Записей в блоге: 14
04.08.2024, 12:44
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def check_matr(matr):
    n=len(matr)
    tmp=[]
    for row in matr:
        if row in tmp:
            return False
        tmp.append(row)
    print(tmp)    
    rmatr=list(map(lambda *x : list(x) ,*matr))    
    for row in rmatr:
        if row in tmp:
            return False
        tmp.append(row)
    return True
    
m=[[11, 12, 21, 22],
   [22, 11, 12, 21],
   [21, 22, 11, 12],
   [12, 21, 22, 11]]  
   
print(check_matr(m))
3
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
04.08.2024, 14:25
Argentum Candy, если у вас все элементы различны,то такие матрицы называются латинскими квадратами.
https://ru.m.wikipedia.org/wik... 0%B0%D1%82
Там же и указано число таких квадратов для разных n.
1
4 / 4 / 0
Регистрация: 06.08.2024
Сообщений: 5
06.08.2024, 10:22
Может, поможет рекурсия:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def generate_matrices(n, k, current_matrix=[], used_numbers=[], matrices=[]):
    if len(current_matrix) == n:
        matrices.append(current_matrix)
        return
 
    for i in range(k):
        if i not in used_numbers:
            new_matrix = current_matrix.copy()
            new_matrix.append(i)
            used_numbers.append(i)
            generate_matrices(n, k, new_matrix, used_numbers, matrices)
            used_numbers.pop()
 
def count_unique_matrices(n, k):
    matrices = []
    generate_matrices(n, k, [], [], matrices)
    return len(matrices)
 
n = int(input())
k = int(input())
 
print(count_unique_matrices(n, k))
Добавлено через 30 секунд
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def generate_matrices(n, k, current_matrix=[], used_numbers=[], matrices=[]):
    if len(current_matrix) == n:
        matrices.append(current_matrix)
        return
 
    for i in range(k):
        if i not in used_numbers:
            new_matrix = current_matrix.copy()
            new_matrix.append(i)
            used_numbers.append(i)
            generate_matrices(n, k, new_matrix, used_numbers, matrices)
            used_numbers.pop()
 
def count_unique_matrices(n, k):
    matrices = []
    generate_matrices(n, k, [], [], matrices)
    return len(matrices)
 
n = int(input())
k = int(input())
 
print(count_unique_matrices(n, k))
2
0 / 0 / 0
Регистрация: 11.07.2021
Сообщений: 3
13.08.2024, 20:13  [ТС]
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
a = [int(11),int(12),int(21),int(22)]
b = []
c = []
q = []
l = []
cnt = 0
cnt1 = 0
cntv = 0
 
print(a)
for x in range(0,4):
    for y in range(0,4):
        for z in range(0,4):
            for o in range(0,4):
                if x!=o and x!=z and x!=y and y!=z and y!=o and z!=o:    
                    b.append(a[z])
                    b.append(a[y])
                    b.append(a[x])
                    b.append(a[o])
                    print(b)
                    c.append(b.copy())
                    cnt+=1
                    print(cnt)
                    b=[]
print(c)
for v in range(24):
    for i in range(24):
        for n in range(24):
            for m in range(24):
                if v!=i and v!=n and v!=m and i!=n and i!=m and n!=m:
                    q.append(c[m])
                    q.append(c[n])
                    q.append(c[i])
                    q.append(c[v])
                    cntv += 1
                    if (q[0][0] != q[1][0] and q[0][0] != q[2][0] and q[0][0] != q[3][0] and q[1][0] != q[2][0] and q[1][0] != q[3][0] and q[2][0] != q[3][0]):
                        if (q[0][1] != q[1][1] and q[0][1] != q[2][1] and q[0][1] != q[3][1] and q[1][1] != q[2][1] and q[1][1] != q[3][1] and q[2][1] != q[3][1]):
                            if (q[0][2] != q[1][2] and q[0][2] !=q [2][2] and q[0][2] !=q [3][2] and q[1][2] != q[2][2] and q[1][2] != q[3][2] and q[2][2] !=q [3][2]):
                                if (q[0][3] != q[1][3] and q[0][3] != q[2][3] and q[0][3] != q[3][3] and q[1][3] != q[2][3] and q[1][3] != q[3][3] and q[2][3] != q[3][3]):
                                    cnt1+=1
                    q = []
print(cnt1)
print(cntv)
был неправильно поставлен один отступ, теперь решений как в википедии,спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.08.2024, 20:13
Помогаю со студенческими работами здесь

Выравнивание блоков по вертикали и горизонтали
Здравствуйте! Встретился с такой проблемой. Есть блок родитель. Внутри этого блока есть один блок с текстом, а другой блок с чем угодно, но...

Текст в блоке по вертикали и горизонтали
Уже битый час сижу гуглю, но так и не смог найти ничего путного.. Нужно просто отцентровать текст внутри блока по вертикали и горизонтали....

Прокручиваемый по горизонтали/вертикали диалог
Как создать прокручиваемый по горизонтали и по вертикали диалог (базовый класс CDialog)? Не могли бы Вы показать образец кода или дать...

Прокрутка по горизонтали и по вертикали одновременно
Поддерживает ли Android прокрутку по вертикали и по горизонтали одновременно? Если да, то как это сделать? В ScrollView можно только одну...

Слова по вертикали или горизонтали
Определить функцию, вычисляющую количество вхождений слова по вертикали и горизонтали. Например, слово: "bc", файл test.txt: ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru