Pythonで爆弾を解読するためのコードを復号化するプログラム
あなたが解散しようとしている爆弾があり、あなたの時間がなくなっているとしましょう!長さnの循環配列コードがあり、キー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]になります。これは、キーごとに次の3つの要素の合計に置き換えるためです。 、したがって、code [0]は10になり、code [1]は16になり、code [2]は15になり、code[3]は13になります。
これを解決するために、次の手順に従います&mius;
-
デコード:=新しいリスト
-
0からコードのサイズまでの範囲のiの場合-1、実行
-
k> 0の場合、
-
合計:=0
-
j:=i + 1
-
m:=k
-
mがゼロ以外の場合、実行
-
sum:=sum + code[jmodのコードの長さ]
-
m:=m-1
-
j:=j + 1
-
-
デコードの最後に合計を挿入
-
-
それ以外の場合、kが0と同じ場合、
-
デコードの最後に0を挿入します
-
-
それ以外の場合
-
合計:=0
-
j:=i-1
-
m:=k
-
mがゼロ以外の場合、実行
-
sum:=sum + code[jmodのコードの長さ]
-
m:=m + 1
-
j:=j-1
-
-
デコードの最後に合計を挿入
-
-
-
デコードを返す
例(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プログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 行列が与えられた場合、転置を同じ行列に格納して表示する必要があります。 行列の転置は、行を列に、列を行に変更することで得られます。つまり、A行列の転置はA[i][j]をA[j][i]に変更することで得られます。 以下に示す実装を見てみましょう- 例 N = 4 def transpose(A): for i in range(N): for j in range(i+1, N): &nbs
-
配列の合計を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力として配列が与えられた場合、与えられた配列の合計を計算する必要があります。 ここでは、ブルートフォースアプローチに従うことができます。つまり、リストをトラバースし、各要素を空の合計変数に追加します。最後に、合計の値を表示します。 以下で説明するように、組み込みの合計関数を使用して別のアプローチを実行することもできます。 例 # main arr = [1,2,3,4,5] ans = sum(arr,n) print ('Sum of the array is '