Python 解密炸弹代码程序
假设有一个你需要拆除的炸弹,你的时间不多了!你有一个长度为 n 的循环数组代码和一个密钥 k。现在要解密代码,你必须替换每个数字。所有数字都同时替换。有一些规则:
如果 k > 0,则用后 k 个数字的和替换第 i 个数字。
如果 k < 0,则用前 k 个数字的和替换第 i 个数字。
如果 k = 0,则用 0 替换第 i 个数字。
这里代码是循环的,所以 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 的大小 - 1,执行以下操作
如果 k > 0,则
sum := 0
j := i+1
m := k
当 m 不为零时,执行以下操作
sum := sum + code[j 模 code 的长度]
m := m - 1
j := j + 1
在 decode 的末尾插入 sum
否则,当 k 等于 0 时,则
在 decode 的末尾插入 0
否则,
sum := 0
j := i-1
m := k
当 m 不为零时,执行以下操作
sum := sum + code[j 模 code 的长度]
m := m + 1
j := j - 1
在 decode 的末尾插入 sum
返回 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]
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP