抽象代数中的许多重要主题都涉及对集合起作用的二进制函数。在研究此类主题时,已定义了此类功能的许多属性。
您的挑战将是确定给定域上的给定二进制函数是否拥有这些属性中的五个。
物产
如果每个可能的输出都在域中,则关闭二进制函数。
如果将二进制函数应用于一系列输入的顺序不影响结果,则该二进制函数为关联函数。也就是说,$
如果(a $ b) $ c
始终等于,则是关联的a $ (b $ c)
。请注意,由于该值(a $ b)
用作输入,因此必须关闭关联功能。
如果交换输入的顺序不会更改结果,则二进制函数是可交换的。换句话说,如果a $ b
始终等于b $ a
。
如果e
域中存在某个元素,则二元函数将具有一个identity元素,a $ e = a = e $ a
以便a
该域中的所有元素都具有。
如果将二进制函数应用于两个相同的输入给出该数字作为输出,则该函数是幂等的。换句话说,如果是域中的a $ a = a
所有人a
。
输入值
您将获得矩阵形式的函数,该函数的域为数字0 ... n-1
,其中n
为矩阵的边长。
该值(a $ b)
在矩阵中被编码为第a
t行的b
th元素。如果输入矩阵为Q
,则a $ b
=Q[a][b]
例如,**
域上的幂函数(在Python中)[0, 1, 2]
被编码为:
[[1, 0, 0]
[1, 1, 1]
[1, 2, 4]]
左域和右域是相同的,因此矩阵将始终为正方形。
您可以使用任何方便的矩阵格式作为输入,例如列表列表,以行或列为主要顺序的单个列表,语言的本机矩阵对象等。但是,您可能无法直接将函数用作输入。
为简单起见,矩阵条目均为整数。您可能会认为它们适合您语言的本机整数类型。
输出量
您可以指示上述哪种属性以您选择的任何格式保存,包括布尔值列表,每个属性具有不同字符的字符串等。但是,对于24个可能的子集,必须有不同的唯一输出属性。此输出必须易于理解。
例子
域n = 4上的最大函数:
[[0, 1, 2, 3]
[1, 1, 2, 3]
[2, 2, 2, 3]
[3, 3, 3, 3]]
此函数具有封闭,关联,可交换性,同一性和幂等的特性。
域n = 3上的幂函数:
[[1, 0, 0]
[1, 1, 1]
[1, 2, 4]]
此功能不具有以上属性。
域n = 3上的加法函数:
[[0, 1, 2]
[1, 2, 3]
[2, 3, 4]]
此功能具有可交换性和标识性。
域n = 3上的K组合器:
[[0, 0, 0]
[1, 1, 1]
[2, 2, 2]]
该功能具有封闭性,关联性和幂等性。
域n = 3上的绝对差函数:
[[0, 1, 2]
[1, 0, 1]
[2, 1, 0]]
此功能具有闭包,可交换性和标识性。
域n = 3上的平均函数四舍五入为偶数:
[[0, 0, 1]
[0, 1, 2]
[1, 2, 2]]
该函数具有封闭,可交换性,恒等式和幂等性。
域n = 3上的相等函数:
[[1, 0, 0]
[0, 1, 0]
[0, 0, 1]]
此函数具有闭包和可交换性的属性。
挑战
这是代码高尔夫。有标准漏洞。最少字节获胜。
c=all(l>)
样