假设我有一个组 G={a,b,e} 其中 a,b 是任意元素,e 表示中性元素。我想出了一个特定的 Cayley 表,并想通过检查关联性来验证我所做的是否正确。
这意味着我想检查 G 中 x(yz)=(xy)z 的任意 x,y,z,因为我必须手动检查 3*3*3 = 27 个案例,这简直是疯了。
到目前为止,我的编码工作并没有走得太远,我很感激一些提示或优雅的方法来解决这个问题。我是 python 的初学者,但对循环和函数有基本的了解。
我对程序的想法:
我定义了一个函数,可以说组,它将字符串作为输入。我通过 .extend(string) 函数将字符串添加到某个列表中,这使我可以一一分析给定的输入。
通过 if 语句让我们说:
if checklist[0] == "a" and checklist[1] == "b":
checklist.pop[0]
checklist[0] = "e"
我可以先删除列表的第一个条目,然后用所需的新值替换它。我确实继续这样添加越来越多的 if 语句,最后递归地再次调用我的函数,如果我的清单的长度等于 1,它将终止。
然而,这不是一个非常优雅的代码,它也会遇到特殊情况的问题。因此,我相信我的努力是徒劳的,我应该相信有一个更简单、更优雅的解决方案来解决这个问题。我希望你能帮助我引导我找到正确的方向。
代码示例(不完整但概念性):
checklist = []
def group(abc):
if len(checklist) == 1:
return checklist
else:
checklist.extend(abc)
if (checklist[0] == "a" and checklist[1] == "a"):
checklist.pop(0)
checklist[0] = "b"
if (checklist[0] == "a" and checklist[1] == "b"):
checklist.pop(0)
checklist[0] = "e"
if (checklist[0] == "a" and checklist[1] == "e"):
checklist.pop(0)
checklist[0] = "a"
if (checklist[0] == "b" and checklist[1] == "a"):
checklist.pop(0)
checklist[0] == "e"
if (checklist[0] == "b" and checklist[1] == "b"):
checklist.pop(0)
checklist[0] = "a"
if (checklist[0] == "b" and checklist[1] == "e"):
checklist.pop(0)
checklist[0] = "b"
if (checklist[0] == "e" and checklist[1] == "a"):
checklist.pop(0)
checklist[0] = "a"
if (checklist[0] == "e" and checklist[1] == "b"):
checklist.pop(0)
checklist[0] = "b"
if (checklist[0] == "e" and checklist[1] == "e"):
checklist.pop(0)
checklist[0] = "e"
group(checklist)
return checklist