javascript - 如何实际计算奇偶校验是偶数还是奇数?

标签 javascript shuffle

我正在研究 15 block 滑动拼图的实现,我卡在了这一点上,我必须确保我只洗牌到“可解决的排列”——在我的例子中,右下角的空方 block Angular 落:偶数排列。

我读过许多类似的主题,例如 How can I ensure that when I shuffle my puzzle I still end up with an even permutation?并了解我需要“计算排列中反转次数的奇偶性”。

我正在用 Javascript 编写,并使用 Fischer-Yates-algorithm 来随机化我的数字:

var allNrs = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14];
for (var i = allNrs.length - 1; i > 0; i--) {
   var j = Math.floor(Math.random() * (i + 1));
   var temp1 = allNrs[i];
   var temp2 = allNrs[j];
   allNrs[i] = temp2;
   allNrs[j] = temp1;
}

我如何实际计算我在这么多帖子中读到的这个排列或奇偶校验值?

最佳答案

只需计算您进行的交换次数即可。如果交换次数为偶数,则排列具有偶校验。

例如,这些是 3 个数字的偶数排列。请注意,您需要 0 或 2 次交换才能从 [1,2,3] 获得它们:

1,2,3
2,3,1
3,1,2

关于javascript - 如何实际计算奇偶校验是偶数还是奇数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16745282/

相关文章:

php - 从 PHP 数组中高效地挑选 n 个随机元素(无随机播放)

javascript - 属性 'contentWindow' 在 HTMLElement 类型上不存在 - 从一台服务器发送到另一台服务器

javascript - 返回过滤后数组的长度

javascript - Ember 无法读取未定义的属性 'find'

arrays - 如何将 `getBounds' 与 STArray 一起使用?

sorting - 在发送到reducer之前如何控制mapper结果在mapreduce中的排序顺序

javascript - ui-bootstrap(Angular.JS)中选项卡的淡入淡出效果

javascript - 如何在d3中的平行坐标图中为线条着色?

java - 使用数组列表洗牌的输出不显示

arrays - 将不重复的随机数添加到数组中