我有兴趣实现14-15 谜题:
我正在创建一个值为 0 - 15 的数组,按递增顺序排列:
S = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }
现在,我想做的是随机播放它们以创建拼图的新实例。但是,我知道如果我创建一个具有“奇数排列”的棋盘,那么它是无法解决的。
维基百科说我需要用一个均匀的排列来创造这个谜题。我相信这意味着我只需要确保我进行偶数交换?
我将如何修改 Fisher-Yates,以确保最终得到一个均匀排列?如果我对数组中的每个元素进行交换,那将是 16 次交换,我相信这将是一个偶数排列。但是,我是否需要担心与自身交换?有没有其他方法可以确保我有一个有效的谜题?