#python #python-3.x #numpy #associative-array #finite-group-theory
#python #python-3.x #numpy #ассоциативный-массив #теория конечных групп
Вопрос:
Я хочу проверить, не является ли таблица умножения, подобная следующей, кодом, но я не смог найти способ написать ее по-другому
* 0 1 2
0 |0 1 0
1 |0 0 0
2 |0 1 1
Он хранится в виде списка с подсписками в моем коде, например
[[0,1,0], [0,0,0], [0,1,1]]
#How to write a function which checks elements satisfy the condition x*(y*z) = (x*y)*z ?
#This is what I have so far:
def is_associative(X):
n = len(X)
a = []
for i in range(n):
a.append[i]
for j in range(n):
a[j]*a[j] = X[j]
Комментарии:
1. Я не уверен, что понимаю, не
x*(y*z)
всегда равно(x*y)*z
? Разве*
в вашем случае это не умножение?2. @cglacet На основе таблицы,
1 * 0 == 0
, но0 * 1 == 1
.3. Я тоже не уверен, как понимать таблицу, если то, что вы интерпретируете, правильно, то
*
это действительно не умножение, а что-то другое (произвольная функция, я полагаю?).4. Это слишком сложно, вам нужно делать это меньшими шагами. (1) Напишите функцию, которая принимает
x
,y
,z
и возвращаетx*(y*z)
. (2) Напишите другую функцию, которая возвращает(x*y)*z
. (3) Напишите еще одну функцию, которая вычисляет оба произведения путем вызова предыдущих функций, сравнивает значения и возвращает, равны они или нет.
Ответ №1:
Вы должны перебирать все три переменные:
for x in range(n):
for y in range(n):
for z in range(n):
И затем вам нужно проверить, являются ли
X[X[x, y], z] == X[x, X[y, z]]
для всех значений.