ある問題を悩んでも悩んでも解けなかったため、ここで質問させていただくことにしました。問題は以下になります。
入力は標準入力にて以下のフォーマットで与えられます。
a_0 a_1 a_2 ... a_9
s
t
1 行目には、変換対応表が与えられます。暗号化の際、i は a_i に変換されます。復号の時は、a_i は i に変換されます。
2 行目には暗号化すべきであるか復号すべきであるかを表す文字列 s が与えられます。s は "encode" もしくは "decode" です。"encode" の場合は暗号化、"decode" の場合は復号してください。
3 行目には暗号化もしくは復号すべき文字列 t が与えられます。
入力は合計で 3 行となり、入力値最終行の末尾に改行が1つ入ります。
入力例1
入力
8 1 4 7 2 3 9 5 6 0
encode
257
出力
435
入力例2
入力
8 3 7 1 2 5 6 0 9 4
decode
0728
自分なりに解いたものが、下の式になります。
まず私はディクショナリを使うことで、X[x]のように表記した際、勝手に数値が変換されて、代入されるようにしました。
ここで、一つの質問をさせていただきます。
標準入力がされる際、
A = 8 1 2 3 ...
F = 123... となります。(数字はランダム)
Aは一文字空白で入力されるのにも関わらず、Fは空白がありません。
実際にforループを使って各々出力した際は
Aは
8
1
2
3
と入力されますが、
Fは123と入力されてしまいます。
私は、AのようにFも出力させたいのですが、どのようにして、Fを一文字空白をあけさせればいいのかわかりません。大変恐れ入りますが、どなたかご教授願えませんでしょうか?
最後に、下記が私が書いたコードになります。
今回、ディクショナリを用いていますが、これが最善策な気がしません。より案があれば、そちらも教えていただきたいです。
X={0:8,1:1,2:4,3:7,4:2,5:3,6:9,7:5,8:6,9:0}
Y={8:0,1:1,4:2,7:3,2:4,3:5,9:6,5:7,6:8,0:9}
A = [int(i) for i in input().split()]
C = input()
F = [int(i) for i in input().split()]
for i in F:
print(i)
回答1件
あなたの回答
tips
プレビュー