プロジェクトの場合、キーワードと文字列を入力し、プログラムがそれをエンコードするプログラムを作成する必要があります。例えば
文字列:しかし、私は考えていませんでした。キーワード:ワンダーランド
プログラムは「ワンダーランド」をアルファベットの位置に分割します。
WONDERLAND = 23,15,14,4,5,18,12,1,14,4
次に、位置1の文字を位置23の文字と交換し、位置2の文字を位置15の文字と交換します。
「しかし、私は思っていませんでした」は「'nun。ithdtBiItdk」として出てくるでしょう
文字列を正常にエンコードできましたが、デコードできませんでした。これが私のコードです:
def encode(keyword,t):
key = []
text = []
for i in range(len(t)):
text.append(t[i])
for i in range(len(keyword)):
key.append(ord(keyword[i].lower()) - 96)
keynum = 0
actnum = 0
for i in range(len(text)):
print str(i) + " " + str(text)
if keynum > len(keyword) - 1:
keynum = 0
actnum = key[keynum]
while (actnum + i) > len(text) - 1:
actnum = actnum - len(text)
temp = text[i]
text[i] = text[i+actnum]
text[i+actnum] = temp
keynum += 1
merged = ""
for i in range(len(text)):
merged += text[i]
return merged
def decode(keyword,t):
key = []
text = []
for i in range(len(t)):
text.append(t[i])
for i in range(len(keyword)):
key.append(ord(keyword[i].lower()) - 96)
keynum = 0
actnum = 0
total = len(keyword)
for i in reversed(range(len(text))):
print str(i) + " " + str(text)
keynum = total
while keynum > len(keyword) - 1:
keynum -= len(keyword)
keynum += 1
if keynum < 0:
keynum = len(keyword) - 1
actnum = key[keynum]
while (actnum + i) > len(text) - 1:
actnum = actnum - len(text)
temp = text[i]
text[i] = text[i+actnum]
text[i+actnum] = temp
total -= 1
merged = ""
for i in range(len(text)):
merged += text[i]
return merged
x = encode("wonderland","But I didn't think.")
print decode("wonderland",x)
編集:プログラムは、指定された文字が存在しない場合、本来あるべき文字を取得し、文字列の中に入るまで文字列の長さを差し引くように設定されています。
編集:基本的に、「エンコード」機能を逆にするのを手伝っていただければ、それは素晴らしいことです。