解密代码以在 Python 中化解炸弹的程序

假设有一颗你要拆除的炸弹,而你的时间已经不多了!你有一个长度为 n 的循环数组代码,并有一个键 k。现在要解密代码,您必须替换每个数字。所有数字同时替换。规则很少 -

  • 如果 k > 0,则用下 k 个数字的总和替换第 i 个数字。

  • 如果 k < 0,则用前 k 个数字的总和替换第 i 个数字。

  • 如果 k = 0,则将第 i 个数字替换为 0。

这里的代码是循环的,所以code[n-1]的下一个元素是code[0],code[0]的前一个元素是code[n-1]。最后我们必须返回解密后的代码。

所以,如果输入类似于 code = [8,2,3,5], k = 3,那么输出将是 [10, 16, 15, 13],因为,对于每个键,我们用接下来的三个元素和,所以 code[0] 将是 10,code[1] 将是 16,code[2] 将是 15,code[3] 将是 13。

示例(Python)

让我们看看以下实现以获得更好的理解 -

def solve(code, k):
   decode = []
   for i in range(len(code)):
      if k > 0:
         sum = 0
         j = i+1
         m = k
         while(m):
            sum+=code[j%len(code)]
            m-=1
            j+=1
         decode.append(sum)

      elif k == 0:
         decode.append(0)

      else:
         sum = 0
         j = i-1
         m = k
         while(m):
            sum+=code[j%len(code)]
            m+=1
            j-=1
         decode.append(sum)

   return decode

code = [8,2,3,5]
k = 3
print(solve(code, k))

输入

[8,2,3,5], 3
输出结果
[10, 16, 15, 13]

猜你喜欢