假设你有一副牌在 JavaScript 数组中,A[1,2,3,4,, n ]
其中、 和. 庄家向玩家询问一个数字,例如 m,然后从牌组中取出,面朝下,一个接一个。并将甲板的其余部分放在上面。A[1] = 1
A[2] = 2
A[n] = n
A[1:m]
切后卡片 A[n] 的位置是什么?
假设你有一副牌在 JavaScript 数组中,A[1,2,3,4,, n ]
其中、 和. 庄家向玩家询问一个数字,例如 m,然后从牌组中取出,面朝下,一个接一个。并将甲板的其余部分放在上面。A[1] = 1
A[2] = 2
A[n] = n
A[1:m]
切后卡片 A[n] 的位置是什么?
好吧,如果m=1
and (m<n) 那么卡片将移动一个位置A[n-1]
,所以如果 m<=nA[n]
是 at A[n-m]
。从 1 个 JavaScript 数组开始的新数组将是A.slice(m).concat(A.slice(1,m-1).reverse()
.
使用 JavaScript:
function cut(A, n, m) {
//Given array starting at 1, taking m off the top putting in reverse order
// return the position where the A[n] now is
if (m <= A.length) {
alert('Cut point is too large for this deck size.');
}
if (m<n) {
return n-m-1;
}
return A.length - n+ 1;
}