有人可以为我解释这个小代码片段吗?

Can someone explain this little code snippet for me?

我正在做一个项目,在这个项目中我引用了一本使用 SageMath 的数学教科书,他们已经给出了这个作为证明。我不精通 SageMath,所以我无法正确理解代码的作用。有人可以给我解释一下吗?

它要证明的定理如下: “为了匈牙利戒指 拼图 38 块拼图的每一种排列都是可能的。也就是说,HR = S38."

sage: S38=SymmetricGroup(38)
sage: L=S38("(1,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2)")
sage: R=S38(" (1,38,37,36,35,6,34,33,32,31,30,29,28,27,26,25,24,23,22,21)")
sage: HR=S38.subgroup([L,R])
sage: HR==SymmetricGroup(38)
True

注解,虽然我不知道这个谜题。也许它在 David Joyner 的 Adventures in Group Theory?

sage: S38=SymmetricGroup(38)

这是一组 38 个对象的所有排列的对称群。我希望拼图中有38个东西。

sage: L=S38("(1,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2)")
sage: R=S38(" (1,38,37,36,35,6,34,33,32,31,30,29,28,27,26,25,24,23,22,21)")

这是 38 个对象的两个非常具体的排列。请注意,并非所有元素都在每个元素中排列。看起来在它们两者之间,它们都在任一方向上移动了一个元素。也许有些物体绕着圆圈转,其他物体也这样做。只有一个元素是共同的。

sage: HR=S38.subgroup([L,R])

这是通过一次又一次地执行这两个操作而生成的排列的子集(因此是子组)...

sage: HR==SymmetricGroup(38)
True

显然,这 38 个元素的每一个排列——在不参考实际拼图的情况下让各种物体四处穿梭,就好像你把它完全拆开一样——实际上只需执行 L 和 [= 这两个动作就可以实现15=] 以某种顺序一次又一次!

这真的很酷。现在我想了解并玩这个拼图。