在 Python 中编写解密代码以拆除炸弹

在 Python 中编写解密代码以拆除炸弹

假设您要拆除一枚炸弹,而时间正在紧迫!您有一个长度为 n 的循环数组 code 和一个密钥 k。现在要解密代码,必须同时替换每个数字。有几个规则:

  • 如果 k > 0,则将第 i 个数字替换为其后 k 个数字的总和。

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

  • 如果 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。

要解决这个问题,我们将执行以下步骤:

  • decode:一个新的列表

  • 对于 i 在 0 到 code 大小的范围内,进行循环

    • 如果 k > 0,则
      • sum := 0

      • j := i+1

      • m := k

      • 当 m 非零时,执行

      • sum := sum + code[j mod code 长度]

      • m := m – 1

      • j := j + 1

      • 将 sum 插入 decode 的末尾

    • 否则,当 k 与 0 相同时,则

      • 在 decode 的末尾插入 0
    • 否则,
      • sum := 0

      • j := i-1

      • m := k

      • 当 m 非零时,执行

      • sum := sum + code[j mod code 长度]

      • m := m + 1

      • j := j – 1

      • 将 sum 插入 decode 的末尾

  • 返回 decode

示例(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]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程