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