在 mxm 正方形中绘制 n 条对角线的可能方法,使它们彼此不接触

问题描述

我正在尝试编写代码以在 m x m 的正方形中绘制 n 条对角线,使它们不会相互接触。

例如,对于 m=2 和 n=3:

enter image description here

我试图通过生成排列并在继续之前检查解决方案来创建点对列表来解决它。因此,我有 (m+1)*(m+1) 个点可以创建一个 m×m 个正方形的单元格。

protocol-

输出

enter image description here

代码有效,我得到了预期的结果。但是,它非常慢。我正在努力学习提高我的编码技能并更有效地完成它。因此,如果有人审查我的代码并告诉我我可以做得更好以及我犯了哪些错误,我将不胜感激。我看到我有很多循环,这就是速度慢的原因,但我想不出任何其他方法来实现这些循环或避免它们。

解决方法

独特的对角线

唯一对角线的算法图

如果您尝试使用基于此模式的算法,代码可能会有所改进。 我使用 1 作为正对角线,-1 作为负 (slope=-45deg) 对角线。

我对模式的印象是基于起始单元格和相邻单元格将基于此选择。 An algorithmic map of a 3x3 matrix

如果可能,我可能会用一些代码更新这个答案。这有帮助吗?
更多的输入可能会有所帮助。让我知道。