在Python中找出球在n次反转之后的位置
假设有n个球。这些球以1、2、3、4……n这样的方式有序排列。现在这些球被反转,或以n、n-1、n-2、……、2、1的方式排序。之后这些球再次被反转为从位置1到n的顺序,或现在的顺序变为n、1、2、…..、n-1。这个反转过程重复n次,每次开始的位置向右移动1个位置。现在我们必须找出在反转之后最初在位置“index”的球的位置。
因此,如果输入的是球 = 5,index = 2,则输出将是4,最初的球是:1、2、3、4、5
接下来是以下操作:
5,4,3,2,1
5,1,2,3,4
5,1,4,3,2
5,1,4,2,3
位置为2的球当前在第4个位置。
解决这个问题,我们将遵循以下步骤-
- 如果索引小于 (球数 / 2) 的下限值,则
- 返回2 *索引+1
- 否则,
- 返回2 *(球 – 索引 – 1)
范例
让我们看下面的实施以更好地理解。
def solve(balls, index):
if index < balls // 2:
return 2 * index + 1
else:
return 2 * (balls - index - 1)
print(solve(5, 2))
输入
5, 2
输出
4